# HG changeset patch # User Felix Wolfsteller # Date 1322823671 0 # Node ID 37a7b38415659460a678b2402e0618e90c2d8005 # Parent d04cc7e4b55d6d0c20ab2dc0a36cdee0df09210a Include state data items in description document of collection. flys-artifacts/trunk@3343 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r d04cc7e4b55d -r 37a7b3841565 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Wed Nov 30 12:14:11 2011 +0000 +++ b/flys-artifacts/ChangeLog Fri Dec 02 11:01:11 2011 +0000 @@ -1,3 +1,9 @@ +2011-12-02 Felix Wolfsteller + + * src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java: + (buildArtifactNode): Include artifacts state data in description + document of collection. + 2011-11-30 Sascha L. Teichmann * src/main/java/de/intevation/flys/exports/DischargeCurveGenerator.java, diff -r d04cc7e4b55d -r 37a7b3841565 flys-artifacts/src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java --- a/flys-artifacts/src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java Wed Nov 30 12:14:11 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/collections/FLYSArtifactCollection.java Fri Dec 02 11:01:11 2011 +0000 @@ -54,6 +54,9 @@ public static final String XPATH_ARTIFACT_OUTPUTMODES = "/art:result/art:outputmodes"; + public static final String XPATH_ARTIFACT_STATE_DATA = + "/art:result/art:ui/art:static/art:state/art:data"; + public static final String XPATH_COLLECTION_ITEMS = "/art:result/art:artifact-collection/art:collection-item"; @@ -414,7 +417,7 @@ } aParser.parse(oldAttr); - + return new AttributeWriter( db, aParser.getOuts(), @@ -826,6 +829,10 @@ } + /** + * Create the Artifacts Node that contains outputmode and statedata. + * @param uuid uuid of the artifact. + */ protected Element buildArtifactNode( ArtifactDatabase database, String uuid, @@ -838,7 +845,7 @@ // TODO String hash = "MYHASH"; - Element ci = ec.create("artifact"); + Element ci = ec.create("artifact"); ec.addAttr(ci, "uuid", uuid, true); ec.addAttr(ci, "hash", hash, true); @@ -846,6 +853,7 @@ // in the describe operation of an artifact. Document description = database.describe(uuid, null, context.getMeta()); + // Add outputmode element(s). Node outputModes = (Node) XMLUtils.xpath( description, XPATH_ARTIFACT_OUTPUTMODES, @@ -857,6 +865,23 @@ ci.appendChild(doc.importNode(outputModes, true)); } + // Add state-data element(s). + Node dataNode = ci.appendChild( + ci.getOwnerDocument().createElement("art:data-items")); + + NodeList dataNodes = (NodeList) XMLUtils.xpath( + description, + XPATH_ARTIFACT_STATE_DATA, + XPathConstants.NODESET, + ArtifactNamespaceContext.INSTANCE); + + if (dataNodes != null) { + Document doc = ci.getOwnerDocument(); + for (int i = 0; i < dataNodes.getLength(); i++) { + dataNode.appendChild(doc.importNode(dataNodes.item(i), true)); + } + } + return ci; }