annotate artifacts/src/main/java/org/dive4elements/river/artifacts/MainValuesArtifact.java @ 8856:5e38e2924c07 3.2.x

Fix code style.
author Tom Gottfried <tom@intevation.de>
date Thu, 18 Jan 2018 20:12:01 +0100
parents 47199406994a
children 669ab639c56b 0a5239a1e46e
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
9 package org.dive4elements.river.artifacts;
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11 import java.util.ArrayList;
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12 import java.util.List;
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 import org.apache.log4j.Logger;
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16 import org.w3c.dom.Document;
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
18 import org.dive4elements.artifactdatabase.data.DefaultStateData;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
19 import org.dive4elements.artifactdatabase.state.Facet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
20 import org.dive4elements.artifactdatabase.state.FacetActivity;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
21 import org.dive4elements.artifactdatabase.state.DefaultOutput;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
22 import org.dive4elements.artifactdatabase.state.State;
1095
f465785ed1ae Refactored the code to fetch the km range/locations into a utility class.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1093
diff changeset
23
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
24 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
25 import org.dive4elements.artifacts.ArtifactFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
26 import org.dive4elements.artifacts.CallMeta;
1078
048517d67215 Changed state spawning mechanism of MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1074
diff changeset
27
6038
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
28 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
29 import org.dive4elements.artifacts.common.utils.XMLUtils;
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
30
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
31 import org.dive4elements.river.model.Gauge;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
32 import org.dive4elements.river.model.MainValue;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
33 import org.dive4elements.river.model.River;
1101
82798c992975 Interpolate Q main values, generate interpolated W main values on the fly from
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1100
diff changeset
34
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
35 import org.dive4elements.river.artifacts.access.RiverAccess;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
36 import org.dive4elements.river.artifacts.access.RangeAccess;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
37 import org.dive4elements.river.artifacts.model.Calculation;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
38 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
39 import org.dive4elements.river.artifacts.model.MainValuesQFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
40 import org.dive4elements.river.artifacts.model.MainValuesWFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
41 import org.dive4elements.river.artifacts.model.NamedDouble;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
42 import org.dive4elements.river.artifacts.model.WstValueTable;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
43 import org.dive4elements.river.artifacts.model.WstValueTableFactory;
1101
82798c992975 Interpolate Q main values, generate interpolated W main values on the fly from
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1100
diff changeset
44
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
45 import org.dive4elements.river.artifacts.states.StaticState;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
46 import org.dive4elements.river.artifacts.resources.Resources;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5398
diff changeset
47
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 /**
4126
e0354aed0cd3 Improvements for issue945/6 (separate w and q mainvalues in DC).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3558
diff changeset
50 * Artifact to access main and extreme values of a river.
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
51 * This artifact neglects (Static)D4EArtifacts capabilities of interaction
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
52 * with the StateEngine by overriding the getState*-methods.
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 */
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54 public class MainValuesArtifact
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
55 extends StaticD4EArtifact
1809
f6a190f6aaff Give outputname to artifacts getInitialFacetActivity, generate second pair of MainvalueFacets for discharge curves.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1787
diff changeset
56 implements FacetTypes
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1051
diff changeset
57 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
58 /** The log for this class. */
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
59 private static Logger log = Logger.getLogger(MainValuesArtifact.class);
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 /** The name of the artifact. */
1065
193c49b7f6a3 Minor changes to stub MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1061
diff changeset
62 public static final String ARTIFACT_NAME = "mainvalue";
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
63
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
64 /** The name of the static state for this artifact. */
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
65 public static final String STATIC_STATE_NAME = "state.mainvalue.static";
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
66
1078
048517d67215 Changed state spawning mechanism of MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1074
diff changeset
67 /** One and only state to be in. */
048517d67215 Changed state spawning mechanism of MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1074
diff changeset
68 protected transient State state = null;
048517d67215 Changed state spawning mechanism of MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1074
diff changeset
69
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
70
3558
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
71 static {
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
72 // TODO: Move to configuration.
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
73 FacetActivity.Registry.getInstance().register(
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
74 ARTIFACT_NAME,
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
75 new FacetActivity() {
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
76 @Override
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
77 public Boolean isInitialActive(
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
78 Artifact artifact,
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
79 Facet facet,
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
80 String outputName
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
81 ) {
8333
be7864b4fabb Let's be more generous with facet activity of main values.
"Tom Gottfried <tom@intevation.de>"
parents: 8331
diff changeset
82 if (facet.getName().equals(MAINVALUES_Q) ||
be7864b4fabb Let's be more generous with facet activity of main values.
"Tom Gottfried <tom@intevation.de>"
parents: 8331
diff changeset
83 facet.getName().equals(MAINVALUES_W)) {
be7864b4fabb Let's be more generous with facet activity of main values.
"Tom Gottfried <tom@intevation.de>"
parents: 8331
diff changeset
84 return Boolean.TRUE;
be7864b4fabb Let's be more generous with facet activity of main values.
"Tom Gottfried <tom@intevation.de>"
parents: 8331
diff changeset
85 }
be7864b4fabb Let's be more generous with facet activity of main values.
"Tom Gottfried <tom@intevation.de>"
parents: 8331
diff changeset
86 return null;
3558
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
87 }
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
88 });
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
89 }
c3cd414982fe Adjusted to follow the Chain-of-responsibility pattern in figuring out facet activities.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3556
diff changeset
90
5368
d3f170484455 MainValuesArtifact: Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5290
diff changeset
91
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
92 /**
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
93 * Trivial Constructor.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
94 */
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
95 public MainValuesArtifact() {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
96 log.debug("MainValuesArtifact.MainValuesartifact()");
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
97 }
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
98
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
99
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
100 /**
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
101 * Gets called from factory, to set things up.
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102 */
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103 @Override
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104 public void setup(
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105 String identifier,
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
106 ArtifactFactory factory,
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107 Object context,
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
108 CallMeta callMeta,
7842
8d5ca5175038 Updated signature of artifacts setup method; Removed unnecessary setup overrides.
Raimund Renkert <rrenkert@intevation.de>
parents: 7507
diff changeset
109 Document data,
8d5ca5175038 Updated signature of artifacts setup method; Removed unnecessary setup overrides.
Raimund Renkert <rrenkert@intevation.de>
parents: 7507
diff changeset
110 List<Class> loadFacets)
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
112 log.debug("MainValuesArtifact.setup");
1787
f3be8fa1ec62 Cosmetics, added simpler constructor for StaticState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1771
diff changeset
113 state = new StaticState(STATIC_STATE_NAME);
f3be8fa1ec62 Cosmetics, added simpler constructor for StaticState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1771
diff changeset
114
6038
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
115 initFromGaugeDoc(data, callMeta);
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
116
4126
e0354aed0cd3 Improvements for issue945/6 (separate w and q mainvalues in DC).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3558
diff changeset
117 List<Facet> fs = new ArrayList<Facet>();
4497
a2735a4bf75e Change facets member variable to private
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4126
diff changeset
118 addFacets(state.getID(), fs);
4126
e0354aed0cd3 Improvements for issue945/6 (separate w and q mainvalues in DC).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3558
diff changeset
119 spawnState();
e0354aed0cd3 Improvements for issue945/6 (separate w and q mainvalues in DC).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3558
diff changeset
120 String restriction = getDatacageIDValue(data);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
121 log.debug("mainvalue restriction " + restriction);
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
122 boolean restricted = restriction.endsWith("q")
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
123 || restriction.endsWith("w");
4126
e0354aed0cd3 Improvements for issue945/6 (separate w and q mainvalues in DC).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3558
diff changeset
124 if (!restricted || restriction.endsWith("q")) {
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
125 fs.add(new MainValuesQFacet(
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
126 MAINVALUES_Q,
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
127 Resources.getMsg(
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
128 callMeta,
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
129 "facet.discharge_curves.mainvalues.q")));
4126
e0354aed0cd3 Improvements for issue945/6 (separate w and q mainvalues in DC).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3558
diff changeset
130 }
e0354aed0cd3 Improvements for issue945/6 (separate w and q mainvalues in DC).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3558
diff changeset
131 if (!restricted || restriction.endsWith("w")) {
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
132 fs.add(new MainValuesWFacet(
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
133 MAINVALUES_W,
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
134 Resources.getMsg(
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
135 callMeta,
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
136 "facet.discharge_curves.mainvalues.w")));
4126
e0354aed0cd3 Improvements for issue945/6 (separate w and q mainvalues in DC).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3558
diff changeset
137 }
8340
8679875f2c09 Create mainvalue facets before setting up the artifact.
Raimund Renkert <rrenkert@intevation.de>
parents: 8339
diff changeset
138 super.setup(identifier, factory, context, callMeta, data, loadFacets);
1080
fa01c3602f66 Added MainValue-Fetching-Capabilities to MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1079
diff changeset
139 }
fa01c3602f66 Added MainValue-Fetching-Capabilities to MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1079
diff changeset
140
7507
a9eb777463e1 cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6686
diff changeset
141
6038
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
142 /**
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
143 * The MainValueArtifact can be set up with a document giving the
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
144 * river and gauge. This happens in context of GaugeDischargeArtifact.
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
145 * In that case, initalize() is not called.
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
146 */
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
147 private void initFromGaugeDoc(Document data, CallMeta callMeta) {
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
148 String gaugeref = XMLUtils.xpathString(
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
149 data, GaugeDischargeCurveArtifact.XPATH_GAUGE,
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
150 ArtifactNamespaceContext.INSTANCE);
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
151 String rivername = XMLUtils.xpathString(
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
152 data, GaugeDischargeCurveArtifact.XPATH_RIVER,
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
153 ArtifactNamespaceContext.INSTANCE);
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
154
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
155 if (rivername == null || gaugeref == null || rivername.equals("")
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
156 || gaugeref.equals("")) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
157 log.debug("Not setting MainValuesArtifact up from gauge doc.");
6038
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
158 return;
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
159 }
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
160
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
161 addData("river", new DefaultStateData("river",
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
162 Resources.getMsg(callMeta,
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
163 "facet.gauge_discharge_curve.river",
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
164 "Name of the river"),
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
165 "String", rivername));
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
166
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
167 try {
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
168 Long officialNumber = Long.valueOf(gaugeref);
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
169 Gauge gauge = Gauge.getGaugeByOfficialNumber(officialNumber);
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
170 addData(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
171 "ld_locations",
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
172 new DefaultStateData("ld_locations", null, null,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
173 String.valueOf(gauge.getStation()))
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
174 );
6038
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
175 } catch (NumberFormatException nfe) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
176 log.debug("MainValuesArtifact could not parse gaugeref from doc.");
6038
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
177 }
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
178 }
a0dd303f4a08 MainValuesArtifact: prepare to be created by crafted document.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
179
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
180
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
181 /**
7507
a9eb777463e1 cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6686
diff changeset
182 * Create "the" (one possible) state.
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
183 */
1112
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
184 protected State spawnState() {
1787
f3be8fa1ec62 Cosmetics, added simpler constructor for StaticState.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1771
diff changeset
185 state = new StaticState(STATIC_STATE_NAME);
4497
a2735a4bf75e Change facets member variable to private
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4126
diff changeset
186 List<Facet> fs = (List<Facet>) getFacets(STATIC_STATE_NAME);
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
187
1847
8e5b4ea2851c Minor cosmetics and let facets be inactive in duration curve diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1811
diff changeset
188 DefaultOutput mainValuesOutput = new DefaultOutput(
1765
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1654
diff changeset
189 "computed_discharge_curve",
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1654
diff changeset
190 "output.computed_discharge_curve", "image/png",
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
191 fs,
1765
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1654
diff changeset
192 "chart");
1112
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
193
1847
8e5b4ea2851c Minor cosmetics and let facets be inactive in duration curve diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1811
diff changeset
194 state.getOutputs().add(mainValuesOutput);
1112
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
195 return state;
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
196 }
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
197
1080
fa01c3602f66 Added MainValue-Fetching-Capabilities to MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1079
diff changeset
198
5368
d3f170484455 MainValuesArtifact: Doc, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5290
diff changeset
199 /** Get important data from the 'calling' artifact. */
1080
fa01c3602f66 Added MainValue-Fetching-Capabilities to MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1079
diff changeset
200 @Override
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
201 protected void initialize(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
202 Artifact artifact,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
203 Object context,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
204 CallMeta meta
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
205 ) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
206 log.debug("MainValuesArtifact.initialize");
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
207 D4EArtifact winfo = (D4EArtifact) artifact;
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
208 River river = new RiverAccess(winfo).getRiver();
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
209 double [] locations = new RangeAccess(winfo).getKmRange();
5290
394841a66c14 MainValuesArtifact: Possible NPE fix.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4937
diff changeset
210
1847
8e5b4ea2851c Minor cosmetics and let facets be inactive in duration curve diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1811
diff changeset
211 if (locations != null) {
8e5b4ea2851c Minor cosmetics and let facets be inactive in duration curve diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1811
diff changeset
212 double location = locations[0];
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
213 addData(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
214 "ld_locations",
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
215 new DefaultStateData("ld_locations", null, null,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
216 String.valueOf(location))
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
217 );
1847
8e5b4ea2851c Minor cosmetics and let facets be inactive in duration curve diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1811
diff changeset
218 }
8e5b4ea2851c Minor cosmetics and let facets be inactive in duration curve diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1811
diff changeset
219 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
220 log.error("No location for mainvalues given.");
1847
8e5b4ea2851c Minor cosmetics and let facets be inactive in duration curve diagrams.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1811
diff changeset
221 }
1922
7e7522c9e663 Use importData convenvience function.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1847
diff changeset
222 importData(winfo, "river");
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
223 // In the case of DischargeWQCurves, there are no locations,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
224 // but a gauge.
5371
92c07d5c433c MainValuesArtifact: For hist. W/Q diagram mainvalues, get location from gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5370
diff changeset
225 if (getDataAsString("ld_locations") == null) {
92c07d5c433c MainValuesArtifact: For hist. W/Q diagram mainvalues, get location from gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5370
diff changeset
226 // TODO its a tad difficult to remodel Range/Gauge-Access to
92c07d5c433c MainValuesArtifact: For hist. W/Q diagram mainvalues, get location from gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5370
diff changeset
227 // do this.
92c07d5c433c MainValuesArtifact: For hist. W/Q diagram mainvalues, get location from gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5370
diff changeset
228 String refGaugeID = winfo.getDataAsString("reference_gauge");
92c07d5c433c MainValuesArtifact: For hist. W/Q diagram mainvalues, get location from gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5370
diff changeset
229 if (refGaugeID != null) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
230 Gauge g = Gauge.getGaugeByOfficialNumber(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
231 Integer.parseInt(refGaugeID));
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
232 addData(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
233 "ld_locations",
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
234 new DefaultStateData("ld_locations", null, null,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
235 String.valueOf(g.getStation()))
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8724
diff changeset
236 );
5371
92c07d5c433c MainValuesArtifact: For hist. W/Q diagram mainvalues, get location from gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5370
diff changeset
237 }
92c07d5c433c MainValuesArtifact: For hist. W/Q diagram mainvalues, get location from gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5370
diff changeset
238 else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
239 log.error("MainValuesArtifact: No location/gauge.");
5371
92c07d5c433c MainValuesArtifact: For hist. W/Q diagram mainvalues, get location from gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5370
diff changeset
240 }
92c07d5c433c MainValuesArtifact: For hist. W/Q diagram mainvalues, get location from gauge.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5370
diff changeset
241 }
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
242 }
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
243
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
244
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
245 /**
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
246 * Get a list containing the one and only State.
1085
07878836ee0d Plot "real" (respecting parameters) W and Q MainValues, yet in wrong scale.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1080
diff changeset
247 * @param context ignored.
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
248 * @return list with one and only state.
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
249 */
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
250 @Override
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
251 protected List<State> getStates(Object context) {
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
252 ArrayList<State> states = new ArrayList<State>();
1112
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
253 states.add(getState());
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
254 return states;
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
255 }
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
256
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
257
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
258 /**
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
259 * Get the "current" state.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
260 * @param cc ignored.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
261 * @return the "current" state.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
262 */
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
263 @Override
1654
33ade8153d74 Little modifications for making recommendations - will now work for states with background calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1113
diff changeset
264 public State getCurrentState(Object cc) {
1072
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
265 return getState();
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
266 }
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
267
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
268
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
269 /**
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
270 * Get the only possible state.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
271 * @return the state.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
272 */
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
273 protected State getState() {
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
274 return getState(null, null);
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
275 }
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
276
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
277
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
278 /**
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
279 * Get the state.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
280 * @param context ignored.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
281 * @param stateID ignored.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
282 * @return the state.
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
283 */
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
284 @Override
80aecb01d79a Let MainValuesArtifact have a state, outputmode and facet.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1065
diff changeset
285 protected State getState(Object context, String stateID) {
1112
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
286 if (state != null)
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
287 return state;
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
288 else
aeae4d20f32f Fix translations of Main Values Facets.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1101
diff changeset
289 return spawnState();
1078
048517d67215 Changed state spawning mechanism of MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1074
diff changeset
290 }
048517d67215 Changed state spawning mechanism of MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1074
diff changeset
291
6524
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
292 /**
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
293 * Access the Gauge that the mainvalues are taken from.
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
294 * @return Gauge that main values are taken from or null in case of
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
295 * invalid parameterization.
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
296 */
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
297 protected Gauge getGauge(double km) {
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
298 River river = new RiverAccess((D4EArtifact)this).getRiver();
6524
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
299
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
300 if (river == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7842
diff changeset
301 log.error("River is null");
6524
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
302 return null;
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
303 }
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
304
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
305 return river.determineGaugeByPosition(km);
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
306 }
1093
139e7df1787c Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1089
diff changeset
307
1085
07878836ee0d Plot "real" (respecting parameters) W and Q MainValues, yet in wrong scale.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1080
diff changeset
308 /**
1101
82798c992975 Interpolate Q main values, generate interpolated W main values on the fly from
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1100
diff changeset
309 * Get current location.
82798c992975 Interpolate Q main values, generate interpolated W main values on the fly from
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1100
diff changeset
310 * @return the location.
1089
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
311 */
1101
82798c992975 Interpolate Q main values, generate interpolated W main values on the fly from
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1100
diff changeset
312 public double getLocation() {
4937
ce7d8e2a7e02 Fixed mainvalues artifact.
Raimund Renkert <rrenkert@intevation.de>
parents: 4845
diff changeset
313 double location = Double.parseDouble(getDataAsString("ld_locations"));
1101
82798c992975 Interpolate Q main values, generate interpolated W main values on the fly from
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1100
diff changeset
314 return location;
1089
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
315 }
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
316
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
317
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
318 /**
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
319 * Get a list of "Q" main values.
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
320 * @param Array of length 1 (isn't it lovely?) giving the station for
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
321 * which the main values should be returned
1089
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
322 * @return list of Q main values.
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
323 */
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
324 public List<NamedDouble> getMainValuesQ(double[] kms, Object pnpObject) {
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
325 if (kms.length > 1) {
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
326 log.error("How did you dare to give an array of lenght >1! " +
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
327 "DAS GEHT GARNICHT!!!! (we'll just take the first value)");
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
328 }
6533
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
329 List<NamedDouble> filteredList = new ArrayList<NamedDouble>();
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
330 Gauge gauge = getGauge(kms[0]);
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
331 River river = new RiverAccess((D4EArtifact)this).getRiver();
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
332 WstValueTable interpolator = WstValueTableFactory.getTable(river);
6533
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
333 Calculation c = new Calculation();
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
334 double w_out[] = {0.0f};
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
335 double q_out[] = {0.0f};
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
336 double pnp = Double.NaN;
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
337
6533
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
338 if (gauge != null) {
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
339 double gaugeStation = gauge.getStation().doubleValue();
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
340 List<MainValue> orig = gauge.getMainValues();
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
341 if (pnpObject instanceof Number) {
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
342 pnp = Double.valueOf(pnpObject.toString());
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
343 }
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
344
6533
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
345 for (MainValue mv : orig) {
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
346 if (mv.getMainValue().getType().getName().equals("Q")) {
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
347 if (pnpObject instanceof Number) {
6533
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
348 q_out[0] = mv.getValue().doubleValue();
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
349 }
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
350 else {
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
351 interpolator.interpolate(mv.getValue().doubleValue(),
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
352 gaugeStation, kms, w_out, q_out, c);
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
353 }
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
354 filteredList.add(new NamedDouble(
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
355 mv.getMainValue().getName(),
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
356 q_out[0]
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
357 ));
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
358 }
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
359 }
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
360 }
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
361 return filteredList;
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
362 }
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
363
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
364 /**
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
365 * Get a list of "Q" main values.
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
366 * @return list of Q main values.
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
367 */
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
368 public List<NamedDouble> getMainValuesQ(Object pnpObject) {
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
369 double kms[] = {getLocation()};
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
370 return getMainValuesQ(kms, pnpObject);
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
371 }
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
372
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
373
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
374 public List<NamedDouble> getMainValuesW(double[] kms, Object pnpObject) {
1089
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
375 List<NamedDouble> filteredList = new ArrayList<NamedDouble>();
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
376 Gauge gauge = getGauge(kms[0]);
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
377 River river = new RiverAccess((D4EArtifact)this).getRiver();
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
378 WstValueTable interpolator = WstValueTableFactory.getTable(river);
1101
82798c992975 Interpolate Q main values, generate interpolated W main values on the fly from
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1100
diff changeset
379 Calculation c = new Calculation();
82798c992975 Interpolate Q main values, generate interpolated W main values on the fly from
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1100
diff changeset
380 double w_out[] = {0.0f};
82798c992975 Interpolate Q main values, generate interpolated W main values on the fly from
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1100
diff changeset
381 double q_out[] = {0.0f};
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
382 double pnp = Double.NaN;
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
383
1085
07878836ee0d Plot "real" (respecting parameters) W and Q MainValues, yet in wrong scale.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1080
diff changeset
384 if (gauge != null) {
6533
30c6da3bfc86 In analogy to w values allow q values to be calculated at the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6532
diff changeset
385 double gaugeStation = gauge.getStation().doubleValue();
1085
07878836ee0d Plot "real" (respecting parameters) W and Q MainValues, yet in wrong scale.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1080
diff changeset
386 List<MainValue> orig = gauge.getMainValues();
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
387 if (pnpObject instanceof Number) {
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
388 pnp = Double.valueOf(pnpObject.toString());
1085
07878836ee0d Plot "real" (respecting parameters) W and Q MainValues, yet in wrong scale.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1080
diff changeset
389 }
1089
e298c4d28927 Improved mainvalues rendering.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1085
diff changeset
390
6524
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
391 for (MainValue mv : orig) {
8724
47199406994a (issue1801) Determine gauge at a station always with same tolerance.
Tom Gottfried <tom@intevation.de>
parents: 8344
diff changeset
392 Gauge g = river.determineGaugeAtStation(kms[0]);
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
393 if (pnpObject instanceof Number) {
6524
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
394 if (mv.getMainValue().getType().getName().equals("W")) {
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
395 filteredList.add(new NamedDouble(
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
396 mv.getMainValue().getName(),
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
397 mv.getValue().doubleValue()/100 + pnp
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
398 ));
6524
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
399 }
8339
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
400 }
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
401 else if (!(pnpObject instanceof Number) &&
8344
840bc78cd333 Use ws in m for duration curve.
Raimund Renkert <rrenkert@intevation.de>
parents: 8340
diff changeset
402 g != null &&
840bc78cd333 Use ws in m for duration curve.
Raimund Renkert <rrenkert@intevation.de>
parents: 8340
diff changeset
403 !"duration_curve".equals(getBoundToOut())
8339
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
404 ) {
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
405 if (mv.getMainValue().getType().getName().equals("W")) {
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
406 filteredList.add(new NamedDouble(
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
407 mv.getMainValue().getName(),
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
408 mv.getValue().doubleValue()
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
409 ));
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
410 }
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
411 }
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
412 else {
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
413 // We cannot interpolate the W values, so derive them
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
414 // from given Q values.
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
415 if (mv.getMainValue().getType().getName().equals("Q")) {
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
416 interpolator.interpolate(mv.getValue().doubleValue(),
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
417 gaugeStation, kms, w_out, q_out, c);
6524
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
418
8339
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
419 filteredList.add(new NamedDouble(
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
420 "W(" + mv.getMainValue().getName() +")",
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
421 w_out[0]
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
422 ));
d6e71158222a Look for gauge if no pnp is set in the context and return w in cm if at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8333
diff changeset
423 }
6524
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
424 }
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
425 }
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
426 }
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
427 return filteredList;
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
428 }
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
429
641ec405c4ac MainValuesArtifact: Added method to determine whether at gauge or not.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6523
diff changeset
430
5398
a916e1202f0f MainValuesArtifact: Override getName to make FacetActivityRegistry working.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5371
diff changeset
431 /**
6523
5afb1cda5885 Minor refactoring in MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
432 * Get a list of "W" main values.
5afb1cda5885 Minor refactoring in MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
433 * @return list of W main values.
5afb1cda5885 Minor refactoring in MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
434 */
8331
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
435 public List<NamedDouble> getMainValuesW(Object pnpObject) {
27d42c9ee367 Main values: Reduce code duplication and correct logic to specify whether we are at gauge or not.
"Tom Gottfried <tom@intevation.de>"
parents: 8316
diff changeset
436 return getMainValuesW(new double[] {getLocation()}, pnpObject);
6523
5afb1cda5885 Minor refactoring in MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
437 }
5afb1cda5885 Minor refactoring in MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
438
5afb1cda5885 Minor refactoring in MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
439
5afb1cda5885 Minor refactoring in MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
440 /**
5398
a916e1202f0f MainValuesArtifact: Override getName to make FacetActivityRegistry working.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5371
diff changeset
441 * Returns the name of this artifact ('mainvalue').
a916e1202f0f MainValuesArtifact: Override getName to make FacetActivityRegistry working.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5371
diff changeset
442 *
a916e1202f0f MainValuesArtifact: Override getName to make FacetActivityRegistry working.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5371
diff changeset
443 * @return 'mainvalue'
a916e1202f0f MainValuesArtifact: Override getName to make FacetActivityRegistry working.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5371
diff changeset
444 */
a916e1202f0f MainValuesArtifact: Override getName to make FacetActivityRegistry working.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5371
diff changeset
445 public String getName() {
a916e1202f0f MainValuesArtifact: Override getName to make FacetActivityRegistry working.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5371
diff changeset
446 return ARTIFACT_NAME;
a916e1202f0f MainValuesArtifact: Override getName to make FacetActivityRegistry working.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5371
diff changeset
447 }
1047
38088c982db6 Added stub implementation of new MainValuesArtifact.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
448 }
1809
f6a190f6aaff Give outputname to artifacts getInitialFacetActivity, generate second pair of MainvalueFacets for discharge curves.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1787
diff changeset
449 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org