Clean legacy Code, Adapt spring links
[gpl/argeo-suite.git] / org.argeo.suite.core / src / org / argeo / suite / core / DefaultSuiteAppService.java
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;
+       }
+}