diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RiverSelect.java @ 126:b18aebd1342f

Added an abstract base class DefaultState for States. flys-artifacts/trunk@1466 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 14 Mar 2011 15:43:12 +0000
parents 47a4bc7a9ddf
children 8be4a837f20a
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RiverSelect.java	Mon Mar 14 14:16:37 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RiverSelect.java	Mon Mar 14 15:43:12 2011 +0000
@@ -1,32 +1,28 @@
 package de.intevation.flys.artifacts.states;
 
-import java.util.Collection;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.log4j.Logger;
 
-import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 import de.intevation.artifacts.CallContext;
-import de.intevation.artifacts.ArtifactNamespaceContext;
 
 import de.intevation.artifacts.common.utils.XMLUtils;
 
 import de.intevation.artifactdatabase.ProtocolUtils;
 import de.intevation.artifactdatabase.data.StateData;
-import de.intevation.artifactdatabase.state.AbstractState;
 
 import de.intevation.flys.artifacts.model.River;
 import de.intevation.flys.artifacts.model.RiverFactory;
+import de.intevation.flys.artifacts.resources.Resources;
 
 
 /**
  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
  */
-public class RiverSelect extends AbstractState {
+public class RiverSelect extends DefaultState {
 
     /** The logger used in this class. */
     private static Logger logger = Logger.getLogger(RiverSelect.class);
@@ -35,7 +31,6 @@
      * The default constructor that initializes an empty State object.
      */
     public RiverSelect() {
-        super(null, null);
     }
 
 
@@ -49,76 +44,46 @@
     }
 
 
-    /**
-     * This method creates the UI part of the artifact's describe document. The
-     * ui part consists of a static - representing previous inserted data - and
-     * a dynamic part - representing data that is necessary to be inserted in
-     * the current state.
-     *
-     * @param document The describe document.
-     * @param root The root node of the describe document.
-     * @param context The CallContext.
-     * @param uuid The uuid of the artifact.
-     */
-    public void describe(
-        Document    document,
-        Node        root,
-        CallContext context,
-        String      uuid)
+    protected Element createData(
+        XMLUtils.ElementCreator cr,
+        StateData   data,
+        CallContext context)
     {
-        XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator(
-            document,
-            ArtifactNamespaceContext.NAMESPACE_URI,
-            ArtifactNamespaceContext.NAMESPACE_PREFIX);
-
-        Element ui = ProtocolUtils.createArtNode(
-            creator, "ui", null, null);
-
-        Element staticUI  = ProtocolUtils.createArtNode(
-            creator, "static", null, null);
-
-        // TODO Add the static data
-        logger.error("TODO: ADD STATIC DATA TO DESCRIBE DOCUMENT.");
+        Element select = ProtocolUtils.createArtNode(
+            cr, "select",
+            new String[] { "uiprovider" },
+            new String[] { "select_with_map" });
+        cr.addAttr(select, "name", data.getName());
 
-        Element dynamicUI = ProtocolUtils.createArtNode(
-            creator, "dynamic", null, null);
-
-        Map<String, StateData> data = getData();
-
-        if (data != null) {
-            Collection<StateData> items = data.values();
-
-            for (StateData item: items) {
-                Element select = ProtocolUtils.createArtNode(
-                    creator, "select",
-                    new String[] { "uiprovider" },
-                    new String[] { "select_with_map" });
+        Element label = ProtocolUtils.createArtNode(
+            cr, "label", null, null);
 
-                Element label = ProtocolUtils.createArtNode(
-                    creator, "label", null, null);
-
-                Element choices = ProtocolUtils.createArtNode(
-                    creator, "choices", null, null);
-
-                label.setTextContent("River");
+        Element choices = ProtocolUtils.createArtNode(
+            cr, "choices", null, null);
 
-                select.appendChild(label);
-                select.appendChild(choices);
-
-                List<River> rivers = RiverFactory.getRivers();
+        label.setTextContent(Resources.getMsg(
+            context.getMeta(),
+            getID(),
+            getID()));
 
-                for (River river: rivers) {
-                    choices.appendChild(createRiverItem(creator, river));
-                }
+        return select;
+    }
 
-                dynamicUI.appendChild(select);
-            }
+
+    protected Element[] createItems(
+        XMLUtils.ElementCreator cr,
+        String      name,
+        CallContext context)
+    {
+        List<River> rivers = RiverFactory.getRivers();
+        Element[] items    = new Element[rivers.size()];
+
+        int idx = 0;
+        for (River river: rivers) {
+            items[idx++] = createRiverItem(cr, river);
         }
 
-        ui.appendChild(staticUI);
-        ui.appendChild(dynamicUI);
-
-        root.appendChild(ui);
+        return items;
     }
 
 

http://dive4elements.wald.intevation.org