Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/states/RangeState.java @ 9638:6c1ebf2220f5
# 19b (check for usages of WaterlevelExporter.getWforGaugeAndQ) -> cleanup: removing calc.extreme.curve
author | dnt_bjoernsen <d.tironi@bjoernsen.de> |
---|---|
date | Thu, 31 Oct 2019 17:37:53 +0100 |
parents | 21e65960a9e3 |
children |
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.artifacts.states; import org.apache.log4j.Logger; import org.dive4elements.artifacts.Artifact; import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.access.RangeAccess; /** * State in which km range is set. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public abstract class RangeState extends DefaultState { /** The log that is used in this class. */ private final Logger log = Logger.getLogger(RangeState.class); public RangeState() { } protected abstract double[] getMinMax(Artifact artifact); protected boolean validateBounds(final double fromValid, final double toValid, final double from, final double to) throws IllegalArgumentException { if (from < fromValid || from > toValid) { this.log.error("Invalid 'from'. " + from + " is smaller than " + fromValid); // error message used in client to resolve i18n throw new IllegalArgumentException("error_feed_from_out_of_range"); } else if (to > toValid || to < fromValid) { this.log.error("Invalid 'to'. " + to + " is bigger than " + toValid); // error message used in client to resolve i18n throw new IllegalArgumentException("error_feed_to_out_of_range"); } return true; } /** * 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(final double fromValid, final double toValid, final double from, final double to, final double step) throws IllegalArgumentException { this.log.debug("RangeState.validateRange"); // XXX The step width is not validated at the moment! return validateBounds(fromValid, toValid, from, to); } @Override public boolean validate(final Artifact artifact) throws IllegalArgumentException { final D4EArtifact flys = (D4EArtifact) artifact; try { final RangeAccess rangeAccess = new RangeAccess(flys); final double from = rangeAccess.getFrom(); final double to = rangeAccess.getTo(); final double step = rangeAccess.getStep(); final double[] minmax = getMinMax(flys); return validateBounds(minmax[0], minmax[1], from, to, step); } catch (final NumberFormatException nfe) { throw new IllegalArgumentException("error_invalid_double_value"); } catch (final NullPointerException npe) { throw new IllegalArgumentException("error_empty_state"); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :