4 package org.collectionspace.services.collectionobject.nuxeo;
\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
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
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
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
38 public class CollectionObjectServiceNuxeoImpl extends
\r
39 CollectionSpaceServiceNuxeoImpl implements CollectionObjectService {
\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
45 // replace WORKSPACE_UID for resource workspace
\r
46 static String CS_COLLECTIONOBJECT_WORKSPACE_UID = "9dd20955-fce7-4a87-8319-040ab9543f4f";
\r
48 public Document deleteCollectionObject(String csid)
\r
49 throws DocumentException, IOException {
\r
51 NuxeoRESTClient nxClient = getClient();
\r
52 List<String> pathParams = new ArrayList<String>();
\r
53 Map<String, String> queryParams = new HashMap<String, String>();
\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
65 public Document getCollectionObject(String csid) throws DocumentException,
\r
68 // Calling via Nuxeo Java API
\r
69 //getCollectionObjectViaJavaAPI(csid);
\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
75 pathParams.add("default");
\r
76 pathParams.add(csid);
\r
77 pathParams.add("export");
\r
78 queryParams.put("format", "XML");
\r
80 NuxeoRESTClient nxClient = getClient();
\r
81 Representation res = nxClient.get(pathParams, queryParams);
\r
83 SAXReader reader = new SAXReader();
\r
84 Document document = reader.read(res.getStream());
\r
90 public Document getCollectionObjectList() throws DocumentException,
\r
92 Document result = null;
\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
106 public Document postCollectionObject(CollectionObject co)
\r
107 throws DocumentException, IOException {
\r
108 NuxeoRESTClient nxClient = getClient();
\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
117 // a default title for the Dublin Core schema
\r
118 queryParams.put("dublincore:title", CO_NUXEO_DC_TITLE);
\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
142 ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
\r
143 Representation res = nxClient.post(pathParams, queryParams, bais);
\r
145 SAXReader reader = new SAXReader();
\r
146 Document document = reader.read(res.getStream());
\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
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
166 if (theUpdate.getOtherNumber() != null) {
\r
167 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
168 + CollectionObjectJAXBSchema.OTHER_NUMBER, theUpdate
\r
169 .getOtherNumber());
\r
172 if (theUpdate.getBriefDescription() != null) {
\r
173 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
174 + CollectionObjectJAXBSchema.BRIEF_DESCRIPTION, theUpdate
\r
175 .getBriefDescription());
\r
178 if (theUpdate.getComments() != null) {
\r
179 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
180 + CollectionObjectJAXBSchema.COMMENTS, theUpdate
\r
184 if (theUpdate.getDistFeatures() != null) {
\r
185 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
186 + CollectionObjectJAXBSchema.DIST_FEATURES, theUpdate
\r
187 .getDistFeatures());
\r
190 if (theUpdate.getObjectName() != null) {
\r
191 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
192 + CollectionObjectJAXBSchema.OBJECT_NAME, theUpdate
\r
196 if (theUpdate.getResponsibleDept() != null) {
\r
197 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
198 + CollectionObjectJAXBSchema.RESPONSIBLE_DEPT, theUpdate
\r
199 .getResponsibleDept());
\r
202 if (theUpdate.getTitle() != null) {
\r
203 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
204 + CollectionObjectJAXBSchema.TITLE, theUpdate.getTitle());
\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