Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedloadDiameterDataFacet.java @ 6260:947434874937
New facet for bedload diameter measurements.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Tue, 11 Jun 2013 09:17:29 +0200 |
parents | |
children | 673e146e7793 |
comparison
equal
deleted
inserted
replaced
6259:06ee8e2f8b0b | 6260:947434874937 |
---|---|
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 | |
15 public class BedloadDiameterDataFacet | |
16 extends DataFacet | |
17 { | |
18 private static final Logger logger = Logger.getLogger(BedDiameterDataFacet.class); | |
19 | |
20 public BedloadDiameterDataFacet() { | |
21 } | |
22 | |
23 public BedloadDiameterDataFacet( | |
24 int ndx, | |
25 String name, | |
26 String description, | |
27 ComputeType type, | |
28 String stateId, | |
29 String hash | |
30 ) { | |
31 super(ndx, name, description, type, hash, stateId); | |
32 } | |
33 | |
34 public Object getData(Artifact artifact, CallContext context) { | |
35 D4EArtifact d4e = (D4EArtifact) artifact; | |
36 BedQualityAccess access = new BedQualityAccess(d4e, context); | |
37 int ndx = getIndex() & 7; | |
38 int diam = (getIndex() >> 3); | |
39 String diameter = ""; | |
40 switch (diam) { | |
41 case 1: diameter = "d10"; break; | |
42 case 2: diameter = "d16"; break; | |
43 case 3: diameter = "d20"; break; | |
44 case 4: diameter = "d25"; break; | |
45 case 5: diameter = "d30"; break; | |
46 case 6: diameter = "d40"; break; | |
47 case 7: diameter = "d50"; break; | |
48 case 8: diameter = "d60"; break; | |
49 case 9: diameter = "d70"; break; | |
50 case 10: diameter = "d75"; break; | |
51 case 11: diameter = "d80"; break; | |
52 case 12: diameter = "d84"; break; | |
53 case 13: diameter = "d90"; break; | |
54 case 14: diameter = "dmin"; break; | |
55 case 15: diameter = "dmax"; break; | |
56 case 16: diameter = "dm"; break; | |
57 default: return null; | |
58 } | |
59 | |
60 QualityMeasurements measurements = | |
61 QualityMeasurementFactory.getBedloadMeasurements( | |
62 access.getRiver(), | |
63 access.getFrom(), | |
64 access.getTo(), | |
65 access.getDateRanges().get(ndx).getFrom(), | |
66 access.getDateRanges().get(ndx).getTo()); | |
67 TDoubleArrayList kms = new TDoubleArrayList(); | |
68 TDoubleArrayList data = new TDoubleArrayList(); | |
69 for (QualityMeasurement m : measurements.getMeasurements()) { | |
70 kms.add(m.getKm()); | |
71 data.add(m.getDiameter(diameter)*1000); | |
72 } | |
73 BedDiameterData bdd = new BedDiameterData(diameter, kms, data); | |
74 return bdd; | |
75 } | |
76 | |
77 /** Copy deeply. */ | |
78 @Override | |
79 public Facet deepCopy() { | |
80 BedloadDiameterDataFacet copy = new BedloadDiameterDataFacet(); | |
81 copy.set(this); | |
82 copy.type = type; | |
83 copy.hash = hash; | |
84 copy.stateId = stateId; | |
85 return copy; | |
86 } | |
87 } |