]> git.aero2k.de Git - tmp/jakarta-migration.git/blob
63f5ee55ca6009cf92a4475e9d0a809a3cc7d868
[tmp/jakarta-migration.git] /
1 /**\r
2  * \r
3  */\r
4 package org.collectionspace.services.intake;\r
5 \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
14 \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
19 \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
24 \r
25 /**\r
26  * @author remillet\r
27  * \r
28  */\r
29 public class IntakeServiceNuxeoImpl extends\r
30                 CollectionSpaceServiceNuxeoImpl implements IntakeService {\r
31 \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
35 \r
36         // replace WORKSPACE_UID for resource workspace\r
37         static String CS_INTAKE_WORKSPACE_UID = "c04210c4-9426-475f-b4ee-aa3d6aa4b97c";\r
38 \r
39         public Document deleteIntake(String csid)\r
40                         throws DocumentException, IOException {\r
41 \r
42                 NuxeoRESTClient nxClient = getClient();\r
43                 List<String> pathParams = new ArrayList<String>();\r
44                 Map<String, String> queryParams = new HashMap<String, String>();\r
45 \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
52                 \r
53                 return document;\r
54         }\r
55 \r
56         public Document getIntake(String csid) throws DocumentException,\r
57                         IOException {\r
58                 List<String> pathParams = new ArrayList<String>();\r
59                 Map<String, String> queryParams = new HashMap<String, String>();\r
60 \r
61                 pathParams.add("default");\r
62                 pathParams.add(csid);\r
63                 pathParams.add("export");\r
64                 queryParams.put("format", "XML");\r
65 \r
66                 NuxeoRESTClient nxClient = getClient();\r
67                 Representation res = nxClient.get(pathParams, queryParams);\r
68 \r
69                 SAXReader reader = new SAXReader();\r
70                 Document document = reader.read(res.getStream());\r
71 \r
72                 return document;\r
73         }\r
74 \r
75         public Document getIntakeList() throws DocumentException,\r
76                         IOException {\r
77                 Document result = null;\r
78 \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
87 \r
88                 return result;\r
89         }\r
90 \r
91         public Document postIntake(Intake co)\r
92                         throws DocumentException, IOException {\r
93                 NuxeoRESTClient nxClient = getClient();\r
94 \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
101 \r
102                 // a default title for the Dublin Core schema\r
103                 queryParams.put("dublincore:title", INTAKE_NUXEO_DC_TITLE);\r
104 \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
130 \r
131                 ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);\r
132                 Representation res = nxClient.post(pathParams, queryParams, bais);\r
133 \r
134                 SAXReader reader = new SAXReader();\r
135                 Document document = reader.read(res.getStream());\r
136 \r
137                 return document;\r
138         }\r
139 \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
147 \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
152                 }\r
153 \r
154                 if (theUpdate.getDepositor() != null) {\r
155                         queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"\r
156                                         + IntakeJAXBSchema.DEPOSITOR, theUpdate.getDepositor());\r
157                 }\r
158 \r
159                 if (theUpdate.getDepositorsRequirements() != null) {\r
160                         queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"\r
161                                         + IntakeJAXBSchema.DEPOSITORS_REQUIREMENTS, theUpdate.getDepositorsRequirements());\r
162                 }\r
163 \r
164                 if (theUpdate.getEntryDate() != null) {\r
165                         queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"\r
166                                         + IntakeJAXBSchema.ENTRY_DATE, theUpdate.getEntryDate());\r
167                 }\r
168 \r
169                 if (theUpdate.getEntryMethod() != null) {\r
170                         queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"\r
171                                         + IntakeJAXBSchema.ENTRY_METHOD, theUpdate.getEntryMethod());\r
172                 }\r
173 \r
174                 if (theUpdate.getEntryNote() != null) {\r
175                         queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"\r
176                                         + IntakeJAXBSchema.ENTRY_NOTE, theUpdate.getEntryNote());\r
177                 }\r
178 \r
179                 if (theUpdate.getEntryNumber() != null) {\r
180                         queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"\r
181                                         + IntakeJAXBSchema.ENTRY_NUMBER, theUpdate.getEntryNumber());\r
182                 }\r
183 \r
184                 if (theUpdate.getEntryReason() != null) {\r
185                         queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"\r
186                                         + IntakeJAXBSchema.ENTRY_REASON, theUpdate.getEntryReason());\r
187                 }\r
188 \r
189                 if (theUpdate.getPackingNote() != null) {\r
190                         queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"\r
191                                         + IntakeJAXBSchema.PACKING_NOTE, theUpdate.getPackingNote());\r
192                 }\r
193 \r
194                 if (theUpdate.getReturnDate() != null) {\r
195                         queryParams.put(INTAKE_NUXEO_SCHEMA_NAME + ":"\r
196                                         + IntakeJAXBSchema.RETURN_DATE, theUpdate.getReturnDate());\r
197                 }\r
198 \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
203 \r
204                 return document;\r
205         }\r
206 \r
207 }\r