diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataCalculation.java @ 8053:72760ca2fc2b

Sediment load: dispatch calculation modes.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 18 Jul 2014 11:58:59 +0200
parents 1dae69eff79d
children cd35b76f1ef8
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataCalculation.java	Fri Jul 18 11:16:50 2014 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataCalculation.java	Fri Jul 18 11:58:59 2014 +0200
@@ -13,10 +13,13 @@
 import org.dive4elements.river.artifacts.access.SedimentLoadAccess;
 import org.dive4elements.river.artifacts.model.Calculation;
 import org.dive4elements.river.artifacts.model.CalculationResult;
+import org.dive4elements.river.artifacts.model.RiverFactory;
 import org.apache.log4j.Logger;
 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData;
 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Value;
 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Station;
+import org.dive4elements.river.model.River;
+import org.dive4elements.river.utils.DoubleUtil;
 
 public class SedimentLoadDataCalculation
 extends      Calculation
@@ -173,20 +176,43 @@
             return internalCalculate();
         }
 
-        return new CalculationResult();
+        return new CalculationResult(this);
     }
 
     private CalculationResult internalCalculate() {
+        if ("year".equals(yearEpoch))      return calculateYears();
+        if ("epoch".equals(yearEpoch))     return calculateEpochs();
+        if ("off_epoch".equals(yearEpoch)) return calculateOffEpochs();
+
+        // TODO: i18n
+        addProblem("minfo.sediment.load.unknown.calc.mode");
+
+        return new CalculationResult(this);
+    }
+
+    private CalculationResult calculateYears() {
         // TODO: Implement me!
         return null;
     }
 
-    private static final double sum(double [] values) {
-        double sum = 0.0;
-        for (double value: values) {
-            sum += value;
+    private CalculationResult calculateEpochs() {
+        // TODO: Implement me!
+        return null;
+    }
+
+    private CalculationResult calculateOffEpochs() {
+        // TODO: Implement me!
+        return null;
+    }
+
+    /** Figure out flow direction of river. */
+    private boolean isKmUp() {
+        River r = RiverFactory.getRiver(river);
+        if (r == null) {
+            addProblem("minfo.missing.river");
+            return true;
         }
-        return sum;
+        return r.getKmUp();
     }
 
     public double[][] sum(
@@ -228,7 +254,7 @@
                 }
             }
             result[0][j] = station.getStation();
-            result[1][j] = sum(values);
+            result[1][j] = DoubleUtil.sum(values);
         }
 
         // TODO: Handle 'virtual' measument stations 'from' and 'to'.

http://dive4elements.wald.intevation.org