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