annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedloadDiameterDataFacet.java @ 6665:b7945db8a43b

issue1413: Only show unknown sediment loads of selected unit type. Therefore, adjusted the factory to take the units name. Unfortunately, names in db do not match values of data items. Thus do manual replacing. In Facet and Calculate, take the chosen unit via access and to the string replacement. In Facet, do not transform data (we assume it comes in unit as labeled in the db), and removed the possibility of m3/a-data of unknown yields in a t/a diagram and vice versa.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 25 Jul 2013 15:08:13 +0200
parents 673e146e7793
children a56fe3bc6700
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(
947434874937 New facet for bedload diameter measurements.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
62 access.getRiver(),
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