comparison 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
comparison
equal deleted inserted replaced
3759:e54f8dc222cf 3760:312870fded7e
1 package de.intevation.flys.artifacts.model.minfo;
2
3 import java.util.LinkedList;
4 import java.util.List;
5
6 import org.apache.log4j.Logger;
7
8 import de.intevation.flys.artifacts.access.BedQualityAccess;
9 import de.intevation.flys.artifacts.model.Calculation;
10 import de.intevation.flys.artifacts.model.CalculationResult;
11 import de.intevation.flys.artifacts.model.DateRange;
12 import de.intevation.flys.backend.SedDBSessionHolder;
13
14
15 public class BedQualityCalculation extends Calculation {
16
17 private static final Logger logger = Logger
18 .getLogger(BedQualityCalculation.class);
19
20 protected String river;
21 protected double from;
22 protected double to;
23 protected List<DateRange> ranges;
24
25 public BedQualityCalculation() {
26 }
27
28 public CalculationResult calculate(BedQualityAccess access) {
29 logger.info("BedQualityCalculation.calculate");
30
31 String river = access.getRiver();
32 Double from = access.getFrom();
33 Double to = access.getTo();
34 List<DateRange> ranges = access.getDateRanges();
35
36 if (river == null) {
37 // TODO: i18n
38 addProblem("minfo.missing.river");
39 }
40
41 if (from == null) {
42 // TODO: i18n
43 addProblem("minfo.missing.from");
44 }
45
46 if (to == null) {
47 // TODO: i18n
48 addProblem("minfo.missing.to");
49 }
50
51 if (ranges == null) {
52 // TODO: i18n
53 addProblem("minfo.missing.periods");
54 }
55
56 if (!hasProblems()) {
57 this.river = river;
58 this.from = from;
59 this.to = to;
60 this.ranges = ranges;
61
62 SedDBSessionHolder.acquire();
63 try {
64 return internalCalculate();
65 }
66 finally {
67 SedDBSessionHolder.release();
68 }
69 }
70
71 return new CalculationResult();
72 }
73
74 protected CalculationResult internalCalculate() {
75
76 List<BedQualityResult> results = new LinkedList<BedQualityResult>();
77 // Calculate for all time periods.
78 for (DateRange dr : ranges) {
79 QualityMeasurements bedMeasurements = QualityMeasurementFactory
80 .getBedMeasurements(river, from, to, dr.getFrom(), dr.getTo());
81 QualityMeasurements loadMeasurements = QualityMeasurementFactory
82 .getBedMeasurements(river, from, to, dr.getFrom(), dr.getTo());
83
84 BedQualityResult bedResult = calculateBed(bedMeasurements);
85 BedQualityResult loadResult = calculateBedload(loadMeasurements);
86 results.add(bedResult);
87 results.add(loadResult);
88 }
89
90 return new CalculationResult(
91 results.toArray(new BedQualityResult[results.size()]), this);
92 }
93
94 protected BedQualityResult calculateBed(QualityMeasurements qm) {
95 // TODO
96 return new BedQualityResult();
97 }
98
99 protected BedQualityResult calculateBedload(QualityMeasurements qm) {
100 // TODO
101 return new BedQualityResult();
102 }
103 }

http://dive4elements.wald.intevation.org