Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityCalculation.java @ 3760:312870fded7e
Added result objects for minfo bed quality calculation.
flys-artifacts/trunk@5459 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Thu, 13 Sep 2012 13:51:00 +0000 |
parents | |
children | 728ecd2afa20 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedQualityCalculation.java Thu Sep 13 13:51:00 2012 +0000 @@ -0,0 +1,103 @@ +package de.intevation.flys.artifacts.model.minfo; + +import java.util.LinkedList; +import java.util.List; + +import org.apache.log4j.Logger; + +import de.intevation.flys.artifacts.access.BedQualityAccess; +import de.intevation.flys.artifacts.model.Calculation; +import de.intevation.flys.artifacts.model.CalculationResult; +import de.intevation.flys.artifacts.model.DateRange; +import de.intevation.flys.backend.SedDBSessionHolder; + + +public class BedQualityCalculation extends Calculation { + + private static final Logger logger = Logger + .getLogger(BedQualityCalculation.class); + + protected String river; + protected double from; + protected double to; + protected List<DateRange> ranges; + + public BedQualityCalculation() { + } + + public CalculationResult calculate(BedQualityAccess access) { + logger.info("BedQualityCalculation.calculate"); + + String river = access.getRiver(); + Double from = access.getFrom(); + Double to = access.getTo(); + List<DateRange> ranges = access.getDateRanges(); + + if (river == null) { + // TODO: i18n + addProblem("minfo.missing.river"); + } + + if (from == null) { + // TODO: i18n + addProblem("minfo.missing.from"); + } + + if (to == null) { + // TODO: i18n + addProblem("minfo.missing.to"); + } + + if (ranges == null) { + // TODO: i18n + addProblem("minfo.missing.periods"); + } + + if (!hasProblems()) { + this.river = river; + this.from = from; + this.to = to; + this.ranges = ranges; + + SedDBSessionHolder.acquire(); + try { + return internalCalculate(); + } + finally { + SedDBSessionHolder.release(); + } + } + + return new CalculationResult(); + } + + protected CalculationResult internalCalculate() { + + List<BedQualityResult> results = new LinkedList<BedQualityResult>(); + // Calculate for all time periods. + for (DateRange dr : ranges) { + QualityMeasurements bedMeasurements = QualityMeasurementFactory + .getBedMeasurements(river, from, to, dr.getFrom(), dr.getTo()); + QualityMeasurements loadMeasurements = QualityMeasurementFactory + .getBedMeasurements(river, from, to, dr.getFrom(), dr.getTo()); + + BedQualityResult bedResult = calculateBed(bedMeasurements); + BedQualityResult loadResult = calculateBedload(loadMeasurements); + results.add(bedResult); + results.add(loadResult); + } + + return new CalculationResult( + results.toArray(new BedQualityResult[results.size()]), this); + } + + protected BedQualityResult calculateBed(QualityMeasurements qm) { + // TODO + return new BedQualityResult(); + } + + protected BedQualityResult calculateBedload(QualityMeasurements qm) { + // TODO + return new BedQualityResult(); + } +}