]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
cf3a9679e429448ce32b714b249bcfb3c26958d1
[tmp/jakarta-migration.git] /
1 /**\r
2  * \r
3  */\r
4 package org.collectionspace.services;\r
5 \r
6 import java.io.ByteArrayInputStream;\r
7 import java.io.IOException;\r
8 import java.util.ArrayList;\r
9 import java.util.Arrays;\r
10 import java.util.HashMap;\r
11 import java.util.List;\r
12 import java.util.Map;\r
13 \r
14 import org.collectionspace.services.nuxeo.NuxeoRESTClient;\r
15 import org.collectionspace.services.nuxeo.CollectionSpaceServiceNuxeoImpl;\r
16 import org.collectionspace.services.collectionobject.CollectionObject;\r
17 import org.collectionspace.services.CollectionObjectJAXBSchema;\r
18 \r
19 import org.dom4j.Document;\r
20 import org.dom4j.DocumentException;\r
21 import org.dom4j.io.SAXReader;\r
22 import org.restlet.resource.Representation;\r
23 \r
24 /**\r
25  * @author remillet\r
26  * \r
27  */\r
28 public class CollectionObjectServiceNuxeoImpl extends\r
29                 CollectionSpaceServiceNuxeoImpl implements CollectionObjectService {\r
30 \r
31         final static String CO_NUXEO_DOCTYPE = "CollectionObject";\r
32         final static String CO_NUXEO_SCHEMA_NAME = "collectionobject";\r
33         final static String CO_NUXEO_DC_TITLE = "CollectionSpace-CollectionObject";\r
34 \r
35         // replace WORKSPACE_UID for resource workspace\r
36         static String CS_COLLECTIONOBJECT_WORKSPACE_UID = "ed110dfd-34e2-4870-bfdb-3be13d19c3f9";\r
37             //"e4a8e3d4-0954-4c10-963a-cc4ed09d5112";\r
38 \r
39         public Document deleteCollectionObject(String csid)\r
40                         throws DocumentException, IOException {\r
41 \r
42                 NuxeoRESTClient nxClient = getClient();\r
43                 List<String> pathParams = new ArrayList<String>();\r
44                 Map<String, String> queryParams = new HashMap<String, String>();\r
45 \r
46                 pathParams.add("default");\r
47                 pathParams.add(csid);\r
48                 pathParams.add("deleteDocumentRestlet");\r
49                 Representation res = nxClient.get(pathParams, queryParams);\r
50                 SAXReader reader = new SAXReader();\r
51                 Document document = reader.read(res.getStream());\r
52                 \r
53                 return document;\r
54         }\r
55 \r
56         public Document getCollectionObject(String csid) throws DocumentException,\r
57                         IOException {\r
58                 List<String> pathParams = new ArrayList<String>();\r
59                 Map<String, String> queryParams = new HashMap<String, String>();\r
60 \r
61                 pathParams.add("default");\r
62                 pathParams.add(csid);\r
63                 pathParams.add("export");\r
64                 queryParams.put("format", "XML");\r
65 \r
66                 NuxeoRESTClient nxClient = getClient();\r
67                 Representation res = nxClient.get(pathParams, queryParams);\r
68 \r
69                 SAXReader reader = new SAXReader();\r
70                 Document document = reader.read(res.getStream());\r
71 \r
72                 return document;\r
73         }\r
74 \r
75         public Document getCollectionObjectList() throws DocumentException,\r
76                         IOException {\r
77                 Document result = null;\r
78 \r
79                 NuxeoRESTClient nxClient = getClient();\r
80                 List<String> pathParams = new ArrayList<String>();\r
81                 Map<String, String> queryParams = new HashMap<String, String>();\r
82                 pathParams = Arrays.asList("default",\r
83                                 CS_COLLECTIONOBJECT_WORKSPACE_UID, "browse");\r
84                 Representation res = nxClient.get(pathParams, queryParams);\r
85                 SAXReader reader = new SAXReader();\r
86                 result = reader.read(res.getStream());\r
87 \r
88                 return result;\r
89         }\r
90 \r
91         public Document postCollectionObject(CollectionObject co)\r
92                         throws DocumentException, IOException {\r
93                 NuxeoRESTClient nxClient = getClient();\r
94 \r
95                 List<String> pathParams = new ArrayList<String>();\r
96                 Map<String, String> queryParams = new HashMap<String, String>();\r
97                 pathParams.add("default");\r
98                 pathParams.add(CS_COLLECTIONOBJECT_WORKSPACE_UID);\r
99                 pathParams.add("createDocument");\r
100                 queryParams.put("docType", CO_NUXEO_DOCTYPE);\r
101 \r
102                 // a default title for the Dublin Core schema\r
103                 queryParams.put("dublincore:title", CO_NUXEO_DC_TITLE);\r
104 \r
105                 // CollectionObject core values\r
106                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
107                                 + CollectionObjectJAXBSchema.OBJECT_NUMBER, co\r
108                                 .getObjectNumber());\r
109                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
110                                 + CollectionObjectJAXBSchema.OTHER_NUMBER, co.getOtherNumber());\r
111                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
112                                 + CollectionObjectJAXBSchema.BRIEF_DESCRIPTION, co\r
113                                 .getBriefDescription());\r
114                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
115                                 + CollectionObjectJAXBSchema.COMMENTS, co.getComments());\r
116                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
117                                 + CollectionObjectJAXBSchema.DIST_FEATURES, co\r
118                                 .getDistFeatures());\r
119                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
120                                 + CollectionObjectJAXBSchema.OBJECT_NAME, co.getObjectName());\r
121                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
122                                 + CollectionObjectJAXBSchema.RESPONSIBLE_DEPT, co\r
123                                 .getResponsibleDept());\r
124                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
125                                 + CollectionObjectJAXBSchema.TITLE, co.getTitle());\r
126 \r
127                 ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);\r
128                 Representation res = nxClient.post(pathParams, queryParams, bais);\r
129 \r
130                 SAXReader reader = new SAXReader();\r
131                 Document document = reader.read(res.getStream());\r
132 \r
133                 return document;\r
134         }\r
135 \r
136         public Document putCollectionObject(String csid, CollectionObject theUpdate)\r
137                         throws DocumentException, IOException {\r
138                 List<String> pathParams = new ArrayList<String>();\r
139                 Map<String, String> queryParams = new HashMap<String, String>();\r
140                 pathParams.add("default");\r
141                 pathParams.add(csid);\r
142                 pathParams.add("updateDocumentRestlet");\r
143 \r
144                 // todo: intelligent merge needed\r
145                 if (theUpdate.getObjectNumber() != null) {\r
146                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
147                                         + CollectionObjectJAXBSchema.OBJECT_NUMBER, theUpdate\r
148                                         .getObjectNumber());\r
149                 }\r
150 \r
151                 if (theUpdate.getOtherNumber() != null) {\r
152                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
153                                         + CollectionObjectJAXBSchema.OTHER_NUMBER, theUpdate\r
154                                         .getOtherNumber());\r
155                 }\r
156 \r
157                 if (theUpdate.getBriefDescription() != null) {\r
158                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
159                                         + CollectionObjectJAXBSchema.BRIEF_DESCRIPTION, theUpdate\r
160                                         .getBriefDescription());\r
161                 }\r
162 \r
163                 if (theUpdate.getComments() != null) {\r
164                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
165                                         + CollectionObjectJAXBSchema.COMMENTS, theUpdate\r
166                                         .getComments());\r
167                 }\r
168 \r
169                 if (theUpdate.getDistFeatures() != null) {\r
170                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
171                                         + CollectionObjectJAXBSchema.DIST_FEATURES, theUpdate\r
172                                         .getDistFeatures());\r
173                 }\r
174 \r
175                 if (theUpdate.getObjectName() != null) {\r
176                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
177                                         + CollectionObjectJAXBSchema.OBJECT_NAME, theUpdate\r
178                                         .getObjectName());\r
179                 }\r
180 \r
181                 if (theUpdate.getResponsibleDept() != null) {\r
182                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
183                                         + CollectionObjectJAXBSchema.RESPONSIBLE_DEPT, theUpdate\r
184                                         .getResponsibleDept());\r
185                 }\r
186 \r
187                 if (theUpdate.getTitle() != null) {\r
188                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
189                                         + CollectionObjectJAXBSchema.TITLE, theUpdate.getTitle());\r
190                 }\r
191 \r
192                 NuxeoRESTClient nxClient = getClient();\r
193                 Representation res = nxClient.get(pathParams, queryParams);\r
194                 SAXReader reader = new SAXReader();\r
195                 Document document = reader.read(res.getStream());\r
196 \r
197                 return document;\r
198         }\r
199 \r
200 }\r