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
eb48b244921d The rest is silence.
Tom Gottfried <tom@intevation.de>
parents: 8142
diff changeset
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 :

http://dive4elements.wald.intevation.org