diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DefaultState.java @ 624:929137ee8154

ISSUE-62 (part I/II) States are no longer filled with data - if a state needs user input, it needs to query the owner artifact. flys-artifacts/trunk@1982 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 23 May 2011 15:11:55 +0000
parents c21fb8de54f8
children 40d3039f85ac
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DefaultState.java	Mon May 23 14:32:17 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DefaultState.java	Mon May 23 15:11:55 2011 +0000
@@ -1,6 +1,6 @@
 package de.intevation.flys.artifacts.states;
 
-import java.util.Collection;
+import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.log4j.Logger;
@@ -20,6 +20,7 @@
 import de.intevation.artifactdatabase.data.StateData;
 import de.intevation.artifactdatabase.state.AbstractState;
 
+import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.resources.Resources;
 
 
@@ -32,7 +33,13 @@
     private static Logger logger = Logger.getLogger(DefaultState.class);
 
 
+    protected StateData getData(FLYSArtifact artifact,  String name) {
+        return artifact.getData(name);
+    }
+
+
     public Element describeStatic(
+        Artifact    artifact,
         Document    document,
         Node        root,
         CallContext context,
@@ -56,11 +63,14 @@
             return ui;
         }
 
-        Collection<StateData> dataItems = theData.values();
+        Iterator<String> iter = theData.keySet().iterator();
+        FLYSArtifact     flys = (FLYSArtifact) artifact;
 
-        for (StateData data: dataItems) {
-            String name  = data.getName();
-            String value = (String) data.getValue();
+        while (iter.hasNext()) {
+            String    name = iter.next();
+            StateData data = getData(flys, name);
+
+            String value = data != null ? (String) data.getValue() : null;
 
             if (value == null) {
                 continue;
@@ -117,10 +127,15 @@
             return ui;
         }
 
-        Collection<StateData> dataItems = theData.values();
+        Iterator<String> iter = theData.keySet().iterator();
+        FLYSArtifact     flys = (FLYSArtifact) artifact;
 
-        for (StateData data: dataItems) {
-            String name    = data.getName();
+        while (iter.hasNext()) {
+            String    name = iter.next();
+            StateData data = getData(flys, name);
+
+            data = data != null ? data : getData(name);
+
             Element select = createData(creator, artifact, data, context);
 
             Element choices = ProtocolUtils.createArtNode(

http://dive4elements.wald.intevation.org