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