Mercurial > dive4elements > river
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 :