Mercurial > dive4elements > river
changeset 635:acf3b49ec31f
Take the flow direction into account.
flys-artifacts/trunk@2010 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 26 May 2011 14:27:06 +0000 |
parents | d8c47520c726 |
children | 58276db49b16 |
files | flys-artifacts/ChangeLog flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DefaultState.java flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RangeState.java |
diffstat | 5 files changed, 35 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog Thu May 26 09:41:57 2011 +0000 +++ b/flys-artifacts/ChangeLog Thu May 26 14:27:06 2011 +0000 @@ -1,3 +1,17 @@ +2011-05-26 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + * src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java: + Take the flow direction into account. + + * src/main/java/de/intevation/flys/artifacts/states/DefaultState.java: + Prevent NPE. + + * src/main/java/de/intevation/flys/artifacts/states/RangeState.java: + Allow to be 'from' greater than 'to' in ranges. + + * src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java: Negate + step if 'from' is greater than 'to'. + 2011-05-26 Sascha L. Teichmann <sascha.teichmann@intevation.de> * src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java:
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java Thu May 26 09:41:57 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java Thu May 26 14:27:06 2011 +0000 @@ -930,6 +930,10 @@ double [] values = new double[num]; + if (from > to) { + step = -step; + } + for (int idx = 0; idx < num; idx++) { values[idx] = Math.round(lower * precision)/precision; lower += step;
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Thu May 26 09:41:57 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Thu May 26 14:27:06 2011 +0000 @@ -277,7 +277,7 @@ throw new NullPointerException("No Wst found for selected river."); } - WQKms[] results = computeWaterlevelData(kms, qs, wst); + WQKms[] results = computeWaterlevelData(kms, qs, wst, river.getKmUp()); // TODO Introduce a caching mechanism here! @@ -315,8 +315,9 @@ public static WQKms[] computeWaterlevelData( double[] kms, double[] qs, - WstValueTable wst) - { + WstValueTable wst, + boolean up + ) { logger.info("WINFOArtifact.computeWaterlevelData"); WQKms[] wqkms = new WQKms[qs.length]; @@ -326,7 +327,7 @@ for (int i = 0; i < qs.length; i++) { double [] oqs = new double[kms.length]; double [] ows = new double[kms.length]; - int referenceIndex = 0; // TODO: Make depend on the flow direction + int referenceIndex = up ? 0 : kms.length-1; WstValueTable.QPosition qPosition = wst.interpolate(qs[i], referenceIndex, kms, ows, oqs); if (qPosition != null) { @@ -511,6 +512,8 @@ return new WQKms[0]; } + boolean kmUp = river.getKmUp(); + WstValueTable wst = WstValueTableFactory.getTable(river); if (wst == null) { logger.error("No wst found for selected river."); @@ -533,7 +536,7 @@ } if (qs.length == 1) { double [] kms = getKms(segments[0]); - return computeWaterlevelData(kms, qs, wst); + return computeWaterlevelData(kms, qs, wst, kmUp); } } @@ -617,7 +620,9 @@ double [] iqsi = iqs[i]; QPosition qPosition = wst.interpolate( - iqsi[0], 0, boundKms, boundWs, boundQs); + iqsi[0], + kmUp ? 0 : boundKms.length-1, + boundKms, boundWs, boundQs); if (qPosition == null) { logger.warn("interpolation failed for " + iqsi[i]);
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DefaultState.java Thu May 26 09:41:57 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DefaultState.java Thu May 26 14:27:06 2011 +0000 @@ -160,8 +160,10 @@ ui.appendChild(select); Element[] items = createItems(creator, artifact, name, context); - for (Element item: items) { - choices.appendChild(item); + if (items != null) { + for (Element item: items) { + choices.appendChild(item); + } } }
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RangeState.java Thu May 26 09:41:57 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/RangeState.java Thu May 26 14:27:06 2011 +0000 @@ -44,9 +44,11 @@ "Invalid 'to'. " + to + " is bigger than " + toValid); throw new IllegalArgumentException("error_feed_to_out_of_range"); } + /* else if (from > to) { throw new IllegalArgumentException("error_feed_from_bigger_to"); } + */ return true; }