Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RangeState.java @ 965:79251b1d47da
Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
flys-artifacts/trunk@2385 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 21 Jul 2011 14:00:09 +0000 |
parents | 610d0e0f4f85 |
children | eccf966fb677 |
line wrap: on
line source
package de.intevation.flys.artifacts.states; import org.apache.log4j.Logger; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallContext; import de.intevation.artifactdatabase.data.StateData; import de.intevation.flys.artifacts.FLYSArtifact; /** * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public abstract class RangeState extends DefaultState { /** The logger that is used in this class.*/ private Logger logger = Logger.getLogger(RangeState.class); public RangeState() { } protected abstract String getLowerField(); protected abstract String getUpperField(); protected abstract String getStepField(); protected abstract double[] getMinMax(Artifact artifact); /** * Validates a given range with a given valid range. * * @param fromValid Valid lower value of the range. * @param toValid Valid upper value of the range. * @param from The lower value. * @param to The upper value. * @param step The step width. * * @return true, if everything was fine, otherwise an exception is thrown. */ protected boolean validateBounds( double fromValid, double toValid, double from, double to, double step) throws IllegalArgumentException { logger.debug("RangeState.validateRange"); if (from < fromValid) { logger.error( "Invalid 'from'. " + from + " is smaller than " + fromValid); throw new IllegalArgumentException("error_feed_from_out_of_range"); } else if (to > toValid) { logger.error( "Invalid 'to'. " + to + " is bigger than " + toValid); throw new IllegalArgumentException("error_feed_to_out_of_range"); } return true; } @Override public boolean validate(Artifact artifact, CallContext context) throws IllegalArgumentException { FLYSArtifact flys = (FLYSArtifact) artifact; StateData dFrom = getData(flys, getLowerField()); StateData dTo = getData(flys, getUpperField()); StateData dStep = getData(flys, getStepField()); 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[] minmax = getMinMax(flys); return validateBounds(minmax[0], minmax[1], from, to, step); } catch (NumberFormatException nfe) { throw new IllegalArgumentException("error_invalid_double_value"); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :