annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedloadDiameterDataFacet.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 48d4921665e3
children 5e38e2924c07
rev   line source
6260
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 package org.dive4elements.river.artifacts.model.minfo;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 import gnu.trove.TDoubleArrayList;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 import org.apache.log4j.Logger;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 import org.dive4elements.artifactdatabase.state.Facet;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 import org.dive4elements.artifacts.Artifact;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8 import org.dive4elements.artifacts.CallContext;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 import org.dive4elements.river.artifacts.D4EArtifact;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10 import org.dive4elements.river.artifacts.access.BedQualityAccess;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import org.dive4elements.river.artifacts.model.DataFacet;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 public class BedloadDiameterDataFacet
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 extends DataFacet
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7988
diff changeset
18 private static final Logger log = Logger.getLogger(BedloadDiameterDataFacet.class);
6260
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 public BedloadDiameterDataFacet() {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 public BedloadDiameterDataFacet(
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 int ndx,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25 String name,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 String description,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 ComputeType type,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 String stateId,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 String hash
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 ) {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 super(ndx, name, description, type, hash, stateId);
7894
42076d94977e Added metadata to facets.
Raimund Renkert <rrenkert@intevation.de>
parents: 7540
diff changeset
32 this.metaData.put("X", "chart.longitudinal.section.xaxis.label");
8260
48d4921665e3 Making i18n work was just easier using less wrappers in this case (issue1631).
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
33 this.metaData.put("Y", "chart.bedquality.yaxis.label.diameter");
6260
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 public Object getData(Artifact artifact, CallContext context) {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 D4EArtifact d4e = (D4EArtifact) artifact;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 BedQualityAccess access = new BedQualityAccess(d4e, context);
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 int ndx = getIndex() & 7;
6357
673e146e7793 Fixed bed quality data facet index to get the correct diameter.
Raimund Renkert <rrenkert@intevation.de>
parents: 6260
diff changeset
40 int diam = (getIndex() >> 4);
6260
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 String diameter = "";
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 switch (diam) {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 case 1: diameter = "d10"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 case 2: diameter = "d16"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 case 3: diameter = "d20"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 case 4: diameter = "d25"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 case 5: diameter = "d30"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 case 6: diameter = "d40"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 case 7: diameter = "d50"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 case 8: diameter = "d60"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 case 9: diameter = "d70"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52 case 10: diameter = "d75"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 case 11: diameter = "d80"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 case 12: diameter = "d84"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55 case 13: diameter = "d90"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56 case 14: diameter = "dmin"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 case 15: diameter = "dmax"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 case 16: diameter = "dm"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59 default: return null;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62 QualityMeasurements measurements =
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63 QualityMeasurementFactory.getBedloadMeasurements(
7261
a56fe3bc6700 Refactoring: Let RiverAccess.getRiver return an River.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6357
diff changeset
64 access.getRiverName(),
6260
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 access.getFrom(),
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66 access.getTo(),
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 access.getDateRanges().get(ndx).getFrom(),
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 access.getDateRanges().get(ndx).getTo());
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 TDoubleArrayList kms = new TDoubleArrayList();
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 TDoubleArrayList data = new TDoubleArrayList();
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 for (QualityMeasurement m : measurements.getMeasurements()) {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 kms.add(m.getKm());
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73 data.add(m.getDiameter(diameter)*1000);
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
75 BedDiameterData bdd = new BedDiameterData(diameter, kms, data);
7987
98ca61cb58fb Split bed quality facets and updated processors and state.
Raimund Renkert <rrenkert@intevation.de>
parents: 7894
diff changeset
76 return bdd.getDiameterData();
6260
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79 /** Copy deeply. */
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
80 @Override
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
81 public Facet deepCopy() {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82 BedloadDiameterDataFacet copy = new BedloadDiameterDataFacet();
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
83 copy.set(this);
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
84 copy.type = type;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
85 copy.hash = hash;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
86 copy.stateId = stateId;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
87 return copy;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
88 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
89 }

http://dive4elements.wald.intevation.org