1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exoplatform.services.ecm.publication.impl;
18
19 import java.util.HashMap;
20 import java.util.Map;
21
22 import javax.jcr.Node;
23
24 import org.exoplatform.services.ecm.publication.NotInPublicationLifecycleException;
25 import org.exoplatform.services.ecm.publication.PublicationPlugin;
26 import org.exoplatform.services.ecm.publication.PublicationPresentationService;
27 import org.exoplatform.services.ecm.publication.PublicationService;
28 import org.exoplatform.services.log.ExoLogger;
29 import org.exoplatform.services.log.Log;
30 import org.exoplatform.services.wcm.utils.WCMCoreUtils;
31 import org.exoplatform.webui.core.UIComponent;
32 import org.exoplatform.webui.form.UIForm;
33
34
35
36
37
38
39
40 public class PublicationPresentationServiceImpl implements PublicationPresentationService {
41
42 private static final Log LOG = ExoLogger.getLogger(PublicationPresentationServiceImpl.class.getName());
43 private Map<String, PublicationPlugin> publicationPlugins_ = new HashMap<String,PublicationPlugin>();
44
45 public PublicationPresentationServiceImpl () {
46 if (LOG.isInfoEnabled()) {
47 LOG.info("# PublicationPresentationService initialization #");
48 }
49 this.publicationPlugins_ = new HashMap<String, PublicationPlugin>();
50 }
51
52
53
54
55 public UIForm getStateUI(Node node, UIComponent component) throws NotInPublicationLifecycleException, Exception {
56 PublicationService publicationService = WCMCoreUtils.getService(PublicationService.class);
57
58 if (!publicationService.isNodeEnrolledInLifecycle(node)) {
59 throw new NotInPublicationLifecycleException();
60 }
61 String lifecycleName=publicationService.getNodeLifecycleName(node);
62 PublicationPlugin nodePlugin = this.publicationPlugins_.get(lifecycleName);
63 return nodePlugin.getStateUI(node,component);
64 }
65
66
67
68
69
70
71
72 public void addPublicationPlugin(PublicationPlugin p) {
73 this.publicationPlugins_.put(p.getLifecycleName(),p);
74 }
75 }