# HG changeset patch # User Ingo Weinzierl # Date 1299763896 0 # Node ID b7a9557957d1b61597aca73c18885871439eface # Parent ebb1cb69d84706889f004fe3728453018186b1e8 Appende the static data to the static node of the DESCRIBE document. flys-artifacts/trunk@1452 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r ebb1cb69d847 -r b7a9557957d1 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Thu Mar 10 08:38:05 2011 +0000 +++ b/flys-artifacts/ChangeLog Thu Mar 10 13:31:36 2011 +0000 @@ -1,3 +1,9 @@ +2011-03-10 Ingo Weinzierl + + * src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java: Appended + the data that have been inserted in former states into the static node + of the DESCRIBE. + 2011-03-10 Ingo Weinzierl * src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java: The diff -r ebb1cb69d847 -r b7a9557957d1 flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Thu Mar 10 08:38:05 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Thu Mar 10 13:31:36 2011 +0000 @@ -1,9 +1,13 @@ package de.intevation.flys.artifacts; import java.util.List; +import java.util.Set; + +import javax.xml.xpath.XPathConstants; import org.w3c.dom.Document; import org.w3c.dom.Element; +import org.w3c.dom.Node; import org.apache.log4j.Logger; @@ -11,6 +15,7 @@ import de.intevation.artifacts.CallContext; import de.intevation.artifactdatabase.ProtocolUtils; +import de.intevation.artifactdatabase.data.StateData; import de.intevation.artifactdatabase.state.State; import de.intevation.artifactdatabase.state.StateEngine; import de.intevation.artifactdatabase.transition.TransitionEngine; @@ -34,6 +39,9 @@ /** The name of the artifact.*/ public static final String ARTIFACT_NAME = "winfo"; + /** XPath */ + public static final String XPATH_STATIC_UI ="/art:result/art:ui/art:static"; + /** * The default constructor. @@ -87,6 +95,14 @@ current.describe(description, root, context, identifier()); + Node ui = (Node) XMLUtils.xpath( + description, + XPATH_STATIC_UI, + XPathConstants.NODE, + ArtifactNamespaceContext.INSTANCE); + + appendStaticUI(creator, ui); + return description; } @@ -99,5 +115,37 @@ public String getName() { return ARTIFACT_NAME; } + + + /** + * This method appends the static data - that has already been inserted by + * the user - to the static node of the DESCRIBE document. + * + * @param cr The ElementCreator that is used to create new elements. + * @param ui The static ui node. + */ + protected void appendStaticUI(XMLUtils.ElementCreator cr, Node ui) { + Set keys = data.keySet(); + + // XXX This just handles single selection string values. If we need more + // complex (maybe multiselect) objects we should introduce a data + // structure for this - this structure should have a method that returns + // a node that contains its items. + for (String k: keys) { + logger.debug("The key = " + k); + StateData d = getData(k); + + Element dataElement = cr.create("data"); + cr.addAttr(dataElement, "name", (String) d.getName(), true); + cr.addAttr(dataElement, "type", d.getType(), true); + + Element itemElement = cr.create("item"); + cr.addAttr(itemElement, "value", (String) d.getValue(), true); + // TODO Description (human readable) is missing + + dataElement.appendChild(itemElement); + ui.appendChild(dataElement); + } + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :