diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/LocationDistanceSelect.java @ 313:89bd0417418f

The location/distance state now writes default values into DESCRIBE. flys-artifacts/trunk@1697 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 14 Apr 2011 13:36:06 +0000
parents 2e510c998adb
children 448d0dc64357
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/LocationDistanceSelect.java	Thu Apr 14 13:26:29 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/LocationDistanceSelect.java	Thu Apr 14 13:36:06 2011 +0000
@@ -4,6 +4,7 @@
 
 import org.w3c.dom.Element;
 
+import de.intevation.artifacts.Artifact;
 import de.intevation.artifacts.CallContext;
 
 import de.intevation.artifacts.common.utils.XMLUtils;
@@ -11,6 +12,10 @@
 import de.intevation.artifactdatabase.ProtocolUtils;
 import de.intevation.artifactdatabase.data.StateData;
 
+import de.intevation.flys.model.River;
+
+import de.intevation.flys.artifacts.FLYSArtifact;
+import de.intevation.flys.artifacts.model.RiverFactory;
 import de.intevation.flys.artifacts.resources.Resources;
 
 /**
@@ -33,6 +38,7 @@
 
     protected Element createData(
         XMLUtils.ElementCreator cr,
+        Artifact    artifact,
         StateData   data,
         CallContext context)
     {
@@ -60,17 +66,35 @@
 
     protected Element[] createItems(
         XMLUtils.ElementCreator cr,
+        Artifact    artifact,
         String      name,
         CallContext context)
     {
-        // TODO Insert correct min/max values!
+        double[] minmax = getMinMaxDistance(artifact);
+
+        double minVal = Double.MIN_VALUE;
+        double maxVal = Double.MAX_VALUE;
+
+        if (minmax != null) {
+            minVal = minmax[0];
+            maxVal = minmax[1];
+        }
+        else {
+            logger.warn("Could not read min/max distance values!");
+        }
 
         if (name.equals("ld_from")) {
-            Element min = createItem(cr, new String[] {"min", "1"});
+            Element min = createItem(
+                cr,
+                new String[] {"min", new Double(minVal).toString()});
+
             return new Element[] { min };
         }
         else if (name.equals("ld_to")) {
-            Element max = createItem(cr, new String[] {"max", "10"});
+            Element max = createItem(
+                cr,
+                new String[] {"max", new Double(maxVal).toString()});
+
             return new Element[] { max };
         }
         else {
@@ -101,5 +125,19 @@
     protected String getUIProvider() {
         return "location_distance_panel";
     }
+
+
+    protected double[] getMinMaxDistance(Artifact artifact) {
+        FLYSArtifact flysArtifact = (FLYSArtifact) artifact;
+        StateData    data         = flysArtifact.getData("river");
+
+        String name = (String) data.getValue();
+
+        logger.debug("Search for the min/max distances of '" + name + "'");
+
+        River river = RiverFactory.getRiver(name);
+
+        return river != null ? river.determineMinMaxDistance() : null;
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org