4 package org.collectionspace.services;
\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
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
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
28 public class CollectionObjectServiceNuxeoImpl extends
\r
29 CollectionSpaceServiceNuxeoImpl implements CollectionObjectService {
\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
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
39 public Document deleteCollectionObject(String csid)
\r
40 throws DocumentException, IOException {
\r
42 NuxeoRESTClient nxClient = getClient();
\r
43 List<String> pathParams = new ArrayList<String>();
\r
44 Map<String, String> queryParams = new HashMap<String, String>();
\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
56 public Document getCollectionObject(String csid) throws DocumentException,
\r
58 List<String> pathParams = new ArrayList<String>();
\r
59 Map<String, String> queryParams = new HashMap<String, String>();
\r
61 pathParams.add("default");
\r
62 pathParams.add(csid);
\r
63 pathParams.add("export");
\r
64 queryParams.put("format", "XML");
\r
66 NuxeoRESTClient nxClient = getClient();
\r
67 Representation res = nxClient.get(pathParams, queryParams);
\r
69 SAXReader reader = new SAXReader();
\r
70 Document document = reader.read(res.getStream());
\r
75 public Document getCollectionObjectList() throws DocumentException,
\r
77 Document result = null;
\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
91 public Document postCollectionObject(CollectionObject co)
\r
92 throws DocumentException, IOException {
\r
93 NuxeoRESTClient nxClient = getClient();
\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
102 // a default title for the Dublin Core schema
\r
103 queryParams.put("dublincore:title", CO_NUXEO_DC_TITLE);
\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
127 ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
\r
128 Representation res = nxClient.post(pathParams, queryParams, bais);
\r
130 SAXReader reader = new SAXReader();
\r
131 Document document = reader.read(res.getStream());
\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
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
151 if (theUpdate.getOtherNumber() != null) {
\r
152 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
153 + CollectionObjectJAXBSchema.OTHER_NUMBER, theUpdate
\r
154 .getOtherNumber());
\r
157 if (theUpdate.getBriefDescription() != null) {
\r
158 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
159 + CollectionObjectJAXBSchema.BRIEF_DESCRIPTION, theUpdate
\r
160 .getBriefDescription());
\r
163 if (theUpdate.getComments() != null) {
\r
164 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
165 + CollectionObjectJAXBSchema.COMMENTS, theUpdate
\r
169 if (theUpdate.getDistFeatures() != null) {
\r
170 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
171 + CollectionObjectJAXBSchema.DIST_FEATURES, theUpdate
\r
172 .getDistFeatures());
\r
175 if (theUpdate.getObjectName() != null) {
\r
176 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
177 + CollectionObjectJAXBSchema.OBJECT_NAME, theUpdate
\r
181 if (theUpdate.getResponsibleDept() != null) {
\r
182 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
183 + CollectionObjectJAXBSchema.RESPONSIBLE_DEPT, theUpdate
\r
184 .getResponsibleDept());
\r
187 if (theUpdate.getTitle() != null) {
\r
188 queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"
\r
189 + CollectionObjectJAXBSchema.TITLE, theUpdate.getTitle());
\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