Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/LocationDistanceSelect.java @ 3785:a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
file:///home/clients/bsh/bsh-generischer-viewer/Material/SVN/flys-artifacts/trunk
........
r5501 | felix | 2012-09-18 11:49:45 +0200 (Di, 18 Sep 2012) | 1 line
fix issue865 - missing showarea theme prop.
........
r5502 | clins | 2012-09-18 12:18:30 +0200 (Di, 18 Sep 2012) | 1 line
Add robustness checks to prevent NPEs
........
r5504 | felix | 2012-09-18 14:03:15 +0200 (Di, 18 Sep 2012) | 1 line
i18n for area label (fix issue487).
........
r5505 | clins | 2012-09-18 16:19:59 +0200 (Di, 18 Sep 2012) | 1 line
Update themes to show point descriptions
........
r5506 | rrenkert | 2012-09-18 17:00:30 +0200 (Di, 18 Sep 2012) | 3 lines
Removed incorrect characteristic diameter.
........
r5507 | rrenkert | 2012-09-18 17:03:20 +0200 (Di, 18 Sep 2012) | 3 lines
Fixed some stupid bugs in bed quality data factory and calculation.
........
r5508 | teichmann | 2012-09-18 17:45:49 +0200 (Di, 18 Sep 2012) | 1 line
The usual whitespace and import cleanups.
........
r5511 | teichmann | 2012-09-18 18:24:51 +0200 (Di, 18 Sep 2012) | 1 line
Use generics aware Collections.emptyList().
........
r5512 | teichmann | 2012-09-18 20:36:52 +0200 (Di, 18 Sep 2012) | 1 line
Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
........
r5513 | clins | 2012-09-18 23:38:19 +0200 (Di, 18 Sep 2012) | 1 line
A and B facets of fix analyis are now deactivated by default
........
r5516 | bricks | 2012-09-19 10:45:51 +0200 (Mi, 19 Sep 2012) | 2 lines
Add the gauge station to the GaugeOverviewInfoService xml response
........
r5517 | rrenkert | 2012-09-19 10:50:23 +0200 (Mi, 19 Sep 2012) | 3 lines
Added CSV export to bed quality calculation.
........
r5518 | bricks | 2012-09-19 11:04:04 +0200 (Mi, 19 Sep 2012) | 2 lines
Fix date in changelog entry
........
r5519 | teichmann | 2012-09-19 11:17:14 +0200 (Mi, 19 Sep 2012) | 1 line
Removed trailing whitespace.
........
flys-artifacts/tags/2.9.1@5531 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 19 Sep 2012 14:58:31 +0000 |
parents | 7467b091fb8e |
children | eb5564662e19 |
line wrap: on
line source
package de.intevation.flys.artifacts.states; import org.apache.log4j.Logger; import gnu.trove.TDoubleArrayList; import de.intevation.artifacts.Artifact; import de.intevation.artifactdatabase.data.StateData; import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.WINFOArtifact; /** * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class LocationDistanceSelect extends ComputationRangeState { /** The logger used in this class. */ private static Logger logger = Logger.getLogger(LocationDistanceSelect.class); /** 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 default constructor that initializes an empty State object. */ public LocationDistanceSelect() { } @Override protected String getUIProvider() { return "location_distance_panel"; } /** Validates the range (or location). */ @Override public boolean validate(Artifact artifact) throws IllegalArgumentException { logger.debug("LocationDistanceSelect.validate"); FLYSArtifact flys = (FLYSArtifact)artifact; StateData mode = getData(flys, MODE); String mValue = mode != null ? (String)mode.getValue() : null; if (mValue != null) { if (mValue.equals("distance")) { return super.validate(flys); } else { return validateLocations(flys); } } return false; } protected boolean validateLocations(FLYSArtifact flys) throws IllegalArgumentException { StateData dValues = getData(flys, LOCATIONS); String values = dValues != null ? (String)dValues.getValue() : null; if (values == null || values.length() == 0) { throw new IllegalArgumentException("error_empty_state"); } double[] absMinMax = getMinMax(flys); double[] relMinMax = getMinMaxFromString(values); if (relMinMax[0] < absMinMax[0] || relMinMax[0] > absMinMax[1]) { throw new IllegalArgumentException("error_feed_from_out_of_range"); } if (relMinMax[1] > absMinMax[1] || relMinMax[1] < absMinMax[0]) { throw new IllegalArgumentException("error_feed_to_out_of_range"); } return true; } /** * Extracts the min/max values from String <i>s</i>. An * IllegalArgumentException is thrown if there is a value that throws a * NumberFormatException. * * @param s String that contains whitespace separated double values. * * @return a 2dmin array [min,max]. */ public static double[] getMinMaxFromString(String s) throws IllegalArgumentException { String[] values = s.split(" "); double[] minmax = new double[] { Double.MAX_VALUE, -Double.MAX_VALUE }; for (String v: values) { try { double value = Double.valueOf(v); minmax[0] = minmax[0] < value ? minmax[0] : value; minmax[1] = minmax[1] > value ? minmax[1] : value; } catch (NumberFormatException nfe) { throw new IllegalArgumentException( "error_invalid_double_value"); } } return minmax; } public static double[] getLocations(WINFOArtifact flys) { StateData data = flys.getData(LOCATIONS); String value = data != null ? (String) data.getValue() : null; if (value == null || value.length() == 0) { logger.warn("No location data given."); return null; } String[] splitted = value.split(" "); TDoubleArrayList values = new TDoubleArrayList(); for (String split: splitted) { try { values.add(Double.valueOf(split)); } catch (NumberFormatException nfe) { logger.warn(nfe, nfe); } } return values.toNativeArray(); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :