]> git.argeo.org Git - gpl/argeo-suite.git/blob - publish/PublishingApp.java
Prepare next development cycle
[gpl/argeo-suite.git] / publish / PublishingApp.java
1 package org.argeo.app.ui.publish;
2
3 import static org.argeo.app.ui.SuiteApp.DEFAULT_THEME_ID_PROPERTY;
4 import static org.argeo.app.ui.SuiteApp.DEFAULT_UI_NAME_PROPERTY;
5
6 import java.util.HashSet;
7 import java.util.Map;
8 import java.util.Set;
9
10 import javax.jcr.Node;
11 import javax.jcr.Repository;
12 import javax.jcr.Session;
13
14 import org.argeo.api.cms.CmsApp;
15 import org.argeo.api.cms.CmsLog;
16 import org.argeo.api.cms.ux.CmsUi;
17 import org.argeo.app.ui.SuiteApp;
18 import org.argeo.cms.AbstractCmsApp;
19 import org.argeo.cms.ui.CmsUiProvider;
20 import org.argeo.cms.util.LangUtils;
21 import org.argeo.jcr.Jcr;
22 import org.eclipse.swt.layout.GridLayout;
23 import org.eclipse.swt.widgets.Composite;
24 import org.eclipse.swt.widgets.Control;
25 import org.osgi.framework.Constants;
26
27 /**
28 * A {@link CmsApp} dedicated to publishing, typically a public or internal web
29 * site.
30 */
31 public class PublishingApp extends AbstractCmsApp {
32 private final static CmsLog log = CmsLog.getLog(PublishingApp.class);
33
34 private String pid;
35 private String defaultThemeId;
36 private String defaultUiName = "";
37
38 private String publicBasePath = null;
39
40 private CmsUiProvider landingPage;
41 private CmsUiProvider defaultProvider = new DocumentUiProvider();
42
43 private Repository repository;
44
45 public void init(Map<String, String> properties) {
46 if (properties.containsKey(DEFAULT_UI_NAME_PROPERTY))
47 defaultUiName = LangUtils.get(properties, DEFAULT_UI_NAME_PROPERTY);
48 if (properties.containsKey(DEFAULT_THEME_ID_PROPERTY))
49 defaultThemeId = LangUtils.get(properties, DEFAULT_THEME_ID_PROPERTY);
50 publicBasePath = LangUtils.get(properties, SuiteApp.PUBLIC_BASE_PATH_PROPERTY);
51 pid = properties.get(Constants.SERVICE_PID);
52
53 if (log.isDebugEnabled())
54 log.info("Publishing App " + pid + " started");
55 }
56
57 public void destroy(Map<String, String> properties) {
58 if (log.isDebugEnabled())
59 log.info("Publishing App " + pid + " stopped");
60
61 }
62
63 @Override
64 public Set<String> getUiNames() {
65 Set<String> uiNames = new HashSet<>();
66 uiNames.add(defaultUiName);
67 return uiNames;
68 }
69
70 @Override
71 public CmsUi initUi(Object uiParent) {
72 Composite parent = (Composite) uiParent;
73 // Session adminSession = NodeUtils.openDataAdminSession(getRepository(), null);
74 Session session = Jcr.login(getRepository(), null);
75 parent.setLayout(new GridLayout());
76 Node indexNode = Jcr.getNode(session, publicBasePath + "/index");
77 // try {
78 // indexNode = JcrUtils.getOrAdd(Jcr.getRootNode(adminSession), DocumentPage.WWW, DbkType.article.get());
79 // adminSession.save();
80 // } catch (RepositoryException e) {
81 // throw new IllegalStateException(e);
82 // }
83
84 Control page;
85 if (landingPage != null) {
86 page = landingPage.createUiPart(parent, indexNode);
87 } else {
88 page = defaultProvider.createUiPart(parent, indexNode);
89 }
90 return (CmsUi) page;
91 }
92
93 @Override
94 public void refreshUi(CmsUi cmsUi, String state) {
95 Composite parent = (Composite) cmsUi;
96 parent.setLayout(new GridLayout());
97 if (landingPage != null)
98 landingPage.createUiPart(parent, (Node) null);
99 else
100 defaultProvider.createUiPart(parent, (Node) null);
101 }
102
103 @Override
104 public void setState(CmsUi cmsUi, String state) {
105
106 }
107
108 @Override
109 protected String getThemeId(String uiName) {
110 return defaultThemeId;
111 }
112
113 public void setLandingPage(CmsUiProvider landingPage) {
114 this.landingPage = landingPage;
115 }
116
117 public Repository getRepository() {
118 return repository;
119 }
120
121 public void setRepository(Repository repository) {
122 this.repository = repository;
123 }
124
125 }