diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/LocationDistanceSelect.java @ 921:610d0e0f4f85

#159 Modifications in the transition model to support a state with a kilometer range input only. flys-artifacts/trunk@2270 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 30 Jun 2011 11:32:17 +0000
parents c09c9e05ecfa
children eccf966fb677
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/LocationDistanceSelect.java	Wed Jun 29 09:00:31 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/LocationDistanceSelect.java	Thu Jun 30 11:32:17 2011 +0000
@@ -1,64 +1,34 @@
 package de.intevation.flys.artifacts.states;
 
-import java.util.List;
-
 import org.apache.log4j.Logger;
 
-import org.w3c.dom.Element;
-
 import gnu.trove.TDoubleArrayList;
 
 import de.intevation.artifacts.Artifact;
 import de.intevation.artifacts.CallContext;
 
-import de.intevation.artifacts.common.utils.XMLUtils;
-
-import de.intevation.artifactdatabase.ProtocolUtils;
 import de.intevation.artifactdatabase.data.StateData;
-import de.intevation.artifactdatabase.state.Facet;
-
-import de.intevation.flys.model.River;
 
 import de.intevation.flys.artifacts.FLYSArtifact;
-import de.intevation.flys.artifacts.WINFOArtifact;
 
-import de.intevation.flys.artifacts.model.RiverFactory;
-import de.intevation.flys.artifacts.model.WQKms;
-import de.intevation.flys.artifacts.model.CalculationResult;
-import de.intevation.flys.artifacts.model.WaterlevelFacet;
-import de.intevation.flys.artifacts.model.FacetTypes;
-
-import de.intevation.flys.artifacts.resources.Resources;
 
 /**
  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
  */
 public class LocationDistanceSelect
-extends      RangeState
-implements   FacetTypes
+extends      ComputationRangeState
 {
 
     /** The logger used in this class.*/
     private static Logger logger = Logger.getLogger(LocationDistanceSelect.class);
 
 
-    /** The default step width.*/
-    public static final String DEFAULT_STEP = "100";
-
     /** The name of the 'mode' field. */
     public static final String MODE = "ld_mode";
 
     /** The name of the 'locations' field.*/
     public static final String LOCATIONS = "ld_locations";
 
-    /** The name of the 'from' field. */
-    public static final String FROM = "ld_from";
-
-    /** The name of the 'to' field. */
-    public static final String TO = "ld_to";
-
-    /** The name of the 'step' field. */
-    public static final String STEP = "ld_step";
 
     /**
      * The default constructor that initializes an empty State object.
@@ -66,92 +36,6 @@
     public LocationDistanceSelect() {
     }
 
-    protected Element createData(
-        XMLUtils.ElementCreator cr,
-        Artifact    artifact,
-        StateData   data,
-        CallContext context)
-    {
-        Element select = ProtocolUtils.createArtNode(
-            cr, "select", null, null);
-
-        cr.addAttr(select, "name", data.getName(), true);
-
-        Element label = ProtocolUtils.createArtNode(
-            cr, "label", null, null);
-
-        Element choices = ProtocolUtils.createArtNode(
-            cr, "choices", null, null);
-
-        label.setTextContent(Resources.getMsg(
-            context.getMeta(),
-            data.getName(),
-            data.getName()));
-
-        select.appendChild(label);
-
-        return select;
-    }
-
-
-    @Override
-    protected Element[] createItems(
-        XMLUtils.ElementCreator cr,
-        Artifact    artifact,
-        String      name,
-        CallContext context)
-    {
-        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", new Double(minVal).toString()});
-
-            return new Element[] { min };
-        }
-        else if (name.equals("ld_to")) {
-            Element max = createItem(
-                cr,
-                new String[] {"max", new Double(maxVal).toString()});
-
-            return new Element[] { max };
-        }
-        else {
-            Element step = createItem(cr, new String[] {"step", DEFAULT_STEP});
-            return new Element[] { step };
-        }
-
-    }
-
-
-    protected Element createItem(XMLUtils.ElementCreator cr, Object obj) {
-        Element item  = ProtocolUtils.createArtNode(cr, "item", null, null);
-        Element label = ProtocolUtils.createArtNode(cr, "label", null, null);
-        Element value = ProtocolUtils.createArtNode(cr, "value", null, null);
-
-        String[] arr = (String[]) obj;
-
-        label.setTextContent(arr[0]);
-        value.setTextContent(arr[1]);
-
-        item.appendChild(label);
-        item.appendChild(value);
-
-        return item;
-    }
-
 
     @Override
     protected String getUIProvider() {
@@ -159,20 +43,6 @@
     }
 
 
-    protected double[] getMinMaxDistance(Artifact artifact) {
-        FLYSArtifact flysArtifact = (FLYSArtifact) artifact;
-        StateData    data         = getData(flysArtifact, "river");
-
-        String name = data != null ? (String) data.getValue() : "";
-
-        logger.debug("Search for the min/max distances of '" + name + "'");
-
-        River river = RiverFactory.getRiver(name);
-
-        return river != null ? river.determineMinMaxDistance() : null;
-    }
-
-
     @Override
     public boolean validate(Artifact artifact, CallContext context)
     throws IllegalArgumentException
@@ -182,7 +52,7 @@
         FLYSArtifact flys = (FLYSArtifact) artifact;
 
         if (flys.isRange()) {
-            return validateRange(flys, context);
+            return super.validate(flys, context);
         }
         else {
             return validateLocations(flys, context);
@@ -200,7 +70,7 @@
             throw new IllegalArgumentException("error_empty_state");
         }
 
-        double[] absMinMax = getMinMaxDistance(flys);
+        double[] absMinMax = getMinMax(flys);
         double[] relMinMax = getMinMaxFromString(values);
 
         if (relMinMax[0] < absMinMax[0] || relMinMax[0] > absMinMax[1]) {
@@ -215,36 +85,6 @@
     }
 
 
-    protected boolean validateRange(FLYSArtifact flys, CallContext context)
-    throws    IllegalArgumentException
-    {
-        StateData dFrom = getData(flys, FROM);
-        StateData dTo   = getData(flys, TO);
-        StateData dStep = getData(flys, STEP);
-
-        String fromStr = dFrom != null ? (String) dFrom.getValue() : null;
-        String toStr   = dTo != null ? (String) dTo.getValue() : null;
-        String stepStr = dStep != null ? (String) dStep.getValue() : null;
-
-        if (fromStr == null || toStr == null || stepStr == null) {
-            throw new IllegalArgumentException("error_empty_state");
-        }
-
-        try {
-            double from = Double.parseDouble(fromStr);
-            double to   = Double.parseDouble(toStr);
-            double step = Double.parseDouble(stepStr);
-
-            double[] minmaxDist = getMinMaxDistance(flys);
-
-            return validateBounds(minmaxDist[0], minmaxDist[1], from, to, step);
-        }
-        catch (NumberFormatException nfe) {
-            throw new IllegalArgumentException("error_invalid_double_value");
-        }
-    }
-
-
     /**
      * Extracts the min/max values from String <i>s</i>. An
      * IllegalArgumentException is thrown if there is a value that throws a
@@ -303,43 +143,5 @@
 
         return values.toNativeArray();
     }
-
-
-    @Override
-    public Object computeFeed(
-        FLYSArtifact artifact,
-        String       hash,
-        CallContext  context,
-        List<Facet>  facets,
-        Object       old
-    ) {
-        logger.debug("computeFeed");
-
-        WINFOArtifact winfo = (WINFOArtifact)artifact;
-
-        CalculationResult res = old instanceof CalculationResult
-            ? (CalculationResult)old
-            : winfo.getDischargeCurveData();
-
-        if (facets == null) {
-            logger.debug("generate no facets");
-            return res;
-        }
-
-        WQKms [] wqkms = (WQKms [])res.getData();
-
-        logger.debug("generate " + wqkms.length + " facets.");
-
-        String stateID = winfo.getCurrentStateId();
-
-        for (int i = 0; i < wqkms.length; ++i) {
-            String name = wqkms[i].getName();
-            facets.add(new WaterlevelFacet(
-                i, DISCHARGE_CURVE, name, ComputeType.FEED, stateID, hash));
-        }
-
-
-        return res;
-    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org