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