Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedDiameterDataFacet.java @ 6951:f5f60b3d9180
Doc fix.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 30 Aug 2013 12:31:33 +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 } |