diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixAnalysisCalculation.java @ 6999:3e93f29281bc

Fix for flys/issue1479: The indices of the dates of the analysis periods where re-mapped wrong.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 12 Sep 2013 16:35:07 +0200
parents 8efef772a488
children 6650485c2c9b
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixAnalysisCalculation.java	Thu Sep 12 11:50:39 2013 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixAnalysisCalculation.java	Thu Sep 12 16:35:07 2013 +0200
@@ -126,7 +126,7 @@
         Function        function,
         Parameters      parameters,
         FixingsOverview overview,
-        ColumnCache cc
+        ColumnCache     cc
     ) {
         Range range = new Range(from, to);
 
@@ -150,15 +150,28 @@
         TIntIntHashMap [] col2indices =
             new TIntIntHashMap[analysisPeriods.length];
 
+        DateRangeFilter [] drfs = new DateRangeFilter[analysisPeriods.length];
+
+        boolean debug = log.isDebugEnabled();
+
         for (int i = 0; i < analysisPeriods.length; ++i) {
             col2indices[i] = new TIntIntHashMap();
+            drfs[i] = new DateRangeFilter(
+                analysisPeriods[i].getFrom(),
+                analysisPeriods[i].getTo());
+
+            if (debug) {
+                log.debug("Analysis period " + (i+1) + " date range: " +
+                    analysisPeriods[i].getFrom() + " - " +
+                    analysisPeriods[i].getTo());
+            }
         }
 
         for (int row = 0, R = parameters.size(); row < R; ++row) {
             double km = parameters.get(row, kmIndex);
             parameters.get(row, parameterIndices, parameterValues);
 
-            // This is the paraterized function for a given km.
+            // This is the parameterized function for a given km.
             org.dive4elements.river.artifacts.math.Function instance =
                 function.instantiate(parameterValues);
 
@@ -171,9 +184,7 @@
                 DateRange analysisPeriod = analysisPeriods[ap];
                 TIntIntHashMap col2index = col2indices[ap];
 
-                DateRangeFilter drf = new DateRangeFilter(
-                    analysisPeriod.getFrom(),
-                    analysisPeriod.getTo());
+                DateRangeFilter drf = drfs[ap];
 
                 QWD []    qSectorAverages = new QWD[4];
                 double [] qSectorStdDevs  = new double[4];
@@ -291,8 +302,9 @@
                 parameters.set(row, maxQIndex, maxQ);
             }
 
-            results.add(km, periodResults.toArray(
-                new AnalysisPeriod[periodResults.size()]));
+            AnalysisPeriod [] rap = new AnalysisPeriod[periodResults.size()];
+            periodResults.toArray(rap);
+            results.add(km, rap);
         }
 
         return results;

http://dive4elements.wald.intevation.org