Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadFacet.java @ 8295:9ab967eb2c51
At least since rev eb052d759fcc, there are no bed height epochs anymore.
author | "Tom Gottfried <tom@intevation.de>" |
---|---|
date | Thu, 18 Sep 2014 18:16:51 +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 : |