Mercurial > dive4elements > framework
comparison artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java @ 189:fbaeb5931d10
Implemented addCollectionArtifact() and listCollectionArtifacts() of the artifact database.
artifacts/trunk@1419 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 07 Mar 2011 16:30:45 +0000 |
parents | 9b8923043a38 |
children | 7acf4a325bfe |
comparison
equal
deleted
inserted
replaced
188:946e2245a6c0 | 189:fbaeb5931d10 |
---|---|
18 import de.intevation.artifacts.ArtifactFactory; | 18 import de.intevation.artifacts.ArtifactFactory; |
19 import de.intevation.artifacts.ArtifactNamespaceContext; | 19 import de.intevation.artifacts.ArtifactNamespaceContext; |
20 import de.intevation.artifacts.ArtifactSerializer; | 20 import de.intevation.artifacts.ArtifactSerializer; |
21 import de.intevation.artifacts.CallContext; | 21 import de.intevation.artifacts.CallContext; |
22 import de.intevation.artifacts.CallMeta; | 22 import de.intevation.artifacts.CallMeta; |
23 import de.intevation.artifacts.CollectionItem; | |
23 import de.intevation.artifacts.Service; | 24 import de.intevation.artifacts.Service; |
24 import de.intevation.artifacts.ServiceFactory; | 25 import de.intevation.artifacts.ServiceFactory; |
25 import de.intevation.artifacts.User; | 26 import de.intevation.artifacts.User; |
26 import de.intevation.artifacts.UserFactory; | 27 import de.intevation.artifacts.UserFactory; |
27 | 28 |
210 * XPath to figure out the name of a collection described in the incoming | 211 * XPath to figure out the name of a collection described in the incoming |
211 * document. | 212 * document. |
212 */ | 213 */ |
213 public static final String XPATH_COLLECTION_NAME = | 214 public static final String XPATH_COLLECTION_NAME = |
214 "/art:action/art:type/art:collection/@name"; | 215 "/art:action/art:type/art:collection/@name"; |
216 | |
217 /** | |
218 * XPath to figure out the attributes for an artifact that is put into a | |
219 * collection. | |
220 */ | |
221 public static final String XPATH_COLLECTION_ITEM_ATTRIBUTE = | |
222 "/art:action/art:type/art:artifact/art:attribute"; | |
215 | 223 |
216 | 224 |
217 /** | 225 /** |
218 * Inner class that implements the call context handed | 226 * Inner class that implements the call context handed |
219 * to the methods calls describe(), feed(), etc. of the artifact. | 227 * to the methods calls describe(), feed(), etc. of the artifact. |
1240 Document attribute, CallMeta callMeta) | 1248 Document attribute, CallMeta callMeta) |
1241 throws ArtifactDatabaseException { | 1249 throws ArtifactDatabaseException { |
1242 throw new ArtifactDatabaseException("Not implemented, yet!"); | 1250 throw new ArtifactDatabaseException("Not implemented, yet!"); |
1243 } | 1251 } |
1244 | 1252 |
1245 public Document addCollectionArtifact(String collectionId, String artifactId, | 1253 public Document addCollectionArtifact( |
1246 CallMeta callMeta) throws ArtifactDatabaseException | 1254 String collectionId, |
1255 String artifactId, | |
1256 Document input, | |
1257 CallMeta callMeta) | |
1258 throws ArtifactDatabaseException | |
1247 { | 1259 { |
1248 logger.debug( | 1260 logger.debug( |
1249 "Add artifact '" + artifactId + "' collection '" +collectionId+"'"); | 1261 "Add artifact '" + artifactId + "' collection '" +collectionId+"'"); |
1262 | |
1263 Document attr = XMLUtils.newDocument(); | |
1264 | |
1265 Node attrNode = (Node) XMLUtils.xpath( | |
1266 input, | |
1267 XPATH_COLLECTION_ITEM_ATTRIBUTE, | |
1268 XPathConstants.NODE, | |
1269 ArtifactNamespaceContext.INSTANCE); | |
1270 | |
1271 if (attrNode != null) { | |
1272 attr.appendChild(attr.importNode(attrNode, true)); | |
1273 } | |
1250 | 1274 |
1251 boolean success = backend.addCollectionArtifact( | 1275 boolean success = backend.addCollectionArtifact( |
1252 collectionId, | 1276 collectionId, |
1253 artifactId, | 1277 artifactId, |
1254 null); // XXX: Needed to be extracted from input | 1278 attr); |
1255 | 1279 |
1256 Document result = XMLUtils.newDocument(); | 1280 Document result = XMLUtils.newDocument(); |
1257 | 1281 |
1258 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( | 1282 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( |
1259 result, | 1283 result, |
1272 CallMeta callMeta) throws ArtifactDatabaseException { | 1296 CallMeta callMeta) throws ArtifactDatabaseException { |
1273 throw new ArtifactDatabaseException("Not implemented, yet!"); | 1297 throw new ArtifactDatabaseException("Not implemented, yet!"); |
1274 } | 1298 } |
1275 | 1299 |
1276 public Document listCollectionArtifacts(String collectionId, | 1300 public Document listCollectionArtifacts(String collectionId, |
1277 CallMeta callMeta) throws ArtifactDatabaseException { | 1301 CallMeta callMeta) throws ArtifactDatabaseException |
1278 throw new ArtifactDatabaseException("Not implemented, yet!"); | 1302 { |
1303 CollectionItem[] items = backend.listCollectionArtifacts(collectionId); | |
1304 | |
1305 Document result = XMLUtils.newDocument(); | |
1306 | |
1307 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( | |
1308 result, | |
1309 ArtifactNamespaceContext.NAMESPACE_URI, | |
1310 ArtifactNamespaceContext.NAMESPACE_PREFIX); | |
1311 | |
1312 Element root = ec.create("result"); | |
1313 Element ac = ec.create("artifact-collection"); | |
1314 ec.addAttr(ac, "uuid", collectionId, true); | |
1315 | |
1316 for (CollectionItem item: items) { | |
1317 Element i = ec.create("collection-item"); | |
1318 Element attr = ec.create("attribute"); | |
1319 ec.addAttr(i, "uuid", item.getArtifactIdentifier(), true); | |
1320 | |
1321 Document attribute = item.getAttribute(); | |
1322 if (attribute != null) { | |
1323 Node firstChild = attribute.getFirstChild(); | |
1324 attr.appendChild(result.importNode(firstChild, true)); | |
1325 } | |
1326 else { | |
1327 logger.debug("No attributes for the collection item!"); | |
1328 } | |
1329 | |
1330 i.appendChild(attr); | |
1331 ac.appendChild(i); | |
1332 } | |
1333 | |
1334 root.appendChild(ac); | |
1335 result.appendChild(root); | |
1336 | |
1337 return result; | |
1279 } | 1338 } |
1280 | 1339 |
1281 public DeferredOutput outCollection(String collectionId, | 1340 public DeferredOutput outCollection(String collectionId, |
1282 Document format, CallMeta callMeta) | 1341 Document format, CallMeta callMeta) |
1283 throws ArtifactDatabaseException{ | 1342 throws ArtifactDatabaseException{ |