Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadFacet.java @ 8653:dbec49147f54
(issue1755) Do not create interpolated themes and disable export of non interpolatable data.
Due to the fact that data can contain NaN's which will be filtered out
before creating the interpolator this requires the actual check
for interpolatable data when data is set in the ResultValue
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 01 Apr 2015 17:10:03 +0200 |
parents | 1cd7225df846 |
children | b32c1927f90d |
rev | line source |
---|---|
8098
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
3 * |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
7 */ |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
8 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.minfo; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
10 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
11 import gnu.trove.TDoubleArrayList; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
12 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
13 import org.dive4elements.artifactdatabase.state.Facet; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
14 import org.dive4elements.artifactdatabase.state.StaticFacet; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
15 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
16 import org.dive4elements.artifacts.Artifact; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
17 import org.dive4elements.artifacts.CallContext; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
18 import org.dive4elements.artifacts.CallMeta; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
19 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
20 import org.dive4elements.river.artifacts.D4EArtifact; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
21 import org.dive4elements.river.artifacts.access.RiverAccess; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
22 import org.dive4elements.river.artifacts.resources.Resources; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
23 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
24 import org.dive4elements.river.artifacts.model.DataFacet; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
25 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
26 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
27 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
28 import org.apache.log4j.Logger; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
29 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
30 import org.w3c.dom.Document; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
31 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
32 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
33 /** Facet to access various sediment loads. */ |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
34 public class SedimentLoadFacet |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
35 extends DataFacet |
8148 | 36 implements StaticFacet |
8098
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
37 { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8148
diff
changeset
|
38 private static Logger log = Logger.getLogger(SedimentLoadFacet.class); |
8098
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
39 |
8204
c657ddcf1fa6
Sediment loads at measurement stations and longitudinal sections need different processing and styling for diagrams.
Tom Gottfried <tom@intevation.de>
parents:
8202
diff
changeset
|
40 private static final String NAME = "sedimentload.ta"; |
8098
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
41 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
42 public SedimentLoadFacet() { |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
43 } |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
44 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
45 public SedimentLoadFacet(int idx, String name, String description, |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
46 ComputeType type, String stateId, String hash) { |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
47 super(idx, name, description, type, hash, stateId); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
48 this.metaData.put("X", "chart.longitudinal.section.xaxis.label"); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
49 this.metaData.put("Y", ""); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
50 } |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
51 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
52 @Override |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
53 public Object getData(Artifact artifact, CallContext context) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8148
diff
changeset
|
54 log.debug("get Data"); |
8098
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
55 D4EArtifact arti = (D4EArtifact) artifact; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
56 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
57 RiverAccess access = new RiverAccess(arti); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
58 String idStr = arti.getDataAsString("load_id"); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
59 int id = Integer.valueOf(idStr); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
60 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
61 /* Get all the data from the river. This will be nicely cached. */ |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
62 SedimentLoadData allLoadData = SedimentLoadDataFactory.INSTANCE.getSedimentLoadData( |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
63 access.getRiverName()); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
64 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
65 /* Now lets get what we want */ |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
66 TDoubleArrayList xPos = new TDoubleArrayList(); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
67 TDoubleArrayList yPos = new TDoubleArrayList(); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
68 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
69 for (SedimentLoadData.Station sta: allLoadData.getStations()) { |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
70 double value = sta.findValueByLoadId(id); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
71 xPos.add(sta.getStation()); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
72 yPos.add(value); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
73 } |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
74 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
75 return new double[][] {xPos.toNativeArray(), yPos.toNativeArray()}; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
76 } |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
77 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
78 @Override |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
79 public void setup(Artifact artifact, Document data, CallMeta callMeta) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8148
diff
changeset
|
80 log.debug("setup"); |
8098
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
81 String code = D4EArtifact.getDatacageIDValue(data); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
82 String[] split = code.split(";"); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
83 String idStr = split[0]; |
8113
f5c0ed04f673
Reconstruct facet description of sediment load at measurement stations. i18n will follow.
"Tom Gottfried <tom@intevation.de>"
parents:
8105
diff
changeset
|
84 |
f5c0ed04f673
Reconstruct facet description of sediment load at measurement stations. i18n will follow.
"Tom Gottfried <tom@intevation.de>"
parents:
8105
diff
changeset
|
85 String fraction = split.length >= 2 ? split[1] : ""; |
8142
d4e4dde1d5cb
With the exception of real calculation results, descriptions of sediment loads can all follow the same pattern.
Tom Gottfried <tom@intevation.de>
parents:
8138
diff
changeset
|
86 String years = split.length >= 3 ? split[2] : ""; |
8222
1cd7225df846
Let official epochs be showy and remove detritus of 'yields' in datacage config.
Tom Gottfried <tom@intevation.de>
parents:
8215
diff
changeset
|
87 String kind = split.length >= 4 ? split[3] : ""; |
8098
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
88 |
8204
c657ddcf1fa6
Sediment loads at measurement stations and longitudinal sections need different processing and styling for diagrams.
Tom Gottfried <tom@intevation.de>
parents:
8202
diff
changeset
|
89 // Name has the pattern sedimentload.ta.<grainfraction_name> |
8117
ca072278ad02
Complete mapping and themes for sediment load.
"Tom Gottfried <tom@intevation.de>"
parents:
8113
diff
changeset
|
90 name = NAME + "." + fraction; |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8148
diff
changeset
|
91 log.debug("Created facet: " + name); |
8113
f5c0ed04f673
Reconstruct facet description of sediment load at measurement stations. i18n will follow.
"Tom Gottfried <tom@intevation.de>"
parents:
8105
diff
changeset
|
92 |
8098
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
93 description = Resources.getMsg( |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
94 callMeta, |
8113
f5c0ed04f673
Reconstruct facet description of sediment load at measurement stations. i18n will follow.
"Tom Gottfried <tom@intevation.de>"
parents:
8105
diff
changeset
|
95 "facet.sedimentload." + fraction, |
8142
d4e4dde1d5cb
With the exception of real calculation results, descriptions of sediment loads can all follow the same pattern.
Tom Gottfried <tom@intevation.de>
parents:
8138
diff
changeset
|
96 new Object[] { years, "t/a" }); |
8113
f5c0ed04f673
Reconstruct facet description of sediment load at measurement stations. i18n will follow.
"Tom Gottfried <tom@intevation.de>"
parents:
8105
diff
changeset
|
97 |
8222
1cd7225df846
Let official epochs be showy and remove detritus of 'yields' in datacage config.
Tom Gottfried <tom@intevation.de>
parents:
8215
diff
changeset
|
98 if (kind.equals("official")) { |
1cd7225df846
Let official epochs be showy and remove detritus of 'yields' in datacage config.
Tom Gottfried <tom@intevation.de>
parents:
8215
diff
changeset
|
99 String descPrefix = Resources.getMsg( |
1cd7225df846
Let official epochs be showy and remove detritus of 'yields' in datacage config.
Tom Gottfried <tom@intevation.de>
parents:
8215
diff
changeset
|
100 callMeta, |
1cd7225df846
Let official epochs be showy and remove detritus of 'yields' in datacage config.
Tom Gottfried <tom@intevation.de>
parents:
8215
diff
changeset
|
101 "facet.sedimentload.prefix.offcial"); |
1cd7225df846
Let official epochs be showy and remove detritus of 'yields' in datacage config.
Tom Gottfried <tom@intevation.de>
parents:
8215
diff
changeset
|
102 description = descPrefix + description; |
1cd7225df846
Let official epochs be showy and remove detritus of 'yields' in datacage config.
Tom Gottfried <tom@intevation.de>
parents:
8215
diff
changeset
|
103 } |
1cd7225df846
Let official epochs be showy and remove detritus of 'yields' in datacage config.
Tom Gottfried <tom@intevation.de>
parents:
8215
diff
changeset
|
104 |
8098
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
105 ((D4EArtifact)artifact).addStringData("load_id", idStr); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
106 } |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
107 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
108 |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
109 /** Copy deeply. */ |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
110 @Override |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
111 public Facet deepCopy() { |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
112 SedimentLoadFacet copy = new SedimentLoadFacet(); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
113 copy.set(this); |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
114 copy.type = type; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
115 copy.hash = hash; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
116 copy.stateId = stateId; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
117 return copy; |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
118 } |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
119 } |
09725b65955a
Add new and simplyfied SedimentLoadFacet
Andre Heinecke <andre.heinecke@intevation.de>
parents:
diff
changeset
|
120 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |