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 }

http://dive4elements.wald.intevation.org