Mercurial > dive4elements > river
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.