X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.core%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fcore%2FDefaultSuiteAppService.java;h=b87527af828b30736790d6a85a5f0bc30934dde9;hp=cb349938245ac762e4492f6e7fd44f404aae532f;hb=5bbce644be337f1ad9916c23dba141ad1f38b3ba;hpb=16e21d016c7fa749ba418607f3cc71ac7e419451 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 index cb34993..b87527a 100644 --- a/org.argeo.suite.core/src/org/argeo/suite/core/DefaultSuiteAppService.java +++ b/org.argeo.suite.core/src/org/argeo/suite/core/DefaultSuiteAppService.java @@ -1,29 +1,32 @@ package org.argeo.suite.core; +import java.util.List; + import javax.jcr.Node; import javax.jcr.RepositoryException; -import javax.jcr.nodetype.NodeType; +import javax.jcr.Session; 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; +import org.argeo.connect.SystemAppService; +import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.suite.SuiteConstants; +import org.argeo.suite.SuiteException; + +public class DefaultSuiteAppService implements SystemAppService { -public class DefaultSuiteAppService implements AppService { + // Injected known AppWorkbenchServices: order is important, first found + // result will be returned by the various methods. + private List knownAppServices; - private ResourcesService resourcesService; - private ActivitiesService activitiesService; - private PeopleService peopleService; - private DocumentsService documentsService; - private TrackerService trackerService; + @Override + public Node publishEntity(Node parent, String nodeType, Node srcNode, boolean removeSrcNode) + throws RepositoryException { + for (AppService appService : knownAppServices) { + if (appService.isKnownType(nodeType)) + return appService.publishEntity(parent, nodeType, srcNode, removeSrcNode); + } + return null; + } @Override public String getAppBaseName() { @@ -31,72 +34,74 @@ public class DefaultSuiteAppService implements AppService { } @Override - public String getDefaultRelPath(Node entity) throws RepositoryException { - if (ConnectJcrUtils.isNodeType(entity, ResourcesTypes.RESOURCES_TAG_PARENT) - || ConnectJcrUtils.isNodeType(entity, ResourcesTypes.RESOURCES_NODE_TEMPLATE) - || ConnectJcrUtils.isNodeType(entity, ResourcesTypes.RESOURCES_ENCODED_TAG) - || ConnectJcrUtils.isNodeType(entity, ResourcesTypes.RESOURCES_TAG)) - return resourcesService.getDefaultRelPath(entity); - else if (ConnectJcrUtils.isNodeType(entity, TrackerTypes.TRACKER_PROJECT)) - return trackerService.getDefaultRelPath(entity); - else if (ConnectJcrUtils.isNodeType(entity, ActivitiesTypes.ACTIVITIES_TASK) - || ConnectJcrUtils.isNodeType(entity, ActivitiesTypes.ACTIVITIES_ACTIVITY)) - return activitiesService.getDefaultRelPath(entity); - else if (ConnectJcrUtils.isNodeType(entity, PeopleTypes.PEOPLE_PERSON) - || ConnectJcrUtils.isNodeType(entity, PeopleTypes.PEOPLE_ORG)) - return peopleService.getDefaultRelPath(entity); - else if (ConnectJcrUtils.isNodeType(entity, NodeType.NT_FILE) - || ConnectJcrUtils.isNodeType(entity, NodeType.NT_FOLDER)) - return documentsService.getDefaultRelPath(entity); - else - return null; + public String getBaseRelPath(String nodeType) { + for (AppService appService : knownAppServices) { + if (appService.isKnownType(nodeType)) + return appService.getBaseRelPath(nodeType); + } + return null; + // return getAppBaseName(); } @Override - public String getDefaultRelPath(String id) { + public String getDefaultRelPath(Node entity) throws RepositoryException { + for (AppService appService : knownAppServices) { + if (appService.isKnownType(entity)) + return appService.getDefaultRelPath(entity); + } 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_ENCODED_TAG) - || ConnectJcrUtils.isNodeType(entity, ResourcesTypes.RESOURCES_TAG)) - 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 String getMainNodeType(Node node) { + for (AppService appService : knownAppServices) { + String foundType = appService.getMainNodeType(node); + if (EclipseUiUtils.notEmpty(foundType)) + return foundType; + } + return null; } - public void setResourcesService(ResourcesService resourcesService) { - this.resourcesService = resourcesService; + @Override + public String getDefaultRelPath(Session session, String nodetype, String id) { + for (AppService appService : knownAppServices) { + if (appService.isKnownType(nodetype)) + return appService.getDefaultRelPath(session, nodetype, id); + } + return null; } - public void setActivitiesService(ActivitiesService activitiesService) { - this.activitiesService = activitiesService; + /** Insures the correct service is called on save */ + @Override + public Node saveEntity(Node entity, boolean publish) { + for (AppService appService : knownAppServices) { + if (appService.isKnownType(entity)) + return appService.saveEntity(entity, publish); + } + throw new SuiteException("Unknown NodeType for " + entity + ". Cannot save"); + // return AppService.super.saveEntity(entity, publish); } - public void setPeopleService(PeopleService peopleService) { - this.peopleService = peopleService; + @Override + public boolean isKnownType(Node entity) { + for (AppService appService : knownAppServices) { + if (appService.isKnownType(entity)) + return true; + } + return false; } - public void setDocumentsService(DocumentsService documentsService) { - this.documentsService = documentsService; + @Override + public boolean isKnownType(String nodeType) { + for (AppService appService : knownAppServices) { + if (appService.isKnownType(nodeType)) + return true; + } + return false; } - public void setTrackerService(TrackerService trackerService) { - this.trackerService = trackerService; + public void setKnownAppServices(List knownAppServices) { + this.knownAppServices = knownAppServices; } + }