Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedloadDiameterDataFacet.java @ 6665:b7945db8a43b
issue1413: Only show unknown sediment loads of selected unit type.
Therefore, adjusted the factory to take the units name. Unfortunately,
names in db do not match values of data items. Thus do manual replacing.
In Facet and Calculate, take the chosen unit via access and to the string
replacement.
In Facet, do not transform data (we assume it comes in unit as labeled in
the db), and removed the possibility of m3/a-data of unknown yields in a
t/a diagram and vice versa.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Thu, 25 Jul 2013 15:08:13 +0200 |
parents | 673e146e7793 |
children | a56fe3bc6700 |
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 { |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 private static final Logger logger = Logger.getLogger(BedDiameterDataFacet.class); |
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); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 } |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 public Object getData(Artifact artifact, CallContext context) { |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 D4EArtifact d4e = (D4EArtifact) artifact; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 BedQualityAccess access = new BedQualityAccess(d4e, context); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 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
|
38 int diam = (getIndex() >> 4); |
6260
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 String diameter = ""; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 switch (diam) { |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 case 1: diameter = "d10"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 case 2: diameter = "d16"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 case 3: diameter = "d20"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 case 4: diameter = "d25"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 case 5: diameter = "d30"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 case 6: diameter = "d40"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 case 7: diameter = "d50"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 case 8: diameter = "d60"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 case 9: diameter = "d70"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 case 10: diameter = "d75"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 case 11: diameter = "d80"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 case 12: diameter = "d84"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 case 13: diameter = "d90"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 case 14: diameter = "dmin"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 case 15: diameter = "dmax"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 case 16: diameter = "dm"; break; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 default: return null; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 } |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 QualityMeasurements measurements = |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 QualityMeasurementFactory.getBedloadMeasurements( |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 access.getRiver(), |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 access.getFrom(), |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 access.getTo(), |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 access.getDateRanges().get(ndx).getFrom(), |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 access.getDateRanges().get(ndx).getTo()); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 TDoubleArrayList kms = new TDoubleArrayList(); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 TDoubleArrayList data = new TDoubleArrayList(); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 for (QualityMeasurement m : measurements.getMeasurements()) { |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 kms.add(m.getKm()); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 data.add(m.getDiameter(diameter)*1000); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 } |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 BedDiameterData bdd = new BedDiameterData(diameter, kms, data); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 return bdd; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 } |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 /** Copy deeply. */ |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 @Override |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 public Facet deepCopy() { |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 BedloadDiameterDataFacet copy = new BedloadDiameterDataFacet(); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 copy.set(this); |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 copy.type = type; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 copy.hash = hash; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 copy.stateId = stateId; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 return copy; |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 } |
947434874937
New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 } |