diff flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java @ 565:a078ba1c139d

Introduced a client side input validation for the adapted WQ panel. flys-client/trunk@2112 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 14 Jun 2011 14:00:19 +0000
parents 27ffaf628b54
children 653ae84533e7
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java	Tue Jun 14 11:31:33 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/server/ArtifactDescriptionFactory.java	Tue Jun 14 14:00:19 2011 +0000
@@ -21,6 +21,7 @@
 import de.intevation.flys.client.shared.model.DefaultDataItem;
 import de.intevation.flys.client.shared.model.DefaultOutputMode;
 import de.intevation.flys.client.shared.model.OutputMode;
+import de.intevation.flys.client.shared.model.WQDataItem;
 
 
 /**
@@ -175,13 +176,95 @@
             String label = ClientProtocolUtils.getLabel(item);
             String value = ClientProtocolUtils.getValue(item);
 
-            dataItems.add(new DefaultDataItem(label, null, value));
+            double[] mmQ = extractMinMaxQValues(item);
+            double[] mmW = extractMinMaxWValues(item);
+
+            if (mmQ != null || mmW != null) {
+                dataItems.add(new WQDataItem(label, null, value, mmQ, mmW));
+            }
+            else {
+                dataItems.add(new DefaultDataItem(label, null, value));
+            }
         }
 
         return (DataItem[]) dataItems.toArray(new DataItem[count]);
     }
 
 
+    protected static double[] extractMinMaxQValues(Node item) {
+        System.out.println("ArtifactDescriptionFactory - extractMinMaxQValues");
+
+        if (item == null) {
+            System.err.println("This node is empty - no min/max Q values.");
+            return null;
+        }
+
+        Node node = (Node) XMLUtils.xpath(
+            item,
+            "art:range[@art:type='Q']",
+            XPathConstants.NODE,
+            ArtifactNamespaceContext.INSTANCE);
+
+        if (node == null) {
+            System.out.println("No min/max Q values found.");
+            return null;
+        }
+
+        return extractMinMaxValues(node);
+    }
+
+
+    protected static double[] extractMinMaxWValues(Node item) {
+        System.out.println("ArtifactDescriptionFactory - extractMinMaxWValues");
+
+        if (item == null) {
+            System.err.println("This node is empty - no min/max W values.");
+            return null;
+        }
+
+        Node node = (Node) XMLUtils.xpath(
+            item,
+            "art:range[@art:type='W']",
+            XPathConstants.NODE,
+            ArtifactNamespaceContext.INSTANCE);
+
+        if (node == null) {
+            System.out.println("No min/max W values found.");
+            return null;
+        }
+
+        return extractMinMaxValues(node);
+    }
+
+
+    protected static double[] extractMinMaxValues(Node node) {
+        System.out.println("ArtifactDescriptionFactory.extractMinMaxValues");
+
+        String minStr = XMLUtils.xpathString(
+            node, "art:min/text()", ArtifactNamespaceContext.INSTANCE);
+
+        String maxStr = XMLUtils.xpathString(
+            node, "art:max/text()", ArtifactNamespaceContext.INSTANCE);
+
+        if (maxStr == null || minStr == null) {
+            System.err.println("No min/max values found.");
+            return null;
+        }
+
+        try {
+            double min = Double.valueOf(minStr);
+            double max = Double.valueOf(maxStr);
+
+            return new double[] { min, max };
+        }
+        catch (NumberFormatException nfe) {
+            System.err.println("Error while parsing min/max values.");
+        }
+
+        return null;
+    }
+
+
     /**
      * This method extracts the data objects from the data node of the static ui
      * part of the DESCRIBE document.

http://dive4elements.wald.intevation.org