]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-84: Created a Nuxeo-REST implementation of the CollectionObjectService interface.
authorRichard Millet <richard.millet@berkeley.edu>
Fri, 1 May 2009 17:53:09 +0000 (17:53 +0000)
committerRichard Millet <richard.millet@berkeley.edu>
Fri, 1 May 2009 17:53:09 +0000 (17:53 +0000)
services/collectionobject/src/main/java/org/collectionspace/services/CollectionObjectServiceNuxeoImpl.java [new file with mode: 0644]

diff --git a/services/collectionobject/src/main/java/org/collectionspace/services/CollectionObjectServiceNuxeoImpl.java b/services/collectionobject/src/main/java/org/collectionspace/services/CollectionObjectServiceNuxeoImpl.java
new file mode 100644 (file)
index 0000000..17fa1cf
--- /dev/null
@@ -0,0 +1,199 @@
+/**\r
+ * \r
+ */\r
+package org.collectionspace.services;\r
+\r
+import java.io.ByteArrayInputStream;\r
+import java.io.IOException;\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import org.collectionspace.services.nuxeo.NuxeoRESTClient;\r
+import org.collectionspace.services.nuxeo.CollectionSpaceServiceNuxeoImpl;\r
+import org.collectionspace.services.collectionobject.CollectionObject;\r
+import org.collectionspace.services.CollectionObjectJAXBSchema;\r
+\r
+import org.dom4j.Document;\r
+import org.dom4j.DocumentException;\r
+import org.dom4j.io.SAXReader;\r
+import org.restlet.resource.Representation;\r
+\r
+/**\r
+ * @author remillet\r
+ * \r
+ */\r
+public class CollectionObjectServiceNuxeoImpl extends\r
+               CollectionSpaceServiceNuxeoImpl implements CollectionObjectService {\r
+\r
+       final static String CO_NUXEO_DOCTYPE = "CollectionObject";\r
+       final static String CO_NUXEO_SCHEMA_NAME = "collectionobject";\r
+       final static String CO_NUXEO_DC_TITLE = "CollectionSpace-CollectionObject";\r
+\r
+       // replace WORKSPACE_UID for resource workspace\r
+       static String CS_COLLECTIONOBJECT_WORKSPACE_UID = "e4a8e3d4-0954-4c10-963a-cc4ed09d5112";\r
+\r
+       public Document deleteCollectionObject(String csid)\r
+                       throws DocumentException, IOException {\r
+\r
+               NuxeoRESTClient nxClient = getClient();\r
+               List<String> pathParams = new ArrayList<String>();\r
+               Map<String, String> queryParams = new HashMap<String, String>();\r
+\r
+               pathParams.add("default");\r
+               pathParams.add(csid);\r
+               pathParams.add("deleteDocumentRestlet");\r
+               Representation res = nxClient.get(pathParams, queryParams);\r
+               SAXReader reader = new SAXReader();\r
+               Document document = reader.read(res.getStream());\r
+               \r
+               return document;\r
+       }\r
+\r
+       public Document getCollectionObject(String csid) throws DocumentException,\r
+                       IOException {\r
+               List<String> pathParams = new ArrayList<String>();\r
+               Map<String, String> queryParams = new HashMap<String, String>();\r
+\r
+               pathParams.add("default");\r
+               pathParams.add(csid);\r
+               pathParams.add("export");\r
+               queryParams.put("format", "XML");\r
+\r
+               NuxeoRESTClient nxClient = getClient();\r
+               Representation res = nxClient.get(pathParams, queryParams);\r
+\r
+               SAXReader reader = new SAXReader();\r
+               Document document = reader.read(res.getStream());\r
+\r
+               return document;\r
+       }\r
+\r
+       public Document getCollectionObjectList() throws DocumentException,\r
+                       IOException {\r
+               Document result = null;\r
+\r
+               NuxeoRESTClient nxClient = getClient();\r
+               List<String> pathParams = new ArrayList<String>();\r
+               Map<String, String> queryParams = new HashMap<String, String>();\r
+               pathParams = Arrays.asList("default",\r
+                               CS_COLLECTIONOBJECT_WORKSPACE_UID, "browse");\r
+               Representation res = nxClient.get(pathParams, queryParams);\r
+               SAXReader reader = new SAXReader();\r
+               result = reader.read(res.getStream());\r
+\r
+               return result;\r
+       }\r
+\r
+       public Document postCollectionObject(CollectionObject co)\r
+                       throws DocumentException, IOException {\r
+               NuxeoRESTClient nxClient = getClient();\r
+\r
+               List<String> pathParams = new ArrayList<String>();\r
+               Map<String, String> queryParams = new HashMap<String, String>();\r
+               pathParams.add("default");\r
+               pathParams.add(CS_COLLECTIONOBJECT_WORKSPACE_UID);\r
+               pathParams.add("createDocument");\r
+               queryParams.put("docType", CO_NUXEO_DOCTYPE);\r
+\r
+               // a default title for the Dublin Core schema\r
+               queryParams.put("dublincore:title", CO_NUXEO_DC_TITLE);\r
+\r
+               // CollectionObject core values\r
+               queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                               + CollectionObjectJAXBSchema.OBJECT_NUMBER, co\r
+                               .getObjectNumber());\r
+               queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                               + CollectionObjectJAXBSchema.OTHER_NUMBER, co.getOtherNumber());\r
+               queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                               + CollectionObjectJAXBSchema.BRIEF_DESCRIPTION, co\r
+                               .getBriefDescription());\r
+               queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                               + CollectionObjectJAXBSchema.COMMENTS, co.getComments());\r
+               queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                               + CollectionObjectJAXBSchema.DIST_FEATURES, co\r
+                               .getDistFeatures());\r
+               queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                               + CollectionObjectJAXBSchema.OBJECT_NAME, co.getObjectName());\r
+               queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                               + CollectionObjectJAXBSchema.RESPONSIBLE_DEPT, co\r
+                               .getResponsibleDept());\r
+               queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                               + CollectionObjectJAXBSchema.TITLE, co.getTitle());\r
+\r
+               ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);\r
+               Representation res = nxClient.post(pathParams, queryParams, bais);\r
+\r
+               SAXReader reader = new SAXReader();\r
+               Document document = reader.read(res.getStream());\r
+\r
+               return document;\r
+       }\r
+\r
+       public Document putCollectionObject(String csid, CollectionObject theUpdate)\r
+                       throws DocumentException, IOException {\r
+               List<String> pathParams = new ArrayList<String>();\r
+               Map<String, String> queryParams = new HashMap<String, String>();\r
+               pathParams.add("default");\r
+               pathParams.add(csid);\r
+               pathParams.add("updateDocumentRestlet");\r
+\r
+               // todo: intelligent merge needed\r
+               if (theUpdate.getObjectNumber() != null) {\r
+                       queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                                       + CollectionObjectJAXBSchema.OBJECT_NUMBER, theUpdate\r
+                                       .getObjectNumber());\r
+               }\r
+\r
+               if (theUpdate.getOtherNumber() != null) {\r
+                       queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                                       + CollectionObjectJAXBSchema.OTHER_NUMBER, theUpdate\r
+                                       .getOtherNumber());\r
+               }\r
+\r
+               if (theUpdate.getBriefDescription() != null) {\r
+                       queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                                       + CollectionObjectJAXBSchema.BRIEF_DESCRIPTION, theUpdate\r
+                                       .getBriefDescription());\r
+               }\r
+\r
+               if (theUpdate.getComments() != null) {\r
+                       queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                                       + CollectionObjectJAXBSchema.COMMENTS, theUpdate\r
+                                       .getComments());\r
+               }\r
+\r
+               if (theUpdate.getDistFeatures() != null) {\r
+                       queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                                       + CollectionObjectJAXBSchema.DIST_FEATURES, theUpdate\r
+                                       .getDistFeatures());\r
+               }\r
+\r
+               if (theUpdate.getObjectName() != null) {\r
+                       queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                                       + CollectionObjectJAXBSchema.OBJECT_NAME, theUpdate\r
+                                       .getObjectName());\r
+               }\r
+\r
+               if (theUpdate.getResponsibleDept() != null) {\r
+                       queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                                       + CollectionObjectJAXBSchema.RESPONSIBLE_DEPT, theUpdate\r
+                                       .getResponsibleDept());\r
+               }\r
+\r
+               if (theUpdate.getTitle() != null) {\r
+                       queryParams.put(CO_NUXEO_SCHEMA_NAME + ":"\r
+                                       + CollectionObjectJAXBSchema.TITLE, theUpdate.getTitle());\r
+               }\r
+\r
+               NuxeoRESTClient nxClient = getClient();\r
+               Representation res = nxClient.get(pathParams, queryParams);\r
+               SAXReader reader = new SAXReader();\r
+               Document document = reader.read(res.getStream());\r
+\r
+               return document;\r
+       }\r
+\r
+}\r