diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 134:f3dfa188d8b2

Let the states describe the static ui part. flys-artifacts/trunk@1502 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 17 Mar 2011 16:03:36 +0000
parents 206312c2aa76
children dde6904ba160
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java	Thu Mar 17 12:17:37 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java	Thu Mar 17 16:03:36 2011 +0000
@@ -1,9 +1,7 @@
 package de.intevation.flys.artifacts;
 
 import java.util.List;
-import java.util.Set;
-
-import javax.xml.xpath.XPathConstants;
+import java.util.Vector;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -15,15 +13,14 @@
 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;
 
 import de.intevation.artifacts.common.utils.XMLUtils;
 
+import de.intevation.flys.artifacts.states.DefaultState;
 import de.intevation.flys.artifacts.context.FLYSContext;
-import de.intevation.flys.artifacts.resources.Resources;
 
 
 /**
@@ -100,7 +97,7 @@
         Element staticUI  = ProtocolUtils.createArtNode(
             creator, "static", null, null);
 
-        appendStaticUI(creator, staticUI, context);
+        appendStaticUI(description, staticUI, context, identifier());
 
         Element dynamic = current.describe(
             description,
@@ -130,39 +127,29 @@
      * 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.
+     * @param doc The document.
+     * @param ui The root node.
+     * @param context The CallContext.
+     * @param uuid The identifier of the artifact.
      */
     protected void appendStaticUI(
-        XMLUtils.ElementCreator cr,
-        Node ui,
-        CallContext context)
+        Document    doc,
+        Node        ui,
+        CallContext context,
+        String uuid)
     {
-        Set<String> keys = data.keySet();
+        Vector<String> stateIds = getPreviousStateIds();
 
-        // 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 <data> node that contains its items.
-        for (String k: keys) {
-            logger.debug("The key = " + k);
-            StateData d = getData(k);
-            String name = Resources.getMsg(
-                context.getMeta(),
-                d.getName(),
-                d.getName());
+        FLYSContext flysContext = getFlysContext(context);
+        StateEngine engine      = (StateEngine) flysContext.get(
+            FLYSContext.STATE_ENGINE_KEY);
 
-            Element dataElement = cr.create("data");
-            cr.addAttr(dataElement, "name", name, true);
-            cr.addAttr(dataElement, "type", d.getType(), true);
+        for (String stateId: stateIds) {
+            logger.debug("Append static data for state: " + stateId);
+            DefaultState state = (DefaultState) engine.getState(stateId);
+            ui.appendChild(state.describeStatic(doc, ui, context, uuid));
+        }
 
-            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 :

http://dive4elements.wald.intevation.org