Clean legacy Code, Adapt spring links
authorbsinou <bsinou@argeo.org>
Tue, 21 Feb 2017 15:38:10 +0000 (16:38 +0100)
committerbsinou <bsinou@argeo.org>
Tue, 21 Feb 2017 15:38:10 +0000 (16:38 +0100)
21 files changed:
org.argeo.suite.core/META-INF/spring/osgi.xml
org.argeo.suite.core/META-INF/spring/services.xml
org.argeo.suite.core/bnd.bnd
org.argeo.suite.core/pom.xml
org.argeo.suite.core/src/org/argeo/suite/core/DefaultSuiteAppService.java [new file with mode: 0644]
org.argeo.suite.core/src/org/argeo/suite/documents/FsConstants.java [deleted file]
org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java [deleted file]
org.argeo.suite.web/bnd.bnd
org.argeo.suite.web/src/org/argeo/suite/web/DefaultMainPage.java
org.argeo.suite.workbench.rap/META-INF/spring/osgi.xml
org.argeo.suite.workbench.rap/META-INF/spring/parts.xml
org.argeo.suite.workbench.rap/META-INF/spring/services.xml [new file with mode: 0644]
org.argeo.suite.workbench.rap/bnd.bnd
org.argeo.suite.workbench.rap/plugin.xml
org.argeo.suite.workbench.rap/pom.xml
org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/AsWorkbenchServiceImpl.java
org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DashboardPerspective.java
org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/OpenDashboardEditor.java
org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/commands/OpenEntityEditor.java
org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/AbstractSuiteDashboard.java
org.argeo.suite.workbench.rap/theme/argeo-classic/workbench-ext.css

index 53352528437a14f9797f8000ac3260ba9aa97a0a..e7076d6845dd631b9800987a83d34fa9ef82edba 100644 (file)
@@ -7,9 +7,27 @@
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
 \r
        <!-- REFERENCES -->\r
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
 \r
        <!-- REFERENCES -->\r
-       <reference id="repository" interface="javax.jcr.Repository" filter="(cn=node)" />\r
-       \r
+       <reference id="repository" interface="javax.jcr.Repository"\r
+               filter="(cn=node)" />\r
+\r
+       <reference id="userAdmin" interface="org.osgi.service.useradmin.UserAdmin" />\r
+       <reference id="userTransaction" interface="javax.transaction.UserTransaction" />\r
+       <reference id="nodeFileSystemProvider" interface="java.nio.file.spi.FileSystemProvider"\r
+               filter="(service.pid=org.argeo.node.fsProvider)" />\r
+\r
        <!-- SERVICES -->\r
        <!-- SERVICES -->\r
-       <!-- Exposes the Argeo Suite specific maintenance service -->\r
+       <service ref="userAdminService" interface="org.argeo.connect.UserAdminService" />\r
+\r
+       <!-- Maintenance service -->\r
        <service ref="suiteMaintenanceService" interface="org.argeo.connect.AppMaintenanceService" />\r
        <service ref="suiteMaintenanceService" interface="org.argeo.connect.AppMaintenanceService" />\r
+\r
+       <service ref="suiteAppService" interface="org.argeo.connect.AppService" />\r
+       <!-- App specific services -->\r
+       <service ref="resourcesService" interface="org.argeo.connect.resources.ResourcesService" />\r
+       <service ref="activitiesService" interface="org.argeo.connect.activities.ActivitiesService" />\r
+       <service ref="peopleService" interface="org.argeo.connect.people.PeopleService" />\r
+       <service ref="trackerService" interface="org.argeo.connect.tracker.TrackerService" />\r
+       <service ref="documentsService" interface="org.argeo.connect.documents.DocumentsService" />\r
+\r
+\r
 </beans:beans>\r
 </beans:beans>\r
index ffbcc47c58f519763a3426b7c2d98b91ec88d760..31dc32ede1fca679b945b28b7dfa7389eca0f5e8 100644 (file)
@@ -4,22 +4,27 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">\r
 \r
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">\r
 \r
-       <!-- Instantiate the default MaintenanceService of the various Known Apps -->\r
+       <bean id="userAdminService" class="org.argeo.connect.UserAdminServiceImpl"\r
+               scope="singleton" lazy-init="false">\r
+               <property name="userTransaction" ref="userTransaction" />\r
+               <property name="userAdmin" ref="userAdmin" />\r
+               <property name="userAdminServiceReference" ref="userAdmin" />\r
+       </bean>\r
+\r
+       <!-- MAINTENANCE SERVICES -->\r
        <bean id="resourcesMaintenanceService"\r
                class="org.argeo.connect.resources.core.ResourcesMaintenanceService" />\r
 \r
        <bean id="activitiesMaintenanceService"\r
                class="org.argeo.connect.activities.core.ActivitiesMaintenanceService" />\r
 \r
        <bean id="resourcesMaintenanceService"\r
                class="org.argeo.connect.resources.core.ResourcesMaintenanceService" />\r
 \r
        <bean id="activitiesMaintenanceService"\r
                class="org.argeo.connect.activities.core.ActivitiesMaintenanceService" />\r
 \r
-       <bean id="peopleMaintenanceService"\r
-               class="org.argeo.connect.people.core.PeopleMaintenanceService" />\r
+       <bean id="peopleMaintenanceService" class="org.argeo.connect.people.core.PeopleMaintenanceService" />\r
 \r
        <bean id="trackerMaintenanceService"\r
                class="org.argeo.connect.tracker.core.TrackerMaintenanceService" />\r
 \r
 \r
        <bean id="trackerMaintenanceService"\r
                class="org.argeo.connect.tracker.core.TrackerMaintenanceService" />\r
 \r
-       <!--  Ther is no miantenance Service for the Documents app yet  -->\r
-\r
-       <!--order is important -->\r
+       <!-- There is no maintenance Service for the Documents App yet -->\r
+       <!-- Order is important -->\r
        <util:list id="knownMaintenanceServices">\r
                <ref bean="resourcesMaintenanceService" />\r
                <ref bean="activitiesMaintenanceService" />\r
        <util:list id="knownMaintenanceServices">\r
                <ref bean="resourcesMaintenanceService" />\r
                <ref bean="activitiesMaintenanceService" />\r
@@ -27,6 +32,7 @@
                <ref bean="trackerMaintenanceService" />\r
        </util:list>\r
 \r
                <ref bean="trackerMaintenanceService" />\r
        </util:list>\r
 \r
+       <!-- Make the DJ-aying between the various known Apps Maintenance  -->\r
        <bean id="suiteMaintenanceService" class="org.argeo.suite.core.DefaultSuiteMaintenanceService"\r
                init-method="init" destroy-method="destroy">\r
                <property name="repository" ref="repository" />\r
        <bean id="suiteMaintenanceService" class="org.argeo.suite.core.DefaultSuiteMaintenanceService"\r
                init-method="init" destroy-method="destroy">\r
                <property name="repository" ref="repository" />\r
                <property name="maintenanceServices" ref="knownMaintenanceServices" />\r
        </bean>\r
 \r
                <property name="maintenanceServices" ref="knownMaintenanceServices" />\r
        </bean>\r
 \r
+       <!--  APP SERVICES (backends) -->\r
+       <bean id="resourcesService" class="org.argeo.connect.resources.core.ResourcesServiceImpl" />\r
+\r
+       <bean id="activitiesService" class="org.argeo.connect.activities.core.ActivitiesServiceImpl">\r
+               <property name="userAdminService" ref="userAdminService" />\r
+               <property name="resourcesService" ref="resourcesService" />\r
+       </bean>\r
+\r
+       <bean id="peopleService" class="org.argeo.connect.people.core.PeopleServiceImpl"\r
+               init-method="init">\r
+               <property name="resourcesService" ref="resourcesService" />\r
+       </bean>\r
+\r
+       <bean id="trackerService" class="org.argeo.connect.tracker.core.TrackerServiceImpl" />\r
+\r
+       <bean id="documentsService" class="org.argeo.connect.documents.DocumentsService" />\r
+\r
+       <bean id="suiteAppService" class="org.argeo.suite.core.DefaultSuiteAppService">\r
+               <property name="resourcesService" ref="resourcesService" />\r
+               <property name="activitiesService" ref="activitiesService" />\r
+               <property name="peopleService" ref="peopleService" />\r
+               <property name="trackerService" ref="trackerService" />\r
+               <property name="documentsService" ref="documentsService" />\r
+       </bean>\r
+\r
+       <!--  VARIOUS -->\r
+\r
        <!-- Execute initialization with a system authentication -->\r
        <bean\r
                class="org.argeo.cms.spring.AuthenticatedApplicationContextInitialization" />\r
        <!-- Execute initialization with a system authentication -->\r
        <bean\r
                class="org.argeo.cms.spring.AuthenticatedApplicationContextInitialization" />\r
index d1349a9f837b56f3fb6548676477150017726ea4..f18e99f813f9fe4615cf4da3244fc02592deb510 100644 (file)
@@ -1,5 +1,6 @@
 Require-Capability: cms.datamodel; filter:="(name=people)",\
 Require-Capability: cms.datamodel; filter:="(name=people)",\
-cms.datamodel; filter:="(name=documents)"
+cms.datamodel; filter:="(name=documents)",\
+cms.datamodel; filter:="(name=tracker)"
 Import-Package:\
 javax.jcr.nodetype,\
 org.argeo.connect.resources,\
 Import-Package:\
 javax.jcr.nodetype,\
 org.argeo.connect.resources,\
@@ -7,6 +8,4 @@ org.argeo.node,\
 org.argeo.util,\
 javax.jcr.security,\
 *
 org.argeo.util,\
 javax.jcr.security,\
 *
-
-
     
     
index 580782840d877ffc44e9895e89fa5986b2d16075..df37fe27a63ce272651065ba74878450cf40a5eb 100644 (file)
                        <artifactId>org.argeo.connect.documents</artifactId>
                        <version>${version.argeo-connect}</version>
                </dependency>
                        <artifactId>org.argeo.connect.documents</artifactId>
                        <version>${version.argeo-connect}</version>
                </dependency>
+               <dependency>
+                       <groupId>org.argeo.connect</groupId>
+                       <artifactId>org.argeo.connect.activities</artifactId>
+                       <version>${version.argeo-connect}</version>
+               </dependency>
        </dependencies>
 </project>
        </dependencies>
 </project>
diff --git a/org.argeo.suite.core/src/org/argeo/suite/core/DefaultSuiteAppService.java b/org.argeo.suite.core/src/org/argeo/suite/core/DefaultSuiteAppService.java
new file mode 100644 (file)
index 0000000..02eda61
--- /dev/null
@@ -0,0 +1,84 @@
+package org.argeo.suite.core;
+
+import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.nodetype.NodeType;
+
+import org.argeo.connect.AppService;
+import org.argeo.connect.activities.ActivitiesService;
+import org.argeo.connect.activities.ActivitiesTypes;
+import org.argeo.connect.documents.DocumentsService;
+import org.argeo.connect.people.PeopleService;
+import org.argeo.connect.people.PeopleTypes;
+import org.argeo.connect.resources.ResourcesService;
+import org.argeo.connect.resources.ResourcesTypes;
+import org.argeo.connect.tracker.TrackerService;
+import org.argeo.connect.tracker.TrackerTypes;
+import org.argeo.connect.util.ConnectJcrUtils;
+
+public class DefaultSuiteAppService implements AppService {
+
+       private ResourcesService resourcesService;
+       private ActivitiesService activitiesService;
+       private PeopleService peopleService;
+       private DocumentsService documentsService;
+       private TrackerService trackerService;
+
+       @Override
+       public String getAppBaseName() {
+               return null;
+       }
+
+       @Override
+       public String getDefaultRelPath(Node entity) throws RepositoryException {
+               return null;
+       }
+
+       @Override
+       public String getDefaultRelPath(String id) {
+               return null;
+       }
+
+       /** Insures the correct service is called on save */
+       @Override
+       public Node saveEntity(Node entity, boolean publish) {
+               if (ConnectJcrUtils.isNodeType(entity, ResourcesTypes.RESOURCES_TAG_PARENT)
+                               || ConnectJcrUtils.isNodeType(entity, ResourcesTypes.RESOURCES_NODE_TEMPLATE)
+                               || ConnectJcrUtils.isNodeType(entity, ResourcesTypes.RESOURCES_TAG_ENCODED_INSTANCE)
+                               || ConnectJcrUtils.isNodeType(entity, ResourcesTypes.RESOURCES_TAG_INSTANCE))
+                       return resourcesService.saveEntity(entity, publish);
+               else if (ConnectJcrUtils.isNodeType(entity, TrackerTypes.TRACKER_PROJECT))
+                       return trackerService.saveEntity(entity, publish);
+               else if (ConnectJcrUtils.isNodeType(entity, ActivitiesTypes.ACTIVITIES_TASK)
+                               || ConnectJcrUtils.isNodeType(entity, ActivitiesTypes.ACTIVITIES_ACTIVITY))
+                       return activitiesService.saveEntity(entity, publish);
+               else if (ConnectJcrUtils.isNodeType(entity, PeopleTypes.PEOPLE_PERSON)
+                               || ConnectJcrUtils.isNodeType(entity, PeopleTypes.PEOPLE_ORG))
+                       return peopleService.saveEntity(entity, publish);
+               else if (ConnectJcrUtils.isNodeType(entity, NodeType.NT_FILE)
+                               || ConnectJcrUtils.isNodeType(entity, NodeType.NT_FOLDER))
+                       return documentsService.saveEntity(entity, publish);
+               else
+                       return AppService.super.saveEntity(entity, publish);
+       }
+
+       public void setResourcesService(ResourcesService resourcesService) {
+               this.resourcesService = resourcesService;
+       }
+
+       public void setActivitiesService(ActivitiesService activitiesService) {
+               this.activitiesService = activitiesService;
+       }
+
+       public void setPeopleService(PeopleService peopleService) {
+               this.peopleService = peopleService;
+       }
+
+       public void setDocumentsService(DocumentsService documentsService) {
+               this.documentsService = documentsService;
+       }
+
+       public void setTrackerService(TrackerService trackerService) {
+               this.trackerService = trackerService;
+       }
+}
diff --git a/org.argeo.suite.core/src/org/argeo/suite/documents/FsConstants.java b/org.argeo.suite.core/src/org/argeo/suite/documents/FsConstants.java
deleted file mode 100644 (file)
index ce5df78..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.argeo.suite.documents;
-
-public interface FsConstants {
-}
diff --git a/org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java b/org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java
deleted file mode 100644 (file)
index 1aaf15b..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-package org.argeo.suite.people;
-
-import java.net.URI;
-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.people.PeopleConstants;
-import org.argeo.connect.people.PeopleService;
-import org.argeo.connect.people.core.PeopleServiceImpl;
-import org.argeo.connect.resources.ResourcesService;
-import org.argeo.jcr.JcrUtils;
-import org.argeo.node.NodeConstants;
-import org.argeo.suite.ArgeoSuiteRole;
-import org.argeo.suite.SuiteException;
-
-/**
- * Default implementation of an Argeo Suite specific People Backend
- * 
- * TODO refactor and clean init process and service dependencies
- */
-public class PeopleSuiteServiceImpl extends PeopleServiceImpl implements PeopleService, PeopleConstants {
-       private final static Log log = LogFactory.getLog(PeopleSuiteServiceImpl.class);
-
-       /* DEPENDENCY INJECTION */
-       private Repository repository;
-       private String workspaceName;
-       private ResourcesService resourceService;
-       private Map<String, URI> initResources = null;
-       private Map<String, URI> legacyResources = null;
-
-       public void init() {
-               super.init();
-               Session adminSession = null;
-               try {
-                       adminSession = repository.login(workspaceName);
-                       initialiseModel(adminSession);
-                       initModelResources(adminSession);
-               } 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
-       protected void initialiseModel(Session adminSession) throws RepositoryException {
-               super.initialiseModel(adminSession);
-
-               JcrUtils.mkdirs(adminSession, publicPath, NodeType.NT_UNSTRUCTURED);
-               if (adminSession.hasPendingChanges()) {
-                       adminSession.save();
-                       configureACL(adminSession);
-                       log.info("Repository has been initialised with Argeo Suite model");
-               }
-       }
-
-       // First draft of configuration of the people specific rights
-       private void configureACL(Session session) throws RepositoryException {
-
-               // Initialise people
-               JcrUtils.addPrivilege(session, getBasePath(null), ArgeoSuiteRole.coworker.dn(), Privilege.JCR_ALL);
-               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();
-               log.info("Access control configured");
-       }
-
-       /**
-        * Initialises People resource model and optionally imports legacy resources
-        */
-       protected void initModelResources(Session adminSession) {
-               // 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 */
-       protected Repository getRepository() {
-               return repository;
-       }
-
-       protected String getWorkspaceName() {
-               return workspaceName;
-       }
-
-       /* DEPENDENCY INJECTION */
-       public void setRepository(Repository repository) {
-               this.repository = repository;
-       }
-
-       public void setWorkspaceName(String workspaceName) {
-               this.workspaceName = workspaceName;
-       }
-
-       public void setInitResources(Map<String, URI> initResources) {
-               this.initResources = initResources;
-       }
-}
index f13bd424d0dee3dad547a69ec095e81a1f714615..e400263887abfb14a1f206864528db286be9e946 100644 (file)
@@ -1,5 +1,6 @@
 Import-Package:\
 javax.jcr.nodetype,\
 Import-Package:\
 javax.jcr.nodetype,\
+org.argeo.connect,\
 org.argeo.node,\
 javax.jcr.security,\
 org.eclipse.swt,\
 org.argeo.node,\
 javax.jcr.security,\
 org.eclipse.swt,\
index d22a5dd73d74cbdbb649b07146912fb7fa6c0025..b2617e376e5bc1bf0ebca74de35e8e939f8260a9 100644 (file)
@@ -64,7 +64,7 @@ public class DefaultMainPage implements LifeCycleUiProvider {
 
                if (context.isNodeType(PeopleTypes.PEOPLE_ENTITY))
                        return peoplePage.createUi(parent, context);
 
                if (context.isNodeType(PeopleTypes.PEOPLE_ENTITY))
                        return peoplePage.createUi(parent, context);
-               else if (peopleService.getBasePath(null).equals(context.getPath()))
+               else if (peopleService.getDefaultBasePath().equals(context.getPath()))
                        return peoplePage.createUi(parent, context);
                else if (context.isNodeType(NodeType.NT_FOLDER) || context.isNodeType(NodeType.NT_FILE))
                        return fsBrowserPage.createUi(parent, context);
                        return peoplePage.createUi(parent, context);
                else if (context.isNodeType(NodeType.NT_FOLDER) || context.isNodeType(NodeType.NT_FILE))
                        return fsBrowserPage.createUi(parent, context);
index 8f1400f1921265e87b969a721279d5780dc919d2..e58cc515341a4d4d796a39bb82e30e2a930b39f7 100644 (file)
                interface="org.argeo.connect.activities.ActivitiesService" />\r
        <reference id="peopleService" interface="org.argeo.connect.people.PeopleService" />\r
        <reference id="documentsService" interface="org.argeo.connect.documents.DocumentsService" />\r
                interface="org.argeo.connect.activities.ActivitiesService" />\r
        <reference id="peopleService" interface="org.argeo.connect.people.PeopleService" />\r
        <reference id="documentsService" interface="org.argeo.connect.documents.DocumentsService" />\r
-       <reference id="appWorkbenchService"\r
+       <reference id="trackerService" interface="org.argeo.connect.tracker.TrackerService" />\r
+       \r
+       \r
+       <!-- Assembly of the various apps workbench services -->\r
+       <service ref="suiteWorkbenchService"\r
                interface="org.argeo.connect.ui.workbench.AppWorkbenchService" />\r
                interface="org.argeo.connect.ui.workbench.AppWorkbenchService" />\r
-       <reference id="nodeFileSystemProvider" interface="java.nio.file.spi.FileSystemProvider"\r
-               filter="(service.pid=org.argeo.node.fsProvider)" />\r
+\r
+       <!-- Exposes People specific implementation of the AppWorkbenchService -->\r
+       <service ref="peopleWorkbenchService"\r
+               interface="org.argeo.connect.people.workbench.PeopleWorkbenchService" />\r
+               \r
 </beans:beans>\r
 </beans:beans>\r
index ee418dd9ab4da53573589028e109e8a8c1a77ca7..248146563b8a58ae12a24b91a5436326f08ce96f 100644 (file)
                <property name="repository" ref="repository" />
        </bean>
 
                <property name="repository" ref="repository" />
        </bean>
 
-       <bean id="openEntityEditor" class="org.argeo.suite.workbench.commands.OpenEntityEditor"
-               scope="prototype">
-               <property name="repository" ref="repository" />
-               <property name="appWorkbenchService" ref="appWorkbenchService" />
-       </bean>
+<!--   <bean id="openEntityEditor" class="org.argeo.suite.workbench.commands.OpenEntityEditor" -->
+<!--           scope="prototype"> -->
+<!--           <property name="repository" ref="repository" /> -->
+<!--           <property name="appWorkbenchService" ref="appWorkbenchService" /> -->
+<!--   </bean> -->
 
        <!-- VIEWS -->
        
 
        <!-- VIEWS -->
        
@@ -27,6 +27,6 @@
                <property name="activitiesService" ref="activitiesService" />
                <property name="peopleService" ref="peopleService" />
                <property name="documentsService" ref="documentsService" />
                <property name="activitiesService" ref="activitiesService" />
                <property name="peopleService" ref="peopleService" />
                <property name="documentsService" ref="documentsService" />
-               <property name="appWorkbenchService" ref="appWorkbenchService" />
+               <property name="appWorkbenchService" ref="suiteWorkbenchService" />
        </bean>
 </beans>
        </bean>
 </beans>
diff --git a/org.argeo.suite.workbench.rap/META-INF/spring/services.xml b/org.argeo.suite.workbench.rap/META-INF/spring/services.xml
new file mode 100644 (file)
index 0000000..0d73968
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
+
+       <!-- Assembly of the various AppWorkbenchServices -->
+       <bean id="activitiesWorkbenchService"
+               class="org.argeo.connect.activities.workbench.ActivitiesWorkbenchService" />
+
+       <bean id="peopleWorkbenchService"
+               class="org.argeo.connect.people.workbench.rap.PeopleWorkbenchServiceImpl" />
+
+       <bean id="documentsWorkbenchService"
+               class="org.argeo.connect.documents.workbench.DocumentsWorkbenchService" />
+
+       <!--order is important -->
+       <util:list id="knownWbServices">
+               <ref bean="activitiesWorkbenchService" />
+               <ref bean="peopleWorkbenchService" />
+               <ref bean="documentsWorkbenchService" />
+       </util:list>
+
+       <bean id="suiteWorkbenchService" class="org.argeo.suite.workbench.AsWorkbenchServiceImpl">
+               <property name="knownAppWbServices" ref="knownWbServices" />
+       </bean>
+
+</beans>
\ No newline at end of file
index ea52d2b682b9cb19aac6e45d53e2904db806931d..ce06f2d9f43aeaceed18035122cca7e3a275c23b 100644 (file)
@@ -11,15 +11,17 @@ javax.jcr.nodetype,\
 javax.jcr.security,\
 org.argeo.cms,\
 org.argeo.cms.ui.workbench,\
 javax.jcr.security,\
 org.argeo.cms,\
 org.argeo.cms.ui.workbench,\
+org.argeo.cms.ui.workbench.jcr,\
 org.argeo.connect,\
 org.argeo.connect,\
-org.argeo.connect.resources,\
 org.argeo.connect.activities,\
 org.argeo.connect.activities,\
-org.argeo.connect.ui,\
-org.argeo.connect.people.workbench.rap.views,\
+org.argeo.connect.activities.workbench.parts,\
 org.argeo.connect.documents.workbench.parts,\
 org.argeo.connect.documents.workbench.parts,\
+org.argeo.connect.people.workbench.rap.views,\
+org.argeo.connect.resources,\
+org.argeo.connect.ui,\
 org.argeo.connect.ui.workbench,\
 org.argeo.connect.ui.workbench,\
+org.argeo.connect.ui.workbench.util,\
 org.argeo.eclipse.spring,\
 org.argeo.node,\
 org.argeo.util,\
 org.argeo.eclipse.spring,\
 org.argeo.node,\
 org.argeo.util,\
-org.argeo.cms.ui.workbench.jcr,\
 *
\ No newline at end of file
 *
\ No newline at end of file
index 14dd45e6d169b79626a4bc1ea702a6ac4b8ac863..e4165da0caace95bb38db69f6c7a0b8acd48ac5f 100644 (file)
        <extension
                id="menu:org.eclipse.ui.main.menu"
                point="org.eclipse.ui.menus">
        <extension
                id="menu:org.eclipse.ui.main.menu"
                point="org.eclipse.ui.menus">
-
-               <!-- Add entity and Search menus --> 
-               <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar?after=org.argeo.cms.ui.workbench.rap.userToolbar">
-                       <toolbar id="org.argeo.connect.ui.workbench.dropDownsToolbar">
-                               <command
-                                       id="org.argeo.connect.ui.workbench.addEntityToolbar"
-                                       style="pulldown"
-                                       label="Create"
-                                       tooltip="Create a new object"
-                                       icon="theme/argeo-classic/icons/add.gif"
-                                       commandId="org.argeo.cms.ui.workbench.doNothing">
-                               </command>
-                               <command
-                                       id="org.argeo.connect.ui.workbench.openSearchToolbar"
-                                       style="pulldown"
-                                       label="Search"
-                                       tooltip="Open a detailed search page"
-                                       icon="theme/argeo-classic/icons/search.png"
-                                       commandId="org.argeo.cms.ui.workbench.doNothing">
-                                       <visibleWhen checkEnabled="false">
-                                               <with variable="roles">
-                                               <iterate ifEmpty="false" operator="or">
-                                                       <equals value="cn=org.argeo.suite.coworker,ou=roles,ou=node" />
-                                               </iterate>
-                                       </with>
-                                       </visibleWhen>
-                               </command>
-                       </toolbar>
-               </menuContribution>
        </extension>
        
        <!-- BRANDING AND THEMES -->
        </extension>
        
        <!-- BRANDING AND THEMES -->
index 6b8503f82cae2a77627c61f2a06bee32eaf27470..4f00bdd6e7d499f7ba2243c954f7441bd662d83e 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo.suite</groupId>
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo.suite</groupId>
                        <artifactId>org.argeo.connect.people.workbench.rap</artifactId>
                        <version>${version.argeo-connect}</version>
                </dependency>
                        <artifactId>org.argeo.connect.people.workbench.rap</artifactId>
                        <version>${version.argeo-connect}</version>
                </dependency>
+               <dependency>
+                       <groupId>org.argeo.connect</groupId>
+                       <artifactId>org.argeo.connect.ui</artifactId>
+                       <version>${version.argeo-connect}</version>
+               </dependency>
        </dependencies>
 </project>
        </dependencies>
 </project>
index eb18dc53e990892a39f667c7b4346a3ec0ea280d..73bfdbd499d5416fdf98587c759055a80fa6492f 100644 (file)
@@ -6,7 +6,6 @@ import javax.jcr.Node;
 
 import org.argeo.connect.ui.workbench.AppWorkbenchService;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 
 import org.argeo.connect.ui.workbench.AppWorkbenchService;
 import org.argeo.eclipse.ui.EclipseUiUtils;
-import org.argeo.suite.workbench.commands.OpenEntityEditor;
 import org.argeo.suite.workbench.parts.DefaultDashboardEditor;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.swt.graphics.Image;
 import org.argeo.suite.workbench.parts.DefaultDashboardEditor;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.swt.graphics.Image;
@@ -23,27 +22,27 @@ public class AsWorkbenchServiceImpl implements AppWorkbenchService {
                return DefaultDashboardEditor.ID;
        }
 
                return DefaultDashboardEditor.ID;
        }
 
-       @Override
-       public String getOpenEntityEditorCmdId() {
-//             String result = null;
-//             for (AppWorkbenchService appWbService : knownAppWbServices) {
-//                     result = appWbService.getOpenEntityEditorCmdId();
-//                     if (EclipseUiUtils.notEmpty(result))
-//                             return result;
-//             }
-               return OpenEntityEditor.ID;
-       }
+       // @Override
+       // public String getOpenEntityEditorCmdId() {
+       //// String result = null;
+       //// for (AppWorkbenchService appWbService : knownAppWbServices) {
+       //// result = appWbService.getOpenEntityEditorCmdId();
+       //// if (EclipseUiUtils.notEmpty(result))
+       //// return result;
+       //// }
+       // return OpenEntityEditor.ID;
+       // }
 
 
-       @Override
-       public String getOpenSearchEntityEditorCmdId() {
-               String result = null;
-               for (AppWorkbenchService appWbService : knownAppWbServices) {
-                       result = appWbService.getOpenSearchEntityEditorCmdId();
-                       if (EclipseUiUtils.notEmpty(result))
-                               return result;
-               }
-               return null;
-       }
+       // @Override
+       // public String getOpenSearchEntityEditorCmdId() {
+       // String result = null;
+       // for (AppWorkbenchService appWbService : knownAppWbServices) {
+       // result = appWbService.getOpenSearchEntityEditorCmdId();
+       // if (EclipseUiUtils.notEmpty(result))
+       // return result;
+       // }
+       // return null;
+       // }
 
        @Override
        public String getEntityEditorId(Node entity) {
 
        @Override
        public String getEntityEditorId(Node entity) {
index eeca5f47d37b589bb5e9c0c66410cf06390696b0..9b50d3e5b82b1d8fb873d3175c8b06d6a4c930ca 100644 (file)
@@ -1,7 +1,7 @@
 package org.argeo.suite.workbench;
 
 package org.argeo.suite.workbench;
 
+import org.argeo.connect.activities.workbench.parts.MyTodoListView;
 import org.argeo.connect.documents.workbench.parts.MyFilesView;
 import org.argeo.connect.documents.workbench.parts.MyFilesView;
-import org.argeo.connect.people.workbench.rap.views.MyTodoListView;
 import org.argeo.connect.people.workbench.rap.views.QuickSearchView;
 import org.eclipse.ui.IFolderLayout;
 import org.eclipse.ui.IPageLayout;
 import org.argeo.connect.people.workbench.rap.views.QuickSearchView;
 import org.eclipse.ui.IFolderLayout;
 import org.eclipse.ui.IPageLayout;
index 6a9ef572ffa803683711e80a45bc060511f9ef01..2b7a2d154350f67355394b77f633324bdca5dd3b 100644 (file)
@@ -5,7 +5,7 @@ import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
-import org.argeo.connect.ui.workbench.parts.EntityEditorInput;
+import org.argeo.connect.ui.workbench.util.EntityEditorInput;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.node.NodeUtils;
 import org.argeo.suite.SuiteException;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.node.NodeUtils;
 import org.argeo.suite.SuiteException;
index aad084b485d4b1d2b09cec435aa56a13efd96516..433ed71b6f2d9b9a24b42709936262ffb824a4dd 100644 (file)
@@ -1,68 +1,71 @@
 package org.argeo.suite.workbench.commands;
 
 package org.argeo.suite.workbench.commands;
 
-import javax.jcr.Node;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
 
 
-import org.argeo.connect.ui.workbench.AppWorkbenchService;
-import org.argeo.connect.ui.workbench.NodeEditorInput;
-import org.argeo.jcr.JcrUtils;
-import org.argeo.suite.SuiteException;
-import org.argeo.suite.workbench.AsUiPlugin;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.handlers.HandlerUtil;
+public class OpenEntityEditor{}
 
 
-/** Workaround to enable opening of a default editor */
-public class OpenEntityEditor extends AbstractHandler {
-       public final static String ID = AsUiPlugin.PLUGIN_ID + ".openEntityEditor";
-
-       public final static String PARAM_JCR_ID = "param.jcrId";
-       // public final static String PARAM_OPEN_FOR_EDIT = "param.openForEdit";
-       // public final static String PARAM_CTAB_ID = "param.cTabId";
-
-       private Repository repository;
-       private AppWorkbenchService appWorkbenchService;
-
-       public Object execute(ExecutionEvent event) throws ExecutionException {
-               NodeEditorInput eei = null;
-               Node entity = null;
-               Session session = null;
-               String jcrId = event.getParameter(PARAM_JCR_ID);
-               try {
-                       session = repository.login();
-                       if (jcrId != null) {
-                               entity = session.getNodeByIdentifier(jcrId);
-                               eei = new NodeEditorInput(jcrId);
-                       } else
-                               return null;
-
-                       String editorId = appWorkbenchService.getEntityEditorId(entity);
-                       if (editorId != null) {
-                               IWorkbenchWindow iww = HandlerUtil.getActiveWorkbenchWindow(event);
-                               IWorkbenchPage iwp = iww.getActivePage();
-                               iwp.openEditor(eei, editorId);
-                       }
-               } catch (PartInitException pie) {
-                       throw new SuiteException("Unexpected PartInitException while opening entity editor", pie);
-               } catch (RepositoryException e) {
-                       throw new SuiteException("unexpected JCR error while opening editor", e);
-               } finally {
-                       JcrUtils.logoutQuietly(session);
-               }
-               return null;
-       }
-
-       public void setRepository(Repository repository) {
-               this.repository = repository;
-       }
-
-       public void setAppWorkbenchService(AppWorkbenchService appWorkbenchService) {
-               this.appWorkbenchService = appWorkbenchService;
-       }
-}
+//import javax.jcr.Node;
+//import javax.jcr.Repository;
+//import javax.jcr.RepositoryException;
+//import javax.jcr.Session;
+//
+//import org.argeo.connect.ui.workbench.AppWorkbenchService;
+//import org.argeo.connect.ui.workbench.NodeEditorInput;
+//import org.argeo.jcr.JcrUtils;
+//import org.argeo.suite.SuiteException;
+//import org.argeo.suite.workbench.AsUiPlugin;
+//import org.eclipse.core.commands.AbstractHandler;
+//import org.eclipse.core.commands.ExecutionEvent;
+//import org.eclipse.core.commands.ExecutionException;
+//import org.eclipse.ui.IWorkbenchPage;
+//import org.eclipse.ui.IWorkbenchWindow;
+//import org.eclipse.ui.PartInitException;
+//import org.eclipse.ui.handlers.HandlerUtil;
+//
+///** Workaround to enable opening of a default editor */
+//public class OpenEntityEditor extends AbstractHandler {
+//     public final static String ID = AsUiPlugin.PLUGIN_ID + ".openEntityEditor";
+//
+//     public final static String PARAM_JCR_ID = "param.jcrId";
+//     // public final static String PARAM_OPEN_FOR_EDIT = "param.openForEdit";
+//     // public final static String PARAM_CTAB_ID = "param.cTabId";
+//
+//     private Repository repository;
+//     private AppWorkbenchService appWorkbenchService;
+//
+//     public Object execute(ExecutionEvent event) throws ExecutionException {
+//             NodeEditorInput eei = null;
+//             Node entity = null;
+//             Session session = null;
+//             String jcrId = event.getParameter(PARAM_JCR_ID);
+//             try {
+//                     session = repository.login();
+//                     if (jcrId != null) {
+//                             entity = session.getNodeByIdentifier(jcrId);
+//                             eei = new NodeEditorInput(jcrId);
+//                     } else
+//                             return null;
+//
+//                     String editorId = appWorkbenchService.getEntityEditorId(entity);
+//                     if (editorId != null) {
+//                             IWorkbenchWindow iww = HandlerUtil.getActiveWorkbenchWindow(event);
+//                             IWorkbenchPage iwp = iww.getActivePage();
+//                             iwp.openEditor(eei, editorId);
+//                     }
+//             } catch (PartInitException pie) {
+//                     throw new SuiteException("Unexpected PartInitException while opening entity editor", pie);
+//             } catch (RepositoryException e) {
+//                     throw new SuiteException("unexpected JCR error while opening editor", e);
+//             } finally {
+//                     JcrUtils.logoutQuietly(session);
+//             }
+//             return null;
+//     }
+//
+//     public void setRepository(Repository repository) {
+//             this.repository = repository;
+//     }
+//
+//     public void setAppWorkbenchService(AppWorkbenchService appWorkbenchService) {
+//             this.appWorkbenchService = appWorkbenchService;
+//     }
+//}
index 48053da45ba7bc5f6841d4a94b18f396f8d4206f..5e7d4be5abbcb61ebc5a2966f7c49a2746713778 100644 (file)
@@ -15,7 +15,7 @@ import org.argeo.connect.people.PeopleService;
 import org.argeo.connect.resources.ResourcesService;
 import org.argeo.connect.ui.ConnectUiStyles;
 import org.argeo.connect.ui.workbench.AppWorkbenchService;
 import org.argeo.connect.resources.ResourcesService;
 import org.argeo.connect.ui.ConnectUiStyles;
 import org.argeo.connect.ui.workbench.AppWorkbenchService;
-import org.argeo.connect.ui.workbench.parts.EntityEditorInput;
+import org.argeo.connect.ui.workbench.util.EntityEditorInput;
 import org.argeo.connect.util.ConnectJcrUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.connect.util.ConnectJcrUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.jcr.JcrUtils;
index 0c902ebefdc59e19e183fba3b7399b2b5a477466..059432aa820e045521e08ffd98b34d3ec8363438 100644 (file)
@@ -313,7 +313,7 @@ Button[PUSH][FLAT].small_delete_btn{
 
 
 /** Header **/
 
 
 /** Header **/
-.people_entity_header {
+.entity_header {
        font: 14px Helvetica, Verdana, "Lucida Sans", Arial, sans-serif;
        text-decoration: none;
 }
        font: 14px Helvetica, Verdana, "Lucida Sans", Arial, sans-serif;
        text-decoration: none;
 }