annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedloadDiameterDataFacet.java @ 7357:9d3e44ab25f2

Refactoring: Move functionality of BedHeightAccess into BedHeightFacet for now. Idea is that Artifact and Access are lightweight. Access access the 'data' ('parameterization') attached to artifact, not the data delivered by means of artifact and its parameterization.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 16 Oct 2013 10:42:45 +0200
parents a56fe3bc6700
children 9344aa0fb021
rev   line source
6260
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 package org.dive4elements.river.artifacts.model.minfo;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 import gnu.trove.TDoubleArrayList;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 import org.apache.log4j.Logger;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 import org.dive4elements.artifactdatabase.state.Facet;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 import org.dive4elements.artifacts.Artifact;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8 import org.dive4elements.artifacts.CallContext;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 import org.dive4elements.river.artifacts.D4EArtifact;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10 import org.dive4elements.river.artifacts.access.BedQualityAccess;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import org.dive4elements.river.artifacts.model.DataFacet;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 public class BedloadDiameterDataFacet
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 extends DataFacet
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 private static final Logger logger = Logger.getLogger(BedDiameterDataFacet.class);
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 public BedloadDiameterDataFacet() {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 public BedloadDiameterDataFacet(
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 int ndx,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25 String name,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 String description,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 ComputeType type,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 String stateId,
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 String hash
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 ) {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 super(ndx, name, description, type, hash, stateId);
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 public Object getData(Artifact artifact, CallContext context) {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 D4EArtifact d4e = (D4EArtifact) artifact;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 BedQualityAccess access = new BedQualityAccess(d4e, context);
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 int ndx = getIndex() & 7;
6357
673e146e7793 Fixed bed quality data facet index to get the correct diameter.
Raimund Renkert <rrenkert@intevation.de>
parents: 6260
diff changeset
38 int diam = (getIndex() >> 4);
6260
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 String diameter = "";
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 switch (diam) {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 case 1: diameter = "d10"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 case 2: diameter = "d16"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 case 3: diameter = "d20"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 case 4: diameter = "d25"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 case 5: diameter = "d30"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 case 6: diameter = "d40"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 case 7: diameter = "d50"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 case 8: diameter = "d60"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 case 9: diameter = "d70"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 case 10: diameter = "d75"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 case 11: diameter = "d80"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52 case 12: diameter = "d84"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 case 13: diameter = "d90"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54 case 14: diameter = "dmin"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
55 case 15: diameter = "dmax"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
56 case 16: diameter = "dm"; break;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
57 default: return null;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60 QualityMeasurements measurements =
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
61 QualityMeasurementFactory.getBedloadMeasurements(
7261
a56fe3bc6700 Refactoring: Let RiverAccess.getRiver return an River.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6357
diff changeset
62 access.getRiverName(),
6260
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
63 access.getFrom(),
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
64 access.getTo(),
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
65 access.getDateRanges().get(ndx).getFrom(),
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
66 access.getDateRanges().get(ndx).getTo());
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
67 TDoubleArrayList kms = new TDoubleArrayList();
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
68 TDoubleArrayList data = new TDoubleArrayList();
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
69 for (QualityMeasurement m : measurements.getMeasurements()) {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
70 kms.add(m.getKm());
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
71 data.add(m.getDiameter(diameter)*1000);
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
72 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
73 BedDiameterData bdd = new BedDiameterData(diameter, kms, data);
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
74 return bdd;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
75 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
76
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
77 /** Copy deeply. */
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
78 @Override
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
79 public Facet deepCopy() {
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
80 BedloadDiameterDataFacet copy = new BedloadDiameterDataFacet();
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
81 copy.set(this);
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
82 copy.type = type;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
83 copy.hash = hash;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
84 copy.stateId = stateId;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
85 return copy;
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
86 }
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
87 }

http://dive4elements.wald.intevation.org