diff flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java @ 1522:df9baca681a0

Added a new Data type IntegerRangeData that stores min and max integer values. flys-client/trunk@3699 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 18 Jan 2012 09:14:17 +0000
parents ab8eb2f544f2
children 252c22237fe7
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java	Mon Jan 16 08:34:37 2012 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java	Wed Jan 18 09:14:17 2012 +0000
@@ -23,6 +23,7 @@
 import de.intevation.flys.client.shared.model.DefaultData;
 import de.intevation.flys.client.shared.model.DefaultDataItem;
 import de.intevation.flys.client.shared.model.DefaultOutputMode;
+import de.intevation.flys.client.shared.model.IntegerRangeData;
 import de.intevation.flys.client.shared.model.OutputMode;
 import de.intevation.flys.client.shared.model.Recommendation;
 import de.intevation.flys.client.shared.model.WQDataItem;
@@ -119,21 +120,40 @@
             return null;
         }
 
-        int dataNum   = data.getLength();
-        DataList list = new DataList(state, dataNum, uiProvider);
+        int      dataNum = data.getLength();
+        DataList list    = new DataList(state, dataNum, uiProvider);
 
         for (int i = 0; i < dataNum; i++) {
-            Node d = data.item(i);
+            Element   d  = (Element) data.item(i);
+            String label = ClientProtocolUtils.getLabel(d);
+            String name  = XMLUtils.xpathString(
+                d, "@art:name", ArtifactNamespaceContext.INSTANCE);
+            String type  = XMLUtils.xpathString(
+                d, "@art:type", ArtifactNamespaceContext.INSTANCE);
 
-            NodeList choices  = ClientProtocolUtils.getItemNodes(d);
-            String   label    = ClientProtocolUtils.getLabel(d);
-            String   name     = XMLUtils.xpathString(
-                d, "@art:name", ArtifactNamespaceContext.INSTANCE);
+            logger.debug("Create new IntegerRangeData object for: " + name);
+            logger.debug("New Data is from type: " + type);
 
-            DataItem[] dataItems = extractCurrentDataItems(choices);
-            DataItem   def       = extractDefaultDataItem(d);
+            if (type == null || type.length() == 0) {
+                NodeList   choices   = ClientProtocolUtils.getItemNodes(d);
+                DataItem[] dataItems = extractCurrentDataItems(choices);
+                DataItem   def       = extractDefaultDataItem(d);
 
-            list.add(new DefaultData(name, label, null, dataItems, def));
+                list.add(new DefaultData(name, label, null, dataItems, def));
+            }
+            else if (type.equals("intrange")) {
+                String min   = ClientProtocolUtils.getMinNode(d);
+                String max   = ClientProtocolUtils.getMaxNode(d);
+
+                try {
+                    int lower = Integer.parseInt(min);
+                    int upper = Integer.parseInt(max);
+                    list.add(new IntegerRangeData(name, label, lower, upper));
+                }
+                catch (NumberFormatException nfe) {
+                    logger.warn("NumberFormatException: ", nfe);
+                }
+            }
         }
 
         return list;

http://dive4elements.wald.intevation.org