# HG changeset patch # User Felix Wolfsteller # Date 1346575463 0 # Node ID 6342166ccdeff6e3907642577c8f13e3f6215b5f # Parent 001e35349203539f53a04ed66d58a2740493624f Fix issue774 (wrong items). flys-artifacts/trunk@5343 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 001e35349203 -r 6342166ccdef flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Sat Sep 01 15:44:38 2012 +0000 +++ b/flys-artifacts/ChangeLog Sun Sep 02 08:44:23 2012 +0000 @@ -1,3 +1,10 @@ +2012-09-02 Felix Wolfsteller + + Fix issue774 (wrong ranges for w/q input). + + * src/main/java/de/intevation/flys/artifacts/states/WQAdapted.java: + Do not add items for gauges that do not intersect with given range. + 2012-09-01 Felix Wolfsteller Fix issue829 (wrong fixation names). diff -r 001e35349203 -r 6342166ccdef flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQAdapted.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQAdapted.java Sat Sep 01 15:44:38 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQAdapted.java Sun Sep 02 08:44:23 2012 +0000 @@ -30,6 +30,7 @@ /** + * State to input W/Q data. * @author Ingo Weinzierl */ public class WQAdapted extends DefaultState { @@ -56,6 +57,7 @@ public static final GaugeOrder GAUGE_UP = new GaugeOrder(true); public static final GaugeOrder GAUGE_DOWN = new GaugeOrder(false); + /** Trivial, empty constructor. */ public WQAdapted() { } @@ -97,6 +99,7 @@ } + /** Creates "Q" and "W" items. */ protected Element[] createModeItems( XMLUtils.ElementCreator cr, Artifact artifact, @@ -134,7 +137,7 @@ return null; } - Element[] elements = new Element[num]; + List elements = new ArrayList(); double rangeFrom = dist[0]; double rangeTo = dist[1]; @@ -148,14 +151,19 @@ double lower = range.getA().doubleValue(); double upper = range.getB().doubleValue(); + // If gauge out of range, skip it. + if (upper <= rangeFrom || lower >= rangeTo) { + continue; + } + double from = lower < rangeFrom ? rangeFrom : lower; double to = upper > rangeTo ? rangeTo : upper; double[] mmQ = determineMinMaxQ(gauge, wst); double[] mmW = gauge.determineMinMaxW(); - elements[idx++] = createItem( - cr, new String[] { from + ";" + to, ""}, mmQ, mmW); + elements.add(createItem( + cr, new String[] { from + ";" + to, ""}, mmQ, mmW)); } } else { @@ -170,15 +178,18 @@ double from = lower < rangeFrom ? rangeFrom : lower; double to = upper > rangeTo ? rangeTo : upper; + // TODO probably need to continue out if oof range (see above). + double[] mmQ = determineMinMaxQ(gauge, wst); double[] mmW = gauge.determineMinMaxW(); - elements[idx++] = createItem( - cr, new String[] { to + ";" + from, ""}, mmQ, mmW); + elements.add(createItem( + cr, new String[] { to + ";" + from, ""}, mmQ, mmW)); } } - return elements; + Element[] els = new Element[elements.size()]; + return elements.toArray(els); }