]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
086dd2e4a159c5de22e75ffcffbfb51ab6c14215
[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 = "9dd20955-fce7-4a87-8319-040ab9543f4f";\r
37 \r
38         public Document deleteCollectionObject(String csid)\r
39                         throws DocumentException, IOException {\r
40 \r
41                 NuxeoRESTClient nxClient = getClient();\r
42                 List<String> pathParams = new ArrayList<String>();\r
43                 Map<String, String> queryParams = new HashMap<String, String>();\r
44 \r
45                 pathParams.add("default");\r
46                 pathParams.add(csid);\r
47                 pathParams.add("deleteDocumentRestlet");\r
48                 Representation res = nxClient.get(pathParams, queryParams);\r
49                 SAXReader reader = new SAXReader();\r
50                 Document document = reader.read(res.getStream());\r
51                 \r
52                 return document;\r
53         }\r
54 \r
55         public Document getCollectionObject(String csid) throws DocumentException,\r
56                         IOException {\r
57                 List<String> pathParams = new ArrayList<String>();\r
58                 Map<String, String> queryParams = new HashMap<String, String>();\r
59 \r
60                 pathParams.add("default");\r
61                 pathParams.add(csid);\r
62                 pathParams.add("export");\r
63                 queryParams.put("format", "XML");\r
64 \r
65                 NuxeoRESTClient nxClient = getClient();\r
66                 Representation res = nxClient.get(pathParams, queryParams);\r
67 \r
68                 SAXReader reader = new SAXReader();\r
69                 Document document = reader.read(res.getStream());\r
70 \r
71                 return document;\r
72         }\r
73 \r
74         public Document getCollectionObjectList() throws DocumentException,\r
75                         IOException {\r
76                 Document result = null;\r
77 \r
78                 NuxeoRESTClient nxClient = getClient();\r
79                 List<String> pathParams = new ArrayList<String>();\r
80                 Map<String, String> queryParams = new HashMap<String, String>();\r
81                 pathParams = Arrays.asList("default",\r
82                                 CS_COLLECTIONOBJECT_WORKSPACE_UID, "browse");\r
83                 Representation res = nxClient.get(pathParams, queryParams);\r
84                 SAXReader reader = new SAXReader();\r
85                 result = reader.read(res.getStream());\r
86 \r
87                 return result;\r
88         }\r
89 \r
90         public Document postCollectionObject(CollectionObject co)\r
91                         throws DocumentException, IOException {\r
92                 NuxeoRESTClient nxClient = getClient();\r
93 \r
94                 List<String> pathParams = new ArrayList<String>();\r
95                 Map<String, String> queryParams = new HashMap<String, String>();\r
96                 pathParams.add("default");\r
97                 pathParams.add(CS_COLLECTIONOBJECT_WORKSPACE_UID);\r
98                 pathParams.add("createDocument");\r
99                 queryParams.put("docType", CO_NUXEO_DOCTYPE);\r
100 \r
101                 // a default title for the Dublin Core schema\r
102                 queryParams.put("dublincore:title", CO_NUXEO_DC_TITLE);\r
103 \r
104                 // CollectionObject core values\r
105                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
106                                 + CollectionObjectJAXBSchema.OBJECT_NUMBER, co\r
107                                 .getObjectNumber());\r
108                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
109                                 + CollectionObjectJAXBSchema.OTHER_NUMBER, co.getOtherNumber());\r
110                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
111                                 + CollectionObjectJAXBSchema.BRIEF_DESCRIPTION, co\r
112                                 .getBriefDescription());\r
113                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
114                                 + CollectionObjectJAXBSchema.COMMENTS, co.getComments());\r
115                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
116                                 + CollectionObjectJAXBSchema.DIST_FEATURES, co\r
117                                 .getDistFeatures());\r
118                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
119                                 + CollectionObjectJAXBSchema.OBJECT_NAME, co.getObjectName());\r
120                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
121                                 + CollectionObjectJAXBSchema.RESPONSIBLE_DEPT, co\r
122                                 .getResponsibleDept());\r
123                 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
124                                 + CollectionObjectJAXBSchema.TITLE, co.getTitle());\r
125 \r
126                 ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);\r
127                 Representation res = nxClient.post(pathParams, queryParams, bais);\r
128 \r
129                 SAXReader reader = new SAXReader();\r
130                 Document document = reader.read(res.getStream());\r
131 \r
132                 return document;\r
133         }\r
134 \r
135         public Document putCollectionObject(String csid, CollectionObject theUpdate)\r
136                         throws DocumentException, IOException {\r
137                 List<String> pathParams = new ArrayList<String>();\r
138                 Map<String, String> queryParams = new HashMap<String, String>();\r
139                 pathParams.add("default");\r
140                 pathParams.add(csid);\r
141                 pathParams.add("updateDocumentRestlet");\r
142 \r
143                 // todo: intelligent merge needed\r
144                 if (theUpdate.getObjectNumber() != null) {\r
145                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
146                                         + CollectionObjectJAXBSchema.OBJECT_NUMBER, theUpdate\r
147                                         .getObjectNumber());\r
148                 }\r
149 \r
150                 if (theUpdate.getOtherNumber() != null) {\r
151                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
152                                         + CollectionObjectJAXBSchema.OTHER_NUMBER, theUpdate\r
153                                         .getOtherNumber());\r
154                 }\r
155 \r
156                 if (theUpdate.getBriefDescription() != null) {\r
157                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
158                                         + CollectionObjectJAXBSchema.BRIEF_DESCRIPTION, theUpdate\r
159                                         .getBriefDescription());\r
160                 }\r
161 \r
162                 if (theUpdate.getComments() != null) {\r
163                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
164                                         + CollectionObjectJAXBSchema.COMMENTS, theUpdate\r
165                                         .getComments());\r
166                 }\r
167 \r
168                 if (theUpdate.getDistFeatures() != null) {\r
169                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
170                                         + CollectionObjectJAXBSchema.DIST_FEATURES, theUpdate\r
171                                         .getDistFeatures());\r
172                 }\r
173 \r
174                 if (theUpdate.getObjectName() != null) {\r
175                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
176                                         + CollectionObjectJAXBSchema.OBJECT_NAME, theUpdate\r
177                                         .getObjectName());\r
178                 }\r
179 \r
180                 if (theUpdate.getResponsibleDept() != null) {\r
181                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
182                                         + CollectionObjectJAXBSchema.RESPONSIBLE_DEPT, theUpdate\r
183                                         .getResponsibleDept());\r
184                 }\r
185 \r
186                 if (theUpdate.getTitle() != null) {\r
187                         queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
188                                         + CollectionObjectJAXBSchema.TITLE, theUpdate.getTitle());\r
189                 }\r
190 \r
191                 NuxeoRESTClient nxClient = getClient();\r
192                 Representation res = nxClient.get(pathParams, queryParams);\r
193                 SAXReader reader = new SAXReader();\r
194                 Document document = reader.read(res.getStream());\r
195 \r
196                 return document;\r
197         }\r
198 \r
199 }\r