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

http://dive4elements.wald.intevation.org