# HG changeset patch # User Sascha L. Teichmann # Date 1306425348 0 # Node ID 58276db49b16caca2a3b2312125b020b686e1643 # Parent acf3b49ec31ff9fe0527ca54147f1f51ea758591 Generate fields for w/q input depend on flow direction. flys-artifacts/trunk@2012 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r acf3b49ec31f -r 58276db49b16 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Thu May 26 14:27:06 2011 +0000 +++ b/flys-artifacts/ChangeLog Thu May 26 15:55:48 2011 +0000 @@ -1,3 +1,10 @@ +2011-05-26 Sascha L. Teichmann + + * src/main/java/de/intevation/flys/artifacts/states/WQAdapted.java: + Generate fields for w/q input depend on flow direction. + + * src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java: + Moved km up question out of loop. 2011-05-26 Sascha L. Teichmann * src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java: diff -r acf3b49ec31f -r 58276db49b16 flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Thu May 26 14:27:06 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Thu May 26 15:55:48 2011 +0000 @@ -324,10 +324,11 @@ ArrayList results = new ArrayList(); + int referenceIndex = up ? 0 : kms.length-1; + for (int i = 0; i < qs.length; i++) { double [] oqs = new double[kms.length]; double [] ows = new double[kms.length]; - int referenceIndex = up ? 0 : kms.length-1; WstValueTable.QPosition qPosition = wst.interpolate(qs[i], referenceIndex, kms, ows, oqs); if (qPosition != null) { diff -r acf3b49ec31f -r 58276db49b16 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 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 { + 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;