4 package org.collectionspace.services.intake;
\r
6 import org.collectionspace.services.*;
\r
7 import java.io.ByteArrayInputStream;
\r
8 import java.io.IOException;
\r
9 import java.util.ArrayList;
\r
10 import java.util.Arrays;
\r
11 import java.util.HashMap;
\r
12 import java.util.List;
\r
13 import java.util.Map;
\r
15 import org.collectionspace.services.nuxeo.client.rest.NuxeoRESTClient;
\r
16 import org.collectionspace.services.nuxeo.CollectionSpaceServiceNuxeoImpl;
\r
17 import org.collectionspace.services.intake.Intake;
\r
18 import org.collectionspace.services.IntakeJAXBSchema;
\r
20 import org.dom4j.Document;
\r
21 import org.dom4j.DocumentException;
\r
22 import org.dom4j.io.SAXReader;
\r
23 import org.restlet.resource.Representation;
\r
29 public class IntakeServiceNuxeoImpl extends
\r
30 CollectionSpaceServiceNuxeoImpl implements IntakeService {
\r
32 final static String INTAKE_NUXEO_DOCTYPE = "Intake";
\r
33 final static String INTAKE_NUXEO_SCHEMA_NAME = "intake";
\r
34 final static String INTAKE_NUXEO_DC_TITLE = "CollectionSpace-Intake";
\r
36 // replace WORKSPACE_UID for resource workspace
\r
37 static String CS_INTAKE_WORKSPACE_UID = "c04210c4-9426-475f-b4ee-aa3d6aa4b97c";
\r
39 public Document deleteIntake(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 getIntake(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 getIntakeList() 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_INTAKE_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 postIntake(Intake 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_INTAKE_WORKSPACE_UID);
\r
99 pathParams.add("createDocument");
\r
100 queryParams.put("docType", INTAKE_NUXEO_DOCTYPE);
\r
102 // a default title for the Dublin Core schema
\r
103 queryParams.put("dublincore:title", INTAKE_NUXEO_DC_TITLE);
\r
105 // Intake core values
\r
106 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
107 + IntakeJAXBSchema.CURRENT_OWNER, co
\r
108 .getCurrentOwner());
\r
109 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
110 + IntakeJAXBSchema.DEPOSITOR, co.getDepositor());
\r
111 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
112 + IntakeJAXBSchema.DEPOSITORS_REQUIREMENTS, co
\r
113 .getDepositorsRequirements());
\r
114 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
115 + IntakeJAXBSchema.ENTRY_DATE, co.getEntryDate());
\r
116 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
117 + IntakeJAXBSchema.ENTRY_METHOD, co
\r
118 .getEntryMethod());
\r
119 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
120 + IntakeJAXBSchema.ENTRY_NOTE, co.getEntryNote());
\r
121 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
122 + IntakeJAXBSchema.ENTRY_NUMBER, co
\r
123 .getEntryNumber());
\r
124 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
125 + IntakeJAXBSchema.ENTRY_REASON, co.getEntryReason());
\r
126 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
127 + IntakeJAXBSchema.PACKING_NOTE, co.getPackingNote());
\r
128 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
129 + IntakeJAXBSchema.RETURN_DATE, co.getReturnDate());
\r
131 ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
\r
132 Representation res = nxClient.post(pathParams, queryParams, bais);
\r
134 SAXReader reader = new SAXReader();
\r
135 Document document = reader.read(res.getStream());
\r
140 public Document putIntake(String csid, Intake theUpdate)
\r
141 throws DocumentException, IOException {
\r
142 List<String> pathParams = new ArrayList<String>();
\r
143 Map<String, String> queryParams = new HashMap<String, String>();
\r
144 pathParams.add("default");
\r
145 pathParams.add(csid);
\r
146 pathParams.add("updateDocumentRestlet");
\r
148 // todo: intelligent merge needed
\r
149 if (theUpdate.getCurrentOwner() != null) {
\r
150 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
151 + IntakeJAXBSchema.CURRENT_OWNER, theUpdate.getCurrentOwner());
\r
154 if (theUpdate.getDepositor() != null) {
\r
155 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
156 + IntakeJAXBSchema.DEPOSITOR, theUpdate.getDepositor());
\r
159 if (theUpdate.getDepositorsRequirements() != null) {
\r
160 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
161 + IntakeJAXBSchema.DEPOSITORS_REQUIREMENTS, theUpdate.getDepositorsRequirements());
\r
164 if (theUpdate.getEntryDate() != null) {
\r
165 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
166 + IntakeJAXBSchema.ENTRY_DATE, theUpdate.getEntryDate());
\r
169 if (theUpdate.getEntryMethod() != null) {
\r
170 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
171 + IntakeJAXBSchema.ENTRY_METHOD, theUpdate.getEntryMethod());
\r
174 if (theUpdate.getEntryNote() != null) {
\r
175 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
176 + IntakeJAXBSchema.ENTRY_NOTE, theUpdate.getEntryNote());
\r
179 if (theUpdate.getEntryNumber() != null) {
\r
180 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
181 + IntakeJAXBSchema.ENTRY_NUMBER, theUpdate.getEntryNumber());
\r
184 if (theUpdate.getEntryReason() != null) {
\r
185 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
186 + IntakeJAXBSchema.ENTRY_REASON, theUpdate.getEntryReason());
\r
189 if (theUpdate.getPackingNote() != null) {
\r
190 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
191 + IntakeJAXBSchema.PACKING_NOTE, theUpdate.getPackingNote());
\r
194 if (theUpdate.getReturnDate() != null) {
\r
195 queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"
\r
196 + IntakeJAXBSchema.RETURN_DATE, theUpdate.getReturnDate());
\r
199 NuxeoRESTClient nxClient = getClient();
\r
200 Representation res = nxClient.get(pathParams, queryParams);
\r
201 SAXReader reader = new SAXReader();
\r
202 Document document = reader.read(res.getStream());
\r