# HG changeset patch # User Andre Heinecke # Date 1424097077 -3600 # Node ID fa57a2cb1dfa5e8eebe5525565c245ff60ba326f # Parent 11646c8dfa61111221bc28a0c2aa9a80bb2083cf (issue1754) Add km filtering for winfo anf fixanal results in difference calculations diff -r 11646c8dfa61 -r fa57a2cb1dfa artifacts/src/main/java/org/dive4elements/river/artifacts/states/WDifferencesState.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/WDifferencesState.java Mon Feb 16 15:30:22 2015 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/WDifferencesState.java Mon Feb 16 15:31:17 2015 +0100 @@ -124,6 +124,7 @@ return null; } + WKms retval = null; if (d4eArtifact instanceof StaticWKmsArtifact) { StaticWKmsArtifact staticWKms = (StaticWKmsArtifact) d4eArtifact; log.debug("WDifferencesState obtain data from StaticWKms"); @@ -132,7 +133,7 @@ log.error("No WKms from Static artifact for this range."); return new WQKms(); } - return wkms; + return wkms; /* No need for additional km filtering */ } else if (d4eArtifact instanceof WINFOArtifact) { log.debug("Get WKms from WINFOArtifact"); WINFOArtifact flys = (WINFOArtifact) d4eArtifact; @@ -144,9 +145,9 @@ } else if (wkms.length < idx+1) { log.warn("Not enough waterlevels in artifact."); - return new WQKms(); + retval = new WQKms(); } - return wkms[idx]; + retval = wkms[idx]; } else if (d4eArtifact instanceof MINFOArtifact) { log.warn("Get WKms from MINFOArtifact not implemented!"); // CalculationResult r = (CalculationResult) @@ -156,11 +157,20 @@ CalculationResult r = (CalculationResult) d4eArtifact.compute(context, ComputeType.ADVANCE, false); FixRealizingResult frR = (FixRealizingResult) r.getData(); - return frR.getWQKms()[idx]; + retval = frR.getWQKms()[idx]; } - log.error("Do not know how to handle (getWKms) minuend/subtrahend"); - return null; + + if (retval == null) { + log.error("Do not know how to handle (getWKms) minuend/subtrahend"); + } else if (!Double.isNaN(from) && !Double.isNaN(to)) { + /* Filter out only the relevant data points for calulation results.*/ + log.debug("Before filter: " + retval.size()); + retval = retval.filteredKms(from, to); + log.debug("After filter: " + retval.size()); + } + + return retval; }