Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQAdapted.java @ 636:58276db49b16
Generate fields for w/q input depend on flow direction.
flys-artifacts/trunk@2012 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 26 May 2011 15:55:48 +0000 |
parents | 929137ee8154 |
children | 2dbbb5be30a1 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQAdapted.java Thu May 26 14:27:06 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQAdapted.java Thu May 26 15:55:48 2011 +0000 @@ -2,6 +2,8 @@ import java.util.ArrayList; import java.util.List; +import java.util.Comparator; +import java.util.Collections; import org.apache.log4j.Logger; @@ -38,6 +40,20 @@ public static final String FIELD_WQ_VALUES = "wq_values"; + public static final class GaugeOrder implements Comparator<Gauge> { + private int order; + + public GaugeOrder(boolean up) { + order = up ? 1 : 1; + } + + public int compare(Gauge a, Gauge b) { + return order * a.getRange().getA().compareTo(b.getRange().getA()); + } + } // class GaugeOrder + + public static final GaugeOrder GAUGE_UP = new GaugeOrder(true); + public static final GaugeOrder GAUGE_DOWN = new GaugeOrder(false); /** * This method creates one element for each gauge of the selected river that @@ -112,19 +128,38 @@ Element[] elements = new Element[num]; + double rangeFrom = dist[0]; + double rangeTo = dist[1]; + int idx = 0; - for (Gauge gauge: gauges) { - Range range = gauge.getRange(); - double lower = range.getA().doubleValue(); - double upper = range.getB().doubleValue(); + if (rangeFrom < rangeTo) { + Collections.sort(gauges, GAUGE_UP); + for (Gauge gauge: gauges) { + Range range = gauge.getRange(); + double lower = range.getA().doubleValue(); + double upper = range.getB().doubleValue(); - double from = dist[0] < lower ? lower : dist[0]; - double to = dist[1] > upper ? upper : dist[1]; + double from = lower < rangeFrom ? rangeFrom : lower; + double to = upper > rangeTo ? rangeTo : upper; - String key = Double.toString(from) + ";" + Double.toString(to); + elements[idx++] = createItem( + cr, new String[] { from + ";" + to, ""}); + } + } + else { + Collections.sort(gauges, GAUGE_DOWN); + for (Gauge gauge: gauges) { + Range range = gauge.getRange(); + double lower = range.getA().doubleValue(); + double upper = range.getB().doubleValue(); - elements[idx++] = createItem(cr, new String[] {key, ""}); + double to = upper < rangeTo ? rangeTo : upper; + double from = lower > rangeFrom ? rangeFrom : lower; + + elements[idx++] = createItem( + cr, new String[] { to + ";" + from, ""}); + } } return elements;