annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/QualityMeasurement.java @ 8587:07c9ac22f611

(issue1755) Generalise BedQuality result handling The bedquality calculation now produces a result for each time period which has BedQualityResultValues for each specific result type. Formally this was split up in density, porosity and diameter classes with some bedload diameter classes mixed in for extra fun. The intent of this commit is to allow more shared code and generic access patterns to the BedQuality results.
author Andre Heinecke <andre.heinecke@intevation.de>
date Wed, 18 Mar 2015 18:42:08 +0100
parents e4606eae8ea5
children 0a5239a1e46e
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
9 package org.dive4elements.river.artifacts.model.minfo;
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
10
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
11 import java.util.Date;
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
12 import java.util.Map;
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
13
6757
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
14 import org.apache.log4j.Logger;
3758
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
15
6757
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
16 /** A measurement of the bed quality, serving different diameter at given km. */
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
17 public class QualityMeasurement {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7540
diff changeset
18 private static Logger log = Logger.getLogger(QualityMeasurement.class);
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
19
3758
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
20 private double km;
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
21 private Date date;
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
22 private double depth1;
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
23 private double depth2;
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
24 private Map<String, Double> charDiameter;
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
25
6766
4902d3ead541 Made trivial QualityMeasurement-constructor private, as it shouldnt be used.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6757
diff changeset
26 private QualityMeasurement() {
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
27
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
28 }
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30 public QualityMeasurement(
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 double km,
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 Date date,
3758
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
33 double depth1,
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
34 double depth2,
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
35 Map<String, Double> diameter) {
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 this.setKm(km);
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
37 this.setDate(date);
3758
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
38 this.depth1 = depth1;
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
39 this.depth2 = depth2;
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
40 this.setDiameter(diameter);
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
41 }
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
43 public double getKm() {
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 return km;
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 }
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47 public void setKm(double km) {
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48 this.km = km;
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 }
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 public Date getDate() {
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 return date;
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 }
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55 public void setDate(Date date) {
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
56 this.date = date;
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
57 }
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
58
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
59 public Map<String, Double> getAllDiameter() {
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60 return charDiameter;
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 }
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 public void setDiameter(Map<String, Double> charDiameter) {
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 this.charDiameter = charDiameter;
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 }
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66
6757
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
67 /**
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
68 * Get the stored diameter for given key (e.g. d10).
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
69 * @return NaN if no data found in this measurement.
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
70 */
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71 public double getDiameter(String key) {
6757
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
72 Double diameter = charDiameter.get(key);
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
73 if (diameter == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7540
diff changeset
74 log.warn("No Diameter at km " + km + " for " + key);
6757
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
75 }
e0ac1b19dfcc issue1435: Tolerate missing measurement values in QualityMeasurements.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
76 return (diameter != null) ? diameter : Double.NaN;
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
77 }
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
78
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
79 public void setDiameter(String key, double value) {
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
80 charDiameter.put(key, value);
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
81 }
3758
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
82
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
83 public double getDepth1() {
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
84 return depth1;
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
85 }
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
86
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
87 public void setDepth1(double depth1) {
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
88 this.depth1 = depth1;
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
89 }
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
90
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
91 public double getDepth2() {
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
92 return depth2;
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
93 }
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
94
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
95 public void setDepth2(double depth2) {
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
96 this.depth2 = depth2;
75bc96dd9d82 Added depth parameter to bed quality data.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3755
diff changeset
97 }
3755
9c555ce5ca50 Data objects and factory for minfo bedquality calculation.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
98 }

http://dive4elements.wald.intevation.org