Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedloadDiameterDataFacet.java @ 8180:00066d3add94
The existing implementation respects the fact that months are 0-based.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 03 Sep 2014 18:21:35 +0200 |
parents | 5acaf44062b5 |
children | e4606eae8ea5 |
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 { |
7540
9344aa0fb021
Fixed logger instantiations that were done with wrong class.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7261
diff
changeset
|
18 private static final Logger logger = 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"); |
7988
5acaf44062b5
Updated meta data in facets.
Raimund Renkert <rrenkert@intevation.de>
parents:
7987
diff
changeset
|
33 this.metaData.put("Y", "chart.bedquality.yaxis.label"); |
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 } |