Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiameterDataFacet.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 | 06ee8e2f8b0b |
children | a56fe3bc6700 |
rev | line source |
---|---|
6250
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package org.dive4elements.river.artifacts.model.minfo; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 import gnu.trove.TDoubleArrayList; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 import org.apache.log4j.Logger; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 import org.dive4elements.artifactdatabase.state.Facet; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 import org.dive4elements.artifacts.Artifact; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 import org.dive4elements.artifacts.CallContext; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 import org.dive4elements.river.artifacts.D4EArtifact; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 import org.dive4elements.river.artifacts.access.BedQualityAccess; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import org.dive4elements.river.artifacts.model.DataFacet; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 public class BedDiameterDataFacet |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 extends DataFacet |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 { |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 private static final Logger logger = Logger.getLogger(BedDiameterDataFacet.class); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 public BedDiameterDataFacet() { |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
20 } |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 public BedDiameterDataFacet( |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 int ndx, |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 String name, |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 String description, |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 ComputeType type, |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 String stateId, |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 String hash |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 ) { |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 super(ndx, name, description, type, hash, stateId); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 } |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 public Object getData(Artifact artifact, CallContext context) { |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 D4EArtifact d4e = (D4EArtifact) artifact; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 BedQualityAccess access = new BedQualityAccess(d4e, context); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 int ndx = getIndex() & 7; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 int top = (getIndex() >> 3) & 1; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 int diam = (getIndex() >> 4); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 String diameter = ""; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 switch (diam) { |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 case 1: diameter = "d10"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 case 2: diameter = "d16"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 case 3: diameter = "d20"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 case 4: diameter = "d25"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 case 5: diameter = "d30"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 case 6: diameter = "d40"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 case 7: diameter = "d50"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 case 8: diameter = "d60"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 case 9: diameter = "d70"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 case 10: diameter = "d75"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 case 11: diameter = "d80"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 case 12: diameter = "d84"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 case 13: diameter = "d90"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 case 14: diameter = "dmin"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 case 15: diameter = "dmax"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 case 16: diameter = "dm"; break; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 default: return null; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 } |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 QualityMeasurements measurements = |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 QualityMeasurementFactory.getBedMeasurements( |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 access.getRiver(), |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 access.getFrom(), |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 access.getTo(), |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 access.getDateRanges().get(ndx).getFrom(), |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 access.getDateRanges().get(ndx).getTo()); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 TDoubleArrayList kms = new TDoubleArrayList(); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 TDoubleArrayList data = new TDoubleArrayList(); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 for (QualityMeasurement m : measurements.getMeasurements()) { |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 if (top == 1 && m.getDepth1() == 0d && m.getDepth2() <= 0.3) { |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 kms.add(m.getKm()); |
6259
06ee8e2f8b0b
Removed obsolete member and minor code style.
Raimund Renkert <rrenkert@intevation.de>
parents:
6250
diff
changeset
|
72 data.add(m.getDiameter(diameter) * 1000); |
6250
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 } |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 else if (top == 0 && m.getDepth1() > 0d && m.getDepth2() <= 0.5){ |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 kms.add(m.getKm()); |
6259
06ee8e2f8b0b
Removed obsolete member and minor code style.
Raimund Renkert <rrenkert@intevation.de>
parents:
6250
diff
changeset
|
76 data.add(m.getDiameter(diameter) * 1000); |
6250
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 } |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 } |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 BedDiameterData bdd = new BedDiameterData(diameter, kms, data); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 return bdd; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 } |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 /** Copy deeply. */ |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 @Override |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 public Facet deepCopy() { |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 BedDiameterDataFacet copy = new BedDiameterDataFacet(); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 copy.set(this); |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 copy.type = type; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 copy.hash = hash; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
90 copy.stateId = stateId; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
91 return copy; |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
92 } |
267119b38779
Added container and facet for bed diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
93 } |