Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedQualityCalculation.java @ 8657:4054c7fce43e
(issue1755) Add problem / report handling to BedQualityCalculation
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Thu, 02 Apr 2015 15:48:48 +0200 |
parents | 36faef4f8acb |
children | 0c241f03ebcd |
comparison
equal
deleted
inserted
replaced
8656:3a9ce890e4c7 | 8657:4054c7fce43e |
---|---|
85 } | 85 } |
86 } | 86 } |
87 | 87 |
88 return new CalculationResult(); | 88 return new CalculationResult(); |
89 } | 89 } |
90 | |
91 /** Adds non empty values to a result and adds Problems for empty ones.*/ | |
92 protected void addValuesToResult(BedQualityResult result, | |
93 BedQualityResultValue[] values) { | |
94 for (BedQualityResultValue value: values) { | |
95 if (value.isEmpty()) { | |
96 if (value.isDiameterResult()) { | |
97 log.debug("Adding diameter problem"); | |
98 addProblem("bedquality.missing.diameter." + | |
99 value.getType(), value.getName().toUpperCase(), | |
100 result.getDateRange().getFrom(), | |
101 result.getDateRange().getTo()); | |
102 } else { | |
103 log.debug("Adding diameter problem"); | |
104 addProblem("bedquality.missing." + value.getName() + "." + | |
105 value.getType(), result.getDateRange().getFrom(), | |
106 result.getDateRange().getTo()); | |
107 } | |
108 } else { | |
109 log.debug("Adding unproblematic result"); | |
110 result.add(value); | |
111 } | |
112 } | |
113 } | |
114 | |
90 | 115 |
91 protected CalculationResult internalCalculate() { | 116 protected CalculationResult internalCalculate() { |
92 | 117 |
93 List<BedQualityResult> results = new LinkedList<BedQualityResult>(); | 118 List<BedQualityResult> results = new LinkedList<BedQualityResult>(); |
94 // Calculate for all time periods. | 119 // Calculate for all time periods. |
109 dr.getTo()); | 134 dr.getTo()); |
110 BedQualityResult result = new BedQualityResult(); | 135 BedQualityResult result = new BedQualityResult(); |
111 result.setDateRange(dr); | 136 result.setDateRange(dr); |
112 if (!bedDiameter.isEmpty()) { | 137 if (!bedDiameter.isEmpty()) { |
113 log.debug("Bed diameter is not empty + " + bedDiameter); | 138 log.debug("Bed diameter is not empty + " + bedDiameter); |
114 result.add(calculateBedParameter(bedMeasurements)); | 139 addValuesToResult(result, calculateBedParameter(bedMeasurements)); |
115 for (String bd : bedDiameter) { | 140 for (String bd : bedDiameter) { |
116 result.add (calculateBed(bedMeasurements, bd)); | 141 addValuesToResult(result, calculateBed(bedMeasurements, bd)); |
117 } | 142 } |
118 } | 143 } |
119 if (!bedloadDiameter.isEmpty()) { | 144 if (!bedloadDiameter.isEmpty()) { |
120 for (String bld : bedloadDiameter) { | 145 for (String bld : bedloadDiameter) { |
121 result.add(calculateBedload(loadMeasurements, bld)); | 146 addValuesToResult(result, calculateBedload(loadMeasurements, bld)); |
122 } | 147 } |
123 } | 148 } |
124 results.add(result); | 149 results.add(result); |
125 } | 150 } |
126 | 151 |
238 } | 263 } |
239 | 264 |
240 return results; | 265 return results; |
241 } | 266 } |
242 | 267 |
243 protected BedQualityResultValue calculateBedload( | 268 protected BedQualityResultValue[] calculateBedload( |
244 QualityMeasurements qm, | 269 QualityMeasurements qm, |
245 String diameter | 270 String diameter |
246 ) { | 271 ) { |
247 List<Double> kms = qm.getKms(); | 272 List<Double> kms = qm.getKms(); |
248 TDoubleArrayList location = new TDoubleArrayList(); | 273 TDoubleArrayList location = new TDoubleArrayList(); |
251 List<QualityMeasurement> measurements = qm.getMeasurements(km); | 276 List<QualityMeasurement> measurements = qm.getMeasurements(km); |
252 double mid = calculateAverage(measurements, diameter); | 277 double mid = calculateAverage(measurements, diameter); |
253 location.add(km); | 278 location.add(km); |
254 avDiameter.add(mid * 1000); | 279 avDiameter.add(mid * 1000); |
255 } | 280 } |
256 return new BedQualityResultValue(diameter, | 281 return new BedQualityResultValue[] { |
282 new BedQualityResultValue(diameter, | |
257 new double[][] {location.toNativeArray(), avDiameter.toNativeArray()}, | 283 new double[][] {location.toNativeArray(), avDiameter.toNativeArray()}, |
258 "bedload"); | 284 "bedload")}; |
259 } | 285 } |
260 | 286 |
261 protected double calculateAverage( | 287 protected double calculateAverage( |
262 List<QualityMeasurement> list, | 288 List<QualityMeasurement> list, |
263 String diameter | 289 String diameter |