diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixCalculation.java @ 3437:e111902834d3

FixA: Made calculation base class abstract. Sub classes are called with fixings overview an function to fit. flys-artifacts/trunk@5100 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 23 Jul 2012 09:09:49 +0000
parents 262e7d7e58fe
children b5eec54bd4a2
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixCalculation.java	Mon Jul 23 08:38:23 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixCalculation.java	Mon Jul 23 09:09:49 2012 +0000
@@ -5,8 +5,10 @@
 import de.intevation.flys.artifacts.access.FixAccess;
 
 import de.intevation.flys.artifacts.math.fitting.Function;
+import de.intevation.flys.artifacts.math.fitting.FunctionFactory;
 
 import de.intevation.flys.artifacts.model.Calculation;
+import de.intevation.flys.artifacts.model.CalculationResult;
 import de.intevation.flys.artifacts.model.FixingsColumn;
 import de.intevation.flys.artifacts.model.FixingsColumnFactory;
 
@@ -16,6 +18,7 @@
 import de.intevation.flys.artifacts.model.FixingsOverview.IdsFilter;
 
 import de.intevation.flys.artifacts.model.FixingsOverview;
+import de.intevation.flys.artifacts.model.FixingsOverviewFactory;
 import de.intevation.flys.artifacts.model.Parameters;
 
 import de.intevation.flys.utils.DoubleUtil;
@@ -29,8 +32,8 @@
 
 import org.apache.log4j.Logger;
 
-public class FixCalculation
-extends      Calculation
+public abstract class FixCalculation
+extends               Calculation
 {
     private static Logger log = Logger.getLogger(FixCalculation.class);
 
@@ -373,5 +376,32 @@
             referenced,
             outliers);
     }
+
+    public CalculationResult calculate() {
+        FixingsOverview overview =
+            FixingsOverviewFactory.getOverview(river);
+
+        if (overview == null) {
+            addProblem("fix.no.overview.available");
+        }
+
+        Function func = FunctionFactory.getInstance()
+            .getFunction(function);
+
+        if (func == null) {
+            addProblem("fix.invalid.function.name");
+        }
+
+        if (hasProblems()) {
+            return new CalculationResult(this);
+        }
+
+        return innerCalculate(overview, func);
+    }
+
+    protected abstract CalculationResult innerCalculate(
+        FixingsOverview overview,
+        Function        function
+    );
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org