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