First part of the refactoring: clean backends.
authorbsinou <bsinou@argeo.org>
Fri, 17 Feb 2017 13:41:17 +0000 (14:41 +0100)
committerbsinou <bsinou@argeo.org>
Fri, 17 Feb 2017 13:41:17 +0000 (14:41 +0100)
org.argeo.suite.core/META-INF/spring/application.xml
org.argeo.suite.core/bnd.bnd
org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java [new file with mode: 0644]
org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java
org.argeo.suite.web/META-INF/spring/people.xml
org.argeo.suite.web/src/org/argeo/suite/web/DefaultDashboard.java
org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java
org.argeo.suite.workbench.rap/bnd.bnd
org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java
org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java

index 460fc8542feed42f42e3c237ad21a21710604816..d3af8146319dc207793de24c2d014e923eb1cb8c 100644 (file)
@@ -13,7 +13,7 @@
                <property name="userAdminService" ref="userAdminService" />
        </bean>
 
-       <bean id="userAdminService" class="org.argeo.connect.people.core.UserAdminServiceImpl"
+       <bean id="userAdminService" class="org.argeo.connect.UserAdminServiceImpl"
                scope="singleton" lazy-init="false">
                <property name="userTransaction" ref="userTransaction" />
                <property name="userAdmin" ref="userAdmin" />
index d316eb5fc0f8fb470438164f174c0ada5dd5c44f..d1349a9f837b56f3fb6548676477150017726ea4 100644 (file)
@@ -2,6 +2,7 @@ Require-Capability: cms.datamodel; filter:="(name=people)",\
 cms.datamodel; filter:="(name=documents)"
 Import-Package:\
 javax.jcr.nodetype,\
+org.argeo.connect.resources,\
 org.argeo.node,\
 org.argeo.util,\
 javax.jcr.security,\
diff --git a/org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java b/org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java
new file mode 100644 (file)
index 0000000..ef1ade0
--- /dev/null
@@ -0,0 +1,115 @@
+package org.argeo.suite;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.nodetype.NodeType;
+import javax.jcr.security.Privilege;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.connect.AppMaintenanceService;
+import org.argeo.connect.resources.ResourceService;
+import org.argeo.jcr.JcrUtils;
+import org.argeo.node.NodeConstants;
+
+/** Make the DJay-ing to provide a full running Suite platform */
+public class SuiteMaintenanceService implements AppMaintenanceService {
+       private final static Log log = LogFactory.getLog(SuiteMaintenanceService.class);
+
+       /* DEPENDENCY INJECTION */
+       private Repository repository;
+       private String workspaceName;
+       private ResourceService resourceService;
+       private List<AppMaintenanceService> maintenanceServices;
+       private Map<String, URI> initResources = null;
+       private Map<String, URI> legacyResources = null;
+
+       public void init() {
+               Session adminSession = null;
+               try {
+                       adminSession = repository.login(workspaceName);
+                       if (prepareJcrTree(adminSession)) {
+                               configurePrivileges(adminSession);
+                               importResources(adminSession, null);
+                       }
+               } catch (Exception e) {
+                       throw new SuiteException("Cannot initialise model", e);
+               } finally {
+                       JcrUtils.logoutQuietly(adminSession);
+               }
+       }
+
+       // TODO Hard-coded model initialisation
+       // To be cleaned once first init and config mechanisms have been implemented
+       private final static String publicPath = "/public";
+       // FIXME Users must have read access on the jcr:system/jcr:versionStorage
+       // node under JackRabbit to be able to manage versions
+       private final static String jackRabbitVersionSystemPath = "/jcr:system";
+
+       @Override
+       public boolean prepareJcrTree(Session session) {
+               boolean hasCHanged = false;
+               try {
+                       JcrUtils.mkdirs(session, publicPath, NodeType.NT_UNSTRUCTURED);
+                       if (session.hasPendingChanges()) {
+                               session.save();
+                               hasCHanged = true;
+                       }
+               } catch (RepositoryException e) {
+                       throw new SuiteException("Cannot build model", e);
+               }
+               for (AppMaintenanceService service : maintenanceServices)
+                       hasCHanged |= service.prepareJcrTree(session);
+               log.info("Repository has been initialised with Argeo Suite model");
+               return hasCHanged;
+       }
+
+       @Override
+       public void configurePrivileges(Session session) {
+               // TODO check if first init.
+               try {
+                       JcrUtils.addPrivilege(session, jackRabbitVersionSystemPath, ArgeoSuiteRole.coworker.dn(),
+                                       Privilege.JCR_READ);
+                       // Default configuration of the workspace
+                       JcrUtils.addPrivilege(session, "/", NodeConstants.ROLE_ADMIN, Privilege.JCR_ALL);
+                       JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_USER, Privilege.JCR_READ);
+                       JcrUtils.addPrivilege(session, publicPath, "anonymous", Privilege.JCR_READ);
+                       JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_ANONYMOUS, Privilege.JCR_READ);
+                       session.save();
+               } catch (RepositoryException e) {
+                       throw new SuiteException("Cannot build model", e);
+               }
+               for (AppMaintenanceService service : maintenanceServices)
+                       service.configurePrivileges(session);
+               log.info("Access control configured");
+       }
+
+       @Override
+       public void importResources(Session session, Map<String, URI> initialResources) {
+               for (AppMaintenanceService service : maintenanceServices)
+                       service.prepareJcrTree(session);
+       }
+
+       @Override
+       public void importData(Session session, URI uri, Map<String, URI> resources) {
+               for (AppMaintenanceService service : maintenanceServices)
+                       service.prepareJcrTree(session);
+
+       }
+
+       @Override
+       public void doBackup(Session session, URI uri, Object resource) {
+               for (AppMaintenanceService service : maintenanceServices)
+                       service.prepareJcrTree(session);
+       }
+
+       /* DEPENDENCY INJECTION */
+       public void setMaintenanceServices(List<AppMaintenanceService> maintenanceServices) {
+               this.maintenanceServices = maintenanceServices;
+       }
+}
index 19067bdeccb049505a5e4af87b9d8baf1218ae00..d512bfb22403f6ae40df05783f496452de25ec29 100644 (file)
@@ -1,7 +1,6 @@
 package org.argeo.suite.people;
 
-import java.io.IOException;
-import java.util.ArrayList;
+import java.net.URI;
 import java.util.Map;
 
 import javax.jcr.Repository;
@@ -13,18 +12,13 @@ import javax.jcr.security.Privilege;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.connect.people.PeopleConstants;
-import org.argeo.connect.people.PeopleNames;
 import org.argeo.connect.people.PeopleService;
-import org.argeo.connect.people.PeopleTypes;
-import org.argeo.connect.people.ResourceService;
 import org.argeo.connect.people.core.PeopleServiceImpl;
-import org.argeo.connect.people.core.imports.EncodedTagCsvFileParser;
-import org.argeo.connect.util.ConnectJcrUtils;
+import org.argeo.connect.resources.ResourceService;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.node.NodeConstants;
 import org.argeo.suite.ArgeoSuiteRole;
 import org.argeo.suite.SuiteException;
-import org.springframework.core.io.Resource;
 
 /**
  * Default implementation of an Argeo Suite specific People Backend
@@ -37,7 +31,9 @@ public class PeopleSuiteServiceImpl extends PeopleServiceImpl implements PeopleS
        /* DEPENDENCY INJECTION */
        private Repository repository;
        private String workspaceName;
-       private Map<String, Resource> initResources = null;
+       private ResourceService resourceService;
+       private Map<String, URI> initResources = null;
+       private Map<String, URI> legacyResources = null;
 
        public void init() {
                super.init();
@@ -93,54 +89,70 @@ public class PeopleSuiteServiceImpl extends PeopleServiceImpl implements PeopleS
         * Initialises People resource model and optionally imports legacy resources
         */
        protected void initModelResources(Session adminSession) {
-               try {
-                       // initialisation
-                       ResourceService resourceService = getResourceService();
-                       resourceService.initialiseResources(adminSession);
-
-                       Resource resource = initResources.get("Countries");
-                       if (resourceService.getTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_COUNTRY) == null
-                                       && resource != null) {
-                               resourceService.createTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_COUNTRY,
-                                               PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE, getBasePath(null),
-                                               ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new ArrayList<String>());
-                               String EN_SHORT_NAME = "English short name (upper-lower case)";
-                               String ISO_CODE = "Alpha-2 code";
-                               new EncodedTagCsvFileParser(resourceService, adminSession, PeopleConstants.RESOURCE_COUNTRY, ISO_CODE,
-                                               EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8");
-                       }
-
-                       resource = initResources.get("Languages");
-                       if (resourceService.getTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_LANG) == null
-                                       && resource != null) {
-                               resourceService.createTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_LANG,
-                                               PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE, getBasePath(null),
-                                               ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new ArrayList<String>());
-                               String EN_SHORT_NAME = "Language name";
-                               String ISO_CODE = "639-1";
-                               new EncodedTagCsvFileParser(resourceService, adminSession, PeopleConstants.RESOURCE_LANG, ISO_CODE,
-                                               EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8");
-                       }
-
-                       // Create tag & mailing list parents
-                       if (resourceService.getTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_TAG) == null)
-                               resourceService.createTagLikeResourceParent(adminSession, PeopleConstants.RESOURCE_TAG,
-                                               PeopleTypes.PEOPLE_TAG_INSTANCE, null, getBasePath(null), PeopleTypes.PEOPLE_ENTITY,
-                                               PeopleNames.PEOPLE_TAGS);
-                       if (resourceService.getTagLikeResourceParent(adminSession, PeopleTypes.PEOPLE_MAILING_LIST) == null)
-                               resourceService.createTagLikeResourceParent(adminSession, null, PeopleTypes.PEOPLE_MAILING_LIST, null,
-                                               getBasePath(null), PeopleTypes.PEOPLE_ENTITY, PeopleNames.PEOPLE_MAILING_LISTS);
-
-                       // Initialise catalogues
-                       importCatalogue(adminSession, initResources.get("SimpleTasks"), PeopleTypes.PEOPLE_TASK);
-
-                       if (adminSession.hasPendingChanges()) {
-                               adminSession.save();
-                               log.info("Resources have been added to Argeo Suite model");
-                       }
-               } catch (IOException | RepositoryException e) {
-                       throw new SuiteException("Cannot initialise resources ", e);
-               }
+               // try {
+               // // initialisation
+               // resourceService.initialiseResources(adminSession);
+               //
+               // Resource resource = initResources.get("Countries");
+               // if (resourceService.getTagLikeResourceParent(adminSession,
+               // PeopleConstants.RESOURCE_COUNTRY) == null
+               // && resource != null) {
+               // resourceService.createTagLikeResourceParent(adminSession,
+               // PeopleConstants.RESOURCE_COUNTRY,
+               // PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE,
+               // getBasePath(null),
+               // ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new
+               // ArrayList<String>());
+               // String EN_SHORT_NAME = "English short name (upper-lower case)";
+               // String ISO_CODE = "Alpha-2 code";
+               // new EncodedTagCsvFileParser(resourceService, adminSession,
+               // PeopleConstants.RESOURCE_COUNTRY, ISO_CODE,
+               // EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8");
+               // }
+               //
+               // resource = initResources.get("Languages");
+               // if (resourceService.getTagLikeResourceParent(adminSession,
+               // PeopleConstants.RESOURCE_LANG) == null
+               // && resource != null) {
+               // resourceService.createTagLikeResourceParent(adminSession,
+               // PeopleConstants.RESOURCE_LANG,
+               // PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE,
+               // getBasePath(null),
+               // ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new
+               // ArrayList<String>());
+               // String EN_SHORT_NAME = "Language name";
+               // String ISO_CODE = "639-1";
+               // new EncodedTagCsvFileParser(resourceService, adminSession,
+               // PeopleConstants.RESOURCE_LANG, ISO_CODE,
+               // EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8");
+               // }
+               //
+               // // Create tag & mailing list parents
+               // if (resourceService.getTagLikeResourceParent(adminSession,
+               // PeopleConstants.RESOURCE_TAG) == null)
+               // resourceService.createTagLikeResourceParent(adminSession,
+               // PeopleConstants.RESOURCE_TAG,
+               // PeopleTypes.PEOPLE_TAG_INSTANCE, null, getBasePath(null),
+               // PeopleTypes.PEOPLE_ENTITY,
+               // PeopleNames.PEOPLE_TAGS);
+               // if (resourceService.getTagLikeResourceParent(adminSession,
+               // PeopleTypes.PEOPLE_MAILING_LIST) == null)
+               // resourceService.createTagLikeResourceParent(adminSession, null,
+               // PeopleTypes.PEOPLE_MAILING_LIST, null,
+               // getBasePath(null), PeopleTypes.PEOPLE_ENTITY,
+               // PeopleNames.PEOPLE_MAILING_LISTS);
+               //
+               // // Initialise catalogues
+               // importCatalogue(adminSession, initResources.get("SimpleTasks"),
+               // PeopleTypes.PEOPLE_TASK);
+               //
+               // if (adminSession.hasPendingChanges()) {
+               // adminSession.save();
+               // log.info("Resources have been added to Argeo Suite model");
+               // }
+               // } catch (IOException | RepositoryException e) {
+               // throw new SuiteException("Cannot initialise resources ", e);
+               // }
        }
 
        /** Give access to the repository to extending classes */
@@ -161,7 +173,7 @@ public class PeopleSuiteServiceImpl extends PeopleServiceImpl implements PeopleS
                this.workspaceName = workspaceName;
        }
 
-       public void setInitResources(Map<String, Resource> initResources) {
+       public void setInitResources(Map<String, URI> initResources) {
                this.initResources = initResources;
        }
 }
index 0c5a29f120ecf2b4d6a097030c2e00c1b740a9fb..036fe601f6bd74143733299cadc5a82e48c85544 100644 (file)
@@ -9,6 +9,7 @@
        <bean id="people.mainPage" class="org.argeo.connect.people.web.pages.PeopleDynamicPages">
                <property name="dynamicPages" ref="people.dynamicPages" />
                <property name="peopleService" ref="peopleService" />
+               <property name="resourceService" ref="resourceService" />
                <property name="iconPathes" ref="peopleEntityIcons" />
        </bean>
 
                                <bean p:image="theme/argeo-classic/img/byArgeo.png" p:target="/people#"
                                        p:custom="cms_header-logo" parent="menuLink" />
                                <bean p:label="All" p:target="people!/search/all" parent="menuLink" />
-                               <bean p:label="Persons" p:target="people!/search/persons" parent="menuLink" />
-                               <bean p:label="Organisations" p:target="people!/search/orgs" parent="menuLink" />
+                               <bean p:label="Persons" p:target="people!/search/persons"
+                                       parent="menuLink" />
+                               <bean p:label="Organisations" p:target="people!/search/orgs"
+                                       parent="menuLink" />
                                <bean p:label="Browse" p:target="browse#" parent="menuLink" />
                        </list>
                </property>
                        </key>
                        <bean class="org.argeo.connect.people.web.pages.TagLikeInstancePage">
                                <property name="peopleService" ref="peopleService" />
+                               <property name="resourceService" ref="resourceService" />
+
                                <property name="iconPathes" ref="peopleEntityIcons" />
                                <property name="propertyName" value="people:tags" />
                        </bean>
                </entry>
                <entry>
                        <key>
-                               <util:constant static-field="org.argeo.connect.people.PeopleTypes.PEOPLE_MAILING_LIST" />
+                               <util:constant
+                                       static-field="org.argeo.connect.people.PeopleTypes.PEOPLE_MAILING_LIST" />
                        </key>
                        <bean class="org.argeo.connect.people.web.pages.TagLikeInstancePage">
                                <property name="peopleService" ref="peopleService" />
+                               <property name="resourceService" ref="resourceService" />
                                <property name="iconPathes" ref="peopleEntityIcons" />
                                <property name="propertyName" value="people:mailingLists" />
                        </bean>
        <!-- Various headers -->
        <bean id="personHeaderPart" class="org.argeo.connect.people.web.parts.PersonHeaderPart">
                <property name="peopleService" ref="peopleService" />
+               <property name="resourceService" ref="resourceService" />
                <property name="tagsPart" ref="tagsPart" />
                <property name="mailingListsPart" ref="mailingListsPart" />
        </bean>
 
        <bean id="orgHeaderPart" class="org.argeo.connect.people.web.parts.OrgHeaderPart">
                <property name="peopleService" ref="peopleService" />
+               <property name="resourceService" ref="resourceService" />
                <property name="tagsPart" ref="tagsPart" />
                <property name="mailingListsPart" ref="mailingListsPart" />
        </bean>
index 332187bf49019be065c09422c6fcb84ca6589078..8b0c78c3fcd5f07c9dca26887112ae5502cd8297 100644 (file)
@@ -10,6 +10,7 @@ import org.argeo.cms.util.CmsUtils;
 import org.argeo.connect.people.PeopleException;
 import org.argeo.connect.people.PeopleService;
 import org.argeo.connect.people.web.parts.PeopleSearchCmp;
+import org.argeo.connect.resources.ResourceService;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.IDoubleClickListener;
@@ -26,13 +27,15 @@ import org.eclipse.swt.widgets.Label;
 /** Default dashboard layout for Argeo Suite */
 public class DefaultDashboard implements CmsUiProvider {
 
+       private ResourceService resourceService;
        private PeopleService peopleService;
        private Map<String, String> peopleIconPaths;
 
        // Local UI Providers
        // private CmsUiProvider orgPage;
 
-       public DefaultDashboard(PeopleService peopleService, Map<String, String> peopleIconPaths) {
+       public DefaultDashboard(ResourceService resourceService, PeopleService peopleService, Map<String, String> peopleIconPaths) {
+               this.resourceService = resourceService;
                this.peopleService = peopleService;
                this.peopleIconPaths = peopleIconPaths;
 
@@ -66,7 +69,7 @@ public class DefaultDashboard implements CmsUiProvider {
                titleLbl.setText("My Tasks");
                titleLbl.setFont(EclipseUiUtils.getBoldFont(titleCmp));
 
-               PeopleSearchCmp searchComp = new PeopleSearchCmp(parent, SWT.NO_FOCUS, peopleService, peopleIconPaths);
+               PeopleSearchCmp searchComp = new PeopleSearchCmp(parent, SWT.NO_FOCUS, resourceService, peopleService, peopleIconPaths);
                searchComp.populate(context, true);
                searchComp.setLayoutData(EclipseUiUtils.fillAll());
 
index d7ae0324669d78c3ab2986b1b0c1ab93942dbc9a..6c4c74e8fdfb7b73c088cda7489b90439fb907cc 100644 (file)
@@ -19,6 +19,7 @@ import org.argeo.cms.widgets.auth.CmsLogin;
 import org.argeo.connect.people.PeopleService;
 import org.argeo.connect.people.PeopleTypes;
 import org.argeo.connect.people.web.pages.PeopleDefaultPage;
+import org.argeo.connect.resources.ResourceService;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.suite.web.fs.MyFilesBrowserPage;
 import org.eclipse.swt.SWT;
@@ -41,6 +42,7 @@ public class DefaultMainPage implements LifeCycleUiProvider {
        private CmsUiProvider fsBrowserPage;
 
        /* DEPENDENCY INJECTION */
+       private ResourceService resourceService;
        private PeopleService peopleService;
        private FileSystemProvider nodeFileSystemProvider;
        private Map<String, String> peopleIconPaths;
@@ -50,8 +52,8 @@ public class DefaultMainPage implements LifeCycleUiProvider {
 
        @Override
        public void init(Session adminSession) throws RepositoryException {
-               dashboardPage = new DefaultDashboard(peopleService, peopleIconPaths);
-               peoplePage = new PeopleDefaultPage(peopleService, peopleIconPaths);
+               dashboardPage = new DefaultDashboard(resourceService, peopleService, peopleIconPaths);
+               peoplePage = new PeopleDefaultPage(resourceService, peopleService, peopleIconPaths);
                fsBrowserPage = new MyFilesBrowserPage(nodeFileSystemProvider);
        }
 
@@ -121,6 +123,10 @@ public class DefaultMainPage implements LifeCycleUiProvider {
        }
 
        /* DEPENDENCY INJECTION */
+       public void setResourceService(ResourceService resourceService) {
+               this.resourceService = resourceService;
+       }
+
        public void setPeopleService(PeopleService peopleService) {
                this.peopleService = peopleService;
        }
index 57d52a854e8ce29b5a2f604c28360d7bc3695b9f..ea52d2b682b9cb19aac6e45d53e2904db806931d 100644 (file)
@@ -12,6 +12,8 @@ javax.jcr.security,\
 org.argeo.cms,\
 org.argeo.cms.ui.workbench,\
 org.argeo.connect,\
+org.argeo.connect.resources,\
+org.argeo.connect.activities,\
 org.argeo.connect.ui,\
 org.argeo.connect.people.workbench.rap.views,\
 org.argeo.connect.documents.workbench.parts,\
index 39ea5ec8b85d3ebce721e69454e881013dd3b568..e18d202e035e6aea4b16c493fd83550c5267bb48 100644 (file)
@@ -10,6 +10,9 @@ import javax.jcr.Session;
 import org.argeo.cms.ui.workbench.util.CommandUtils;
 import org.argeo.cms.util.CmsUtils;
 import org.argeo.connect.documents.DocumentsService;
+import org.argeo.connect.resources.ResourceService;
+import org.argeo.connect.activities.ActivityService;
+import org.argeo.connect.activities.ActivitiesTypes;
 import org.argeo.connect.people.PeopleService;
 import org.argeo.connect.people.workbench.rap.PeopleStyles;
 import org.argeo.connect.people.workbench.rap.editors.util.EntityEditorInput;
@@ -38,6 +41,8 @@ public abstract class AbstractSuiteDashboard extends EditorPart {
 
        // DEPENDENCY INJECTION
        private Repository repository;
+       private ResourceService resourceService;
+       private ActivityService activityService;
        private PeopleService peopleService;
        private DocumentsService documentsService;
        private AppWorkbenchService appWorkbenchService;
@@ -178,26 +183,35 @@ public abstract class AbstractSuiteDashboard extends EditorPart {
        }
 
        // Expose to implementing classes
+       protected Session getSession() {
+               return session;
+       }
+
+       public ResourceService getResourceService() {
+               return resourceService;
+       }
+       
+       protected ActivityService getActivityService() {
+               return activityService;
+       }
+
        protected PeopleService getPeopleService() {
                return peopleService;
        }
 
-       protected AppWorkbenchService getAppWorkbenchService() {
-               return appWorkbenchService;
+       protected DocumentsService getDocumentsService() {
+               return documentsService;
        }
 
-       protected Session getSession() {
-               return session;
+
+       protected AppWorkbenchService getAppWorkbenchService() {
+               return appWorkbenchService;
        }
 
        protected Image getLogoImg() {
                return logoImg;
        }
 
-       protected DocumentsService getDocumentsService() {
-               return documentsService;
-       }
-
        protected FormToolkit getFormToolkit() {
                return toolkit;
        }
@@ -207,8 +221,12 @@ public abstract class AbstractSuiteDashboard extends EditorPart {
                this.repository = repository;
        }
 
-       public void setAppWorkbenchService(AppWorkbenchService appWorkbenchService) {
-               this.appWorkbenchService = appWorkbenchService;
+       public void setResourceService(ResourceService resourceService) {
+               this.resourceService = resourceService;
+       }
+       
+       public void setActivityService(ActivityService activityService) {
+               this.activityService = activityService;
        }
 
        public void setDocumentsService(DocumentsService documentsService) {
@@ -218,4 +236,10 @@ public abstract class AbstractSuiteDashboard extends EditorPart {
        public void setPeopleService(PeopleService peopleService) {
                this.peopleService = peopleService;
        }
+
+
+       public void setAppWorkbenchService(AppWorkbenchService appWorkbenchService) {
+               this.appWorkbenchService = appWorkbenchService;
+       }
+
 }
index 24ada5034082d122c16c12e379d60064feda8d5c..e45e0682e4a099e1fc6e935b898141a91e19fd96 100644 (file)
@@ -5,9 +5,11 @@ import javax.jcr.NodeIterator;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.argeo.connect.people.PeopleConstants;
+import org.argeo.connect.ConnectConstants;
+import org.argeo.connect.activities.ActivitiesTypes;
 import org.argeo.connect.people.PeopleTypes;
 import org.argeo.connect.people.workbench.rap.PeopleRapUtils;
+import org.argeo.connect.resources.ResourcesTypes;
 import org.argeo.connect.ui.workbench.Refreshable;
 import org.argeo.connect.util.ConnectJcrUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
@@ -87,18 +89,16 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
                PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Organisations",
                                PeopleTypes.PEOPLE_ORG, getPeopleService().getBasePath(PeopleTypes.PEOPLE_ORG));
 
-               Node tagParent = getPeopleService().getResourceService().getTagLikeResourceParent(getSession(),
-                               PeopleTypes.PEOPLE_MAILING_LIST);
+               Node tagParent = getResourceService().getTagLikeResourceParent(getSession(), PeopleTypes.PEOPLE_MAILING_LIST);
                PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Mailing lists",
                                PeopleTypes.PEOPLE_MAILING_LIST, ConnectJcrUtils.getPath(tagParent));
-               PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tasks", PeopleTypes.PEOPLE_TASK,
-                               getPeopleService().getBasePath(null));
+               PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tasks",
+                               ActivitiesTypes.ACTIVITIES_TASK, getPeopleService().getBasePath(null));
 
-               tagParent = getPeopleService().getResourceService().getTagLikeResourceParent(getSession(),
-                               PeopleConstants.RESOURCE_TAG);
+               tagParent = getResourceService().getTagLikeResourceParent(getSession(), ConnectConstants.RESOURCE_TAG);
 
                PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tags",
-                               PeopleTypes.PEOPLE_TAG_INSTANCE, ConnectJcrUtils.getPath(tagParent));
+                               ResourcesTypes.PEOPLE_TAG_INSTANCE, ConnectJcrUtils.getPath(tagParent));
 
        }
 }