1 package org.argeo.connect.core;
2
3 import java.util.List;
4
5 import javax.jcr.Node;
6 import javax.jcr.RepositoryException;
7 import javax.jcr.Session;
8
9 import org.argeo.connect.AppService;
10 import org.argeo.connect.ConnectException;
11 import org.argeo.connect.SystemAppService;
12 import org.argeo.eclipse.ui.EclipseUiUtils;
13
14 public class DefaultSystemAppService extends AbstractAppService implements SystemAppService {
15
16
17
18 private List<AppService> knownAppServices;
19
20 @Override
21 public Node publishEntity(Node parent, String nodeType, Node srcNode, boolean removeSrcNode)
22 throws RepositoryException {
23 for (AppService appService : knownAppServices) {
24 if (appService.isKnownType(nodeType))
25 return appService.publishEntity(parent, nodeType, srcNode, removeSrcNode);
26 }
27 return null;
28 }
29
30 @Override
31 public String getAppBaseName() {
32 return OfficeConstants.SUITE_APP_BASE_NAME;
33 }
34
35 @Override
36 public String getBaseRelPath(String nodeType) {
37 for (AppService appService : knownAppServices) {
38 if (appService.isKnownType(nodeType))
39 return appService.getBaseRelPath(nodeType);
40 }
41 return null;
42
43 }
44
45 @Override
46 public String getDefaultRelPath(Node entity) throws RepositoryException {
47 for (AppService appService : knownAppServices) {
48 if (appService.isKnownType(entity))
49 return appService.getDefaultRelPath(entity);
50 }
51 return null;
52 }
53
54 @Override
55 public String getMainNodeType(Node node) {
56 for (AppService appService : knownAppServices) {
57 String foundType = appService.getMainNodeType(node);
58 if (EclipseUiUtils.notEmpty(foundType))
59 return foundType;
60 }
61 return null;
62 }
63
64 @Override
65 public String getDefaultRelPath(Session session, String nodetype, String id) {
66 for (AppService appService : knownAppServices) {
67 if (appService.isKnownType(nodetype))
68 return appService.getDefaultRelPath(session, nodetype, id);
69 }
70 return null;
71 }
72
73
74 @Override
75 public Node saveEntity(Node entity, boolean publish) {
76 for (AppService appService : knownAppServices) {
77 if (appService.isKnownType(entity))
78 return appService.saveEntity(entity, publish);
79 }
80 throw new ConnectException("Unknown NodeType for " + entity + ". Cannot save");
81
82 }
83
84 @Override
85 public boolean isKnownType(Node entity) {
86 for (AppService appService : knownAppServices) {
87 if (appService.isKnownType(entity))
88 return true;
89 }
90 return false;
91 }
92
93 @Override
94 public boolean isKnownType(String nodeType) {
95 for (AppService appService : knownAppServices) {
96 if (appService.isKnownType(nodeType))
97 return true;
98 }
99 return false;
100 }
101
102 public void setKnownAppServices(List<AppService> knownAppServices) {
103 this.knownAppServices = knownAppServices;
104 }
105
106 }