annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WQSelect.java @ 2089:0da8874bd378

Added initial state to map artifact to be able to advance and step back. The map artifact overrides describe() to have the complete UI information in the describe response document. flys-artifacts/trunk@3613 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 06 Jan 2012 12:02:10 +0000
parents 48fd8b06bce5
children d548e2e13524
rev   line source
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.states;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
1743
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
3 import java.text.NumberFormat;
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
4
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
5 import gnu.trove.TDoubleArrayList;
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
6
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import org.apache.log4j.Logger;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import org.w3c.dom.Element;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
313
89bd0417418f The location/distance state now writes default values into DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 137
diff changeset
11 import de.intevation.artifacts.Artifact;
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import de.intevation.artifacts.CallContext;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import de.intevation.artifacts.common.utils.XMLUtils;
1743
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
15 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import de.intevation.artifactdatabase.ProtocolUtils;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import de.intevation.artifactdatabase.data.StateData;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
319
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
20 import de.intevation.flys.model.Gauge;
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
21 import de.intevation.flys.model.River;
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
22 import de.intevation.flys.model.Wst;
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
23
1743
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
24 import de.intevation.flys.artifacts.FLYSArtifact;
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
25 import de.intevation.flys.artifacts.WINFOArtifact;
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
26
319
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
27 import de.intevation.flys.artifacts.model.WstFactory;
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import de.intevation.flys.artifacts.resources.Resources;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
1103
e0243627ba62 Use FLYSUtils.getRiver instead of WINFOArtifact.getRiver.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1055
diff changeset
30 import de.intevation.flys.utils.FLYSUtils;
e0243627ba62 Use FLYSUtils.getRiver instead of WINFOArtifact.getRiver.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1055
diff changeset
31
e0243627ba62 Use FLYSUtils.getRiver instead of WINFOArtifact.getRiver.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1055
diff changeset
32
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 /**
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 */
921
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
36 public class WQSelect extends DefaultState {
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
1691
17648043429f Cosmetics, docs, annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1103
diff changeset
38 /** The logger used in this class. */
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 private static Logger logger = Logger.getLogger(WQSelect.class);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41
1691
17648043429f Cosmetics, docs, annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1103
diff changeset
42 /** The default step width for Qs. */
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 public static final String DEFAULT_STEP_Q = "50";
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
1691
17648043429f Cosmetics, docs, annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1103
diff changeset
45 /** The default step width for Qs. */
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 public static final String DEFAULT_STEP_W = "30";
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
2059
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
48 /** The max number of steps for Qs and Ws. */
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
49 public static final int MAX_STEPS = 30;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
50
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
51 /** The name of the 'mode' field. */
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
52 public static final String WQ_MODE = "wq_mode";
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
53
1743
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
54 /** Them name fo the 'free' field. */
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
55 public static final String WQ_FREE = "wq_free";
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
56
1691
17648043429f Cosmetics, docs, annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1103
diff changeset
57 /** The name of the 'selection' field. */
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
58 public static final String WQ_SELECTION = "wq_selection";
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
59
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
60 /** The name of the 'from' field. */
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
61 public static final String WQ_FROM = "wq_from";
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
62
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
63 /** The name of the 'to' field. */
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
64 public static final String WQ_TO = "wq_to";
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
65
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
66 /** The name of the 'step' field. */
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
67 public static final String WQ_STEP = "wq_step";
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
68
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
69 /** The name of the 'single' field. */
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
70 public static final String WQ_SINGLE = "wq_single";
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
71
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
72
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 /**
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 * The default constructor that initializes an empty State object.
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 */
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 public WQSelect() {
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 }
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78
1743
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
79
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
80 @Override
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
81 protected Element createStaticData(
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
82 FLYSArtifact flys,
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
83 ElementCreator creator,
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
84 CallContext cc,
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
85 String name,
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
86 String value,
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
87 String type
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
88 ) {
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
89 if (!name.equals(WQ_SINGLE)) {
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
90 return super.createStaticData(flys, creator, cc, name, value, type);
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
91 }
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
92
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
93 String mode = flys.getDataAsString(WQ_MODE);
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
94 String free = flys.getDataAsString(WQ_FREE);
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
95
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
96 WINFOArtifact winfo = (WINFOArtifact) flys;
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
97
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
98 Element dataElement = creator.create("data");
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
99 creator.addAttr(dataElement, "name", name, true);
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
100 creator.addAttr(dataElement, "type", type, true);
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
101
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
102 Element itemElement = creator.create("item");
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
103 creator.addAttr(itemElement, "value", value, true);
2025
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
104
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
105 String label = "";
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
106
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
107 if (mode == null || mode.equals("W") || Boolean.valueOf(free)) {
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
108 label = getLabel(winfo, cc, value);
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
109 }
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
110 else {
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
111 label = getSpecialLabel(winfo, cc, value);
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
112 }
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
113
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
114 creator.addAttr(itemElement, "label", label, true);
1743
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
115
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
116 dataElement.appendChild(itemElement);
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
117
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
118 return dataElement;
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
119 }
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
120
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
121
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
122 protected static String getLabel(
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
123 WINFOArtifact winfo,
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
124 CallContext cc,
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
125 String raw
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
126 ) {
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
127 String[] values = raw.split(" ");
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
128 String label = null;
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
129
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
130 NumberFormat nf = NumberFormat.getInstance(
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
131 Resources.getLocale(cc.getMeta()));
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
132
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
133 for (String value: values) {
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
134 try {
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
135 double v = Double.valueOf(value.trim());
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
136
2025
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
137 String formatted = nf.format(v);
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
138
2030
355495661a1c Changed the seperator character between Ws and Qs in the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2025
diff changeset
139 label = label != null ? label + ";" + formatted : formatted;
2025
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
140 }
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
141 catch (NumberFormatException nfe) {
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
142 // do nothing here
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
143 }
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
144 }
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
145
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
146 return label;
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
147 }
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
148
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
149
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
150 protected static String getSpecialLabel(
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
151 WINFOArtifact winfo,
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
152 CallContext cc,
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
153 String raw
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
154 ) {
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
155 String[] values = raw.split(" ");
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
156 String label = null;
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
157
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
158 NumberFormat nf = NumberFormat.getInstance(
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
159 Resources.getLocale(cc.getMeta()));
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
160
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
161 for (String value: values) {
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
162 try {
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
163 double v = Double.valueOf(value.trim());
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
164
1743
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
165 String tmp = nf.format(v);
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
166 String mv = FLYSUtils.getNamedMainValue(winfo.getGauge(),v);
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
167
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
168 if (mv != null && mv.length() > 0) {
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
169 String add = mv + ": " + tmp;
2025
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
170 logger.debug("Add main value: '" + mv + "'");
2030
355495661a1c Changed the seperator character between Ws and Qs in the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2025
diff changeset
171 label = label != null ? label + ";" + add : add;
1743
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
172 }
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
173 else {
2025
6762f54b23b1 Bugfix: format all Ws and Qs in WQSelect State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
174 logger.debug("Add non main value: '" + tmp + "'");
2030
355495661a1c Changed the seperator character between Ws and Qs in the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2025
diff changeset
175 label = label != null ? label + ";" + tmp : tmp;
1743
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
176 }
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
177 }
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
178 catch (NumberFormatException nfe) {
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
179 // do nothing here
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
180 }
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
181 }
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
182
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
183 return label;
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
184 }
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
185
8a2cbf947395 Prepared the DESCRIBE document of a WINFO Artifact so that named main values for Qs are displayed.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1691
diff changeset
186
1691
17648043429f Cosmetics, docs, annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1103
diff changeset
187 @Override
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
188 protected Element createData(
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
189 XMLUtils.ElementCreator cr,
313
89bd0417418f The location/distance state now writes default values into DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 137
diff changeset
190 Artifact artifact,
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
191 StateData data,
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
192 CallContext context)
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
193 {
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
194 Element select = ProtocolUtils.createArtNode(
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
195 cr, "select", null, null);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
196
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
197 cr.addAttr(select, "name", data.getName(), true);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199 Element label = ProtocolUtils.createArtNode(
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 cr, "label", null, null);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202 Element choices = ProtocolUtils.createArtNode(
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 cr, "choices", null, null);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 label.setTextContent(Resources.getMsg(
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206 context.getMeta(),
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 data.getName(),
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208 data.getName()));
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
209
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
210 select.appendChild(label);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
211
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212 return select;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
213 }
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
214
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
215
660
627be3ca1ab6 code clean up in states
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 631
diff changeset
216 @Override
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
217 protected Element[] createItems(
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
218 XMLUtils.ElementCreator cr,
313
89bd0417418f The location/distance state now writes default values into DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 137
diff changeset
219 Artifact artifact,
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
220 String name,
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
221 CallContext context)
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
222 {
2062
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
223 double[] minmaxW = determineMinMaxW(artifact);
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
224 double[] minmaxQ = determineMinMaxQAtGauge(artifact);
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
225 double[] minmaxQFree = determineMinMaxQ(artifact);
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
226
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
227 if (name.equals("wq_from")) {
2062
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
228 Element minW = createItem(cr, new String[] {
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
229 "minW",
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
230 String.valueOf(minmaxW[0])});
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
231
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
232 Element minQ = createItem(cr, new String[] {
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
233 "minQ",
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
234 String.valueOf(minmaxQ[0])});
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
235
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
236 Element minQFree = createItem(cr, new String[] {
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
237 "minQFree",
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
238 String.valueOf(minmaxQFree[0])});
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
239
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
240 return new Element[] { minW, minQ, minQFree };
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241 }
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
242 else if (name.equals("wq_to")) {
2062
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
243 Element maxW = createItem(cr, new String[] {
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
244 "maxW",
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
245 String.valueOf(minmaxW[1])});
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
246
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
247 Element maxQ = createItem(cr, new String[] {
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
248 "maxQ",
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
249 String.valueOf(minmaxQ[1])});
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
250
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
251 Element maxQFree = createItem(cr, new String[] {
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
252 "maxQFree",
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
253 String.valueOf(minmaxQFree[1])});
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
254
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
255 return new Element[] { maxW, maxQ, maxQFree };
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
256 }
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
257 else {
660
627be3ca1ab6 code clean up in states
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 631
diff changeset
258 Element stepW = createItem(
2059
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
259 cr, new String[] {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
260 "stepW",
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
261 String.valueOf(getStepsW(minmaxW[0], minmaxW[1]))});
660
627be3ca1ab6 code clean up in states
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 631
diff changeset
262 Element stepQ = createItem(
2059
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
263 cr, new String[] {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
264 "stepQ",
2062
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
265 String.valueOf(getStepsQ(minmaxQ[0], minmaxQ[1]))});
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
266 Element stepQFree = createItem(
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
267 cr, new String[] {
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
268 "stepQFree",
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
269 String.valueOf(getStepsQ(minmaxQFree[0], minmaxQFree[1]))});
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
270
ed6c6d437875 Added min/max values for free Qs to the Artifact's DESCRIBE document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2061
diff changeset
271 return new Element[] { stepW, stepQ, stepQFree };
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
272 }
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
273 }
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
274
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
275
2059
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
276 protected static double getStepsW(double min, double max) {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
277 double diff = min < max ? max - min : min - max;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
278 double step = diff / MAX_STEPS;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
279
2061
87f9153bb7ca Fixed order to determine correct step width of Qs and Ws.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2060
diff changeset
280 if (step < 10) {
87f9153bb7ca Fixed order to determine correct step width of Qs and Ws.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2060
diff changeset
281 return getSteps(step, 1);
2059
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
282 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
283 else if (step < 100) {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
284 return getSteps(step, 10);
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
285 }
2061
87f9153bb7ca Fixed order to determine correct step width of Qs and Ws.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2060
diff changeset
286 else if (step < 1000) {
87f9153bb7ca Fixed order to determine correct step width of Qs and Ws.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2060
diff changeset
287 return getSteps(step, 100);
2059
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
288 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
289 else {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
290 return step;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
291 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
292 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
293
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
294
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
295 protected static double getStepsQ(double min, double max) {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
296 double diff = min < max ? max - min : min - max;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
297 double step = diff / MAX_STEPS;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
298
2061
87f9153bb7ca Fixed order to determine correct step width of Qs and Ws.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2060
diff changeset
299 if (step < 10) {
87f9153bb7ca Fixed order to determine correct step width of Qs and Ws.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2060
diff changeset
300 return getSteps(step, 1);
2059
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
301 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
302 else if (step < 100) {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
303 return getSteps(step, 10);
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
304 }
2061
87f9153bb7ca Fixed order to determine correct step width of Qs and Ws.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2060
diff changeset
305 else if (step < 1000) {
87f9153bb7ca Fixed order to determine correct step width of Qs and Ws.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2060
diff changeset
306 return getSteps(step, 100);
2059
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
307 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
308 else {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
309 return step;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
310 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
311 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
312
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
313
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
314 protected static double getSteps(double steps, double factor) {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
315 int fac = (int) steps / 10;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
316 double diff = steps - fac * 10;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
317
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
318 if (diff == 0) {
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
319 return steps;
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
320 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
321
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
322 return 10d * (fac + 1);
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
323 }
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
324
522826b41ffa Compute better step width for W/Q input.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2030
diff changeset
325
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
326 protected Element createItem(XMLUtils.ElementCreator cr, Object obj) {
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
327 Element item = ProtocolUtils.createArtNode(cr, "item", null, null);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
328 Element label = ProtocolUtils.createArtNode(cr, "label", null, null);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
329 Element value = ProtocolUtils.createArtNode(cr, "value", null, null);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
330
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
331 String[] arr = (String[]) obj;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
332
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
333 label.setTextContent(arr[0]);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
334 value.setTextContent(arr[1]);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
335
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
336 item.appendChild(label);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
337 item.appendChild(value);
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
338
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
339 return item;
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
340 }
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
341
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
342
660
627be3ca1ab6 code clean up in states
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 631
diff changeset
343 @Override
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
344 protected String getUIProvider() {
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
345 return "wq_panel";
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
346 }
319
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
347
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
348
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
349 /**
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
350 * Determines the min and max W value for the current gauge. If no min and
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
351 * max values could be determined, this method will return
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
352 * [Double.MIN_VALUE, Double.MAX_VALUE].
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
353 *
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
354 * @param artifact The FLYSArtifact.
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
355 *
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
356 * @return the min and max W values for the current gauge.
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
357 */
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
358 protected double[] determineMinMaxW(Artifact artifact) {
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
359 logger.debug("WQSelect.determineCurrentGauge");
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
360
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
361 Gauge gauge = ((WINFOArtifact) artifact).getGauge();
320
a8e7c351bdf1 The getGauge() method of the FLYSArtifact returns the first gauge based on the given stationing now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 319
diff changeset
362 double[] minmaxW = gauge != null ? gauge.determineMinMaxW() : null;
319
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
363
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
364 double minW = minmaxW != null ? minmaxW[0] : Double.MIN_VALUE;
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
365 double maxW = minmaxW != null ? minmaxW[1] : Double.MAX_VALUE;
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
366
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
367 return new double[] { minW, maxW };
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
368 }
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
369
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
370
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
371 /**
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
372 * Determines the min and max Q value for the current gauge. If no min and
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
373 * max values could be determined, this method will return
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
374 * [Double.MIN_VALUE, Double.MAX_VALUE].
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
375 *
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
376 * @param artifact The FLYSArtifact.
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
377 *
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
378 * @return the min and max Q values for the current gauge.
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
379 */
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
380 protected double[] determineMinMaxQAtGauge(Artifact artifact) {
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
381 logger.debug("WQSelect.determineMinMaxQAtGauge");
319
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
382
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
383 WINFOArtifact flysArtifact = (WINFOArtifact) artifact;
319
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
384
1103
e0243627ba62 Use FLYSUtils.getRiver instead of WINFOArtifact.getRiver.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1055
diff changeset
385 River river = FLYSUtils.getRiver(flysArtifact);
e0243627ba62 Use FLYSUtils.getRiver instead of WINFOArtifact.getRiver.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1055
diff changeset
386 Gauge gauge = flysArtifact.getGauge();
e0243627ba62 Use FLYSUtils.getRiver instead of WINFOArtifact.getRiver.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1055
diff changeset
387 Wst wst = WstFactory.getWst(river);
319
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
388
320
a8e7c351bdf1 The getGauge() method of the FLYSArtifact returns the first gauge based on the given stationing now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 319
diff changeset
389 double[] minmaxQ = gauge != null
a8e7c351bdf1 The getGauge() method of the FLYSArtifact returns the first gauge based on the given stationing now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 319
diff changeset
390 ? wst.determineMinMaxQ(gauge.getRange())
a8e7c351bdf1 The getGauge() method of the FLYSArtifact returns the first gauge based on the given stationing now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 319
diff changeset
391 : null;
319
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
392
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
393 double minQ = minmaxQ != null ? minmaxQ[0] : Double.MIN_VALUE;
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
394 double maxQ = minmaxQ != null ? minmaxQ[1] : Double.MAX_VALUE;
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
395
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
396 return new double[] { minQ, maxQ };
d8558dd64152 The WQ state fills the DESCRIBE with default values for W and Q.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 313
diff changeset
397 }
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
398
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
399
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
400 /**
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
401 * Determines the min and max Q value for the current kilometer range. If no
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
402 * min and max values could be determined, this method will return
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
403 *
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
404 * @param artifact The FLYSArtifact.
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
405 *
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
406 * @return the min and max Q values for the current kilometer range.
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
407 */
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
408 protected double[] determineMinMaxQ(Artifact artifact) {
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
409 logger.debug("WQSelect.determineMinMaxQ");
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
410
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
411 FLYSArtifact flys = (FLYSArtifact) artifact;
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
412 double[] kms = FLYSUtils.getKmRange(flys);
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
413
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
414 if (kms == null || kms.length == 0) {
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
415 return new double[] { Double.MIN_VALUE, Double.MAX_VALUE };
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
416 }
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
417
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
418 River river = FLYSUtils.getRiver(flys);
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
419 Wst wst = WstFactory.getWst(river);
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
420
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
421 logger.debug("User defined KMs: " + kms[0] + " - " + kms[kms.length-1]);
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
422
2070
48fd8b06bce5 #104 Use Wst.determineMinMaxQFree() to determine the min/max Qs at a given kilometer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2062
diff changeset
423 double[] minmaxQ = wst.determineMinMaxQFree(kms[0]);
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
424
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
425 return minmaxQ != null
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
426 ? minmaxQ
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
427 : new double[] { Double.MIN_VALUE, Double.MAX_VALUE };
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
428 }
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
429
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
430
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
431 @Override
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 921
diff changeset
432 public boolean validate(Artifact artifact)
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
433 throws IllegalArgumentException
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
434 {
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
435 logger.debug("WQSelect.validate");
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
436
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
437 WINFOArtifact flys = (WINFOArtifact) artifact;
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
438
624
929137ee8154 ISSUE-62 (part I/II) States are no longer filled with data - if a state needs user input, it needs to query the owner artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 379
diff changeset
439 StateData data = getData(flys, WQ_SELECTION);
929137ee8154 ISSUE-62 (part I/II) States are no longer filled with data - if a state needs user input, it needs to query the owner artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 379
diff changeset
440 String selectionMode = data != null ? (String) data.getValue() : null;
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
441
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
442 if (selectionMode == null || selectionMode.equals("single")) {
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 921
diff changeset
443 return validateSingle(artifact);
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
444 }
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
445 else {
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 921
diff changeset
446 return validateRange(artifact);
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
447 }
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
448 }
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
449
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
450
921
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
451 protected boolean validateBounds(
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
452 double fromValid, double toValid,
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
453 double from, double to, double step)
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
454 throws IllegalArgumentException
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
455 {
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
456 logger.debug("RangeState.validateRange");
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
457
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
458 if (from < fromValid) {
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
459 logger.error(
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
460 "Invalid 'from'. " + from + " is smaller than " + fromValid);
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
461 throw new IllegalArgumentException("error_feed_from_out_of_range");
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
462 }
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
463 else if (to > toValid) {
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
464 logger.error(
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
465 "Invalid 'to'. " + to + " is bigger than " + toValid);
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
466 throw new IllegalArgumentException("error_feed_to_out_of_range");
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
467 }
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
468
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
469 return true;
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
470 }
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
471
610d0e0f4f85 #159 Modifications in the transition model to support a state with a kilometer range input only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 660
diff changeset
472
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 921
diff changeset
473 protected boolean validateSingle(Artifact artifact)
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
474 throws IllegalArgumentException
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
475 {
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
476 logger.debug("WQSelect.validateSingle");
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
477
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
478 WINFOArtifact flys = (WINFOArtifact) artifact;
624
929137ee8154 ISSUE-62 (part I/II) States are no longer filled with data - if a state needs user input, it needs to query the owner artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 379
diff changeset
479 StateData data = getData(flys, WQ_SINGLE);
929137ee8154 ISSUE-62 (part I/II) States are no longer filled with data - if a state needs user input, it needs to query the owner artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 379
diff changeset
480
929137ee8154 ISSUE-62 (part I/II) States are no longer filled with data - if a state needs user input, it needs to query the owner artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 379
diff changeset
481 String tmp = data != null ? (String) data.getValue() : null;
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
482
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
483 if (tmp == null || tmp.length() == 0) {
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
484 throw new IllegalArgumentException("error_empty_state");
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
485 }
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
486
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
487 String[] strValues = tmp.split(" ");
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
488 TDoubleArrayList all = new TDoubleArrayList();
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
489
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
490 for (String strValue: strValues) {
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
491 try {
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
492 all.add(Double.parseDouble(strValue));
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
493 }
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
494 catch (NumberFormatException nfe) {
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
495 logger.warn(nfe, nfe);
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
496 }
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
497 }
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
498
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
499 all.sort();
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
500
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
501 FLYSUtils.WQ_MODE mode = FLYSUtils.getWQMode(flys);
624
929137ee8154 ISSUE-62 (part I/II) States are no longer filled with data - if a state needs user input, it needs to query the owner artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 379
diff changeset
502
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
503 logger.debug("WQ Mode: " + mode);
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
504
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
505 double[] minmax = null;
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
506
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
507 if (mode == FLYSUtils.WQ_MODE.WGAUGE) {
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
508 minmax = determineMinMaxW(artifact);
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
509 }
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
510 else if (mode == FLYSUtils.WQ_MODE.QGAUGE) {
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
511 minmax = determineMinMaxQAtGauge(artifact);
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
512 }
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
513 else {
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
514 minmax = determineMinMaxQ(artifact);
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
515 }
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
516
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
517 double min = all.get(0);
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
518 double max = all.get(all.size()-1);
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
519
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
520 logger.debug("Inserted min value = " + min);
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
521 logger.debug("Inserted max value = " + max);
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
522
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
523 return validateBounds(minmax[0], minmax[1], min, max, 0d);
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
524 }
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
525
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
526
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 921
diff changeset
527 protected boolean validateRange(Artifact artifact)
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
528 throws IllegalArgumentException
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
529 {
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
530 logger.debug("WQSelect.validateRange");
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
531
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
532 WINFOArtifact flys = (WINFOArtifact) artifact;
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
533 FLYSUtils.WQ_MODE mode = FLYSUtils.getWQMode(flys);
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
534
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
535 if (mode == null) {
631
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
536 throw new IllegalArgumentException("error_feed_invalid_wq_mode");
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
537 }
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
538
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
539 StateData dFrom = flys.getData(WQ_FROM);
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
540 StateData dTo = flys.getData(WQ_TO);
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
541 StateData dStep = flys.getData(WQ_STEP);
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
542
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
543 String fromStr = dFrom != null ? (String) dFrom.getValue() : null;
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
544 String toStr = dTo != null ? (String) dTo.getValue() : null;
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
545 String stepStr = dStep != null ? (String) dStep.getValue() : null;
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
546
352
ed3325a0232a Throw an illegal argument exception in LocationDistanceSelect.validate() and WQSelect.validate() if no data has been inserted so far.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 322
diff changeset
547 if (fromStr == null || toStr == null || stepStr == null) {
ed3325a0232a Throw an illegal argument exception in LocationDistanceSelect.validate() and WQSelect.validate() if no data has been inserted so far.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 322
diff changeset
548 throw new IllegalArgumentException("error_empty_state");
ed3325a0232a Throw an illegal argument exception in LocationDistanceSelect.validate() and WQSelect.validate() if no data has been inserted so far.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 322
diff changeset
549 }
ed3325a0232a Throw an illegal argument exception in LocationDistanceSelect.validate() and WQSelect.validate() if no data has been inserted so far.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 322
diff changeset
550
631
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
551 try {
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
552 double from = Double.parseDouble(fromStr);
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
553 double to = Double.parseDouble(toStr);
a9af60c84dca Small bugfixes in the WQ selection state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 624
diff changeset
554 double step = Double.parseDouble(stepStr);
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
555
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
556 if (mode == FLYSUtils.WQ_MODE.WGAUGE) {
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
557 return validateGaugeW(artifact, from, to, step);
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
558 }
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
559 else if (mode == FLYSUtils.WQ_MODE.QGAUGE) {
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
560 return validateGaugeQ(artifact, from, to, step);
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
561 }
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
562 else if (mode == FLYSUtils.WQ_MODE.QFREE) {
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
563 return validateFreeQ(artifact, from, to, step);
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
564 }
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
565 else {
660
627be3ca1ab6 code clean up in states
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 631
diff changeset
566 throw new IllegalArgumentException(
627be3ca1ab6 code clean up in states
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 631
diff changeset
567 "error_feed_invalid_wq_mode");
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
568 }
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
569 }
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
570 catch (NumberFormatException nfe) {
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
571 throw new IllegalArgumentException("error_feed_number_format");
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
572 }
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
573 }
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
574
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
575
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
576 /**
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
577 * Validates the inserted W values.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
578 *
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
579 * @param artifact The owner artifact.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
580 * @param from The lower value of the W range.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
581 * @param to The upper value of the W range.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
582 * @param step The step width.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
583 *
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
584 * @return true, if everything was fine, otherwise an exception is thrown.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
585 */
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
586 protected boolean validateGaugeW(
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
587 Artifact artifact,
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
588 double from,
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
589 double to,
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
590 double step)
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
591 throws IllegalArgumentException
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
592 {
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
593 logger.debug("WQSelect.validateGaugeW");
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
594
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
595 double[] minmaxW = determineMinMaxW(artifact);
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
596
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
597 return validateBounds(minmaxW[0], minmaxW[1], from, to, step);
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
598 }
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
599
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
600
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
601 /**
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
602 * Validates the inserted Q values based on the Q range for the current
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
603 * gauge.
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
604 *
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
605 * @param artifact The owner artifact.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
606 * @param from The lower value of the Q range.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
607 * @param to The upper value of the Q range.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
608 * @param step The step width.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
609 *
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
610 * @return true, if everything was fine, otherwise an exception is thrown.
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
611 */
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
612 protected boolean validateGaugeQ(
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
613 Artifact artifact,
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
614 double from,
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
615 double to,
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
616 double step)
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
617 throws IllegalArgumentException
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
618 {
2060
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
619 logger.debug("WQSelect.validateGaugeQ");
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
620
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
621 double[] minmaxQ = determineMinMaxQAtGauge(artifact);
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
622
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
623 return validateBounds(minmaxQ[0], minmaxQ[1], from, to, step);
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
624 }
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
625
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
626
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
627 /**
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
628 * Validates the inserted Q values based on the Q range for the current
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
629 * kilometer range.
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
630 *
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
631 * @param artifact The owner artifact.
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
632 * @param from The lower value of the Q range.
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
633 * @param to The upper value of the Q range.
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
634 * @param step The step width.
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
635 *
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
636 * @return true, if everything was fine, otherwise an exception is thrown.
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
637 */
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
638 protected boolean validateFreeQ(
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
639 Artifact artifact,
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
640 double from,
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
641 double to,
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
642 double step)
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
643 throws IllegalArgumentException
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
644 {
3ffb7195173f Validate user defined Qs based on the start kilometer ('Q free').
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2059
diff changeset
645 logger.debug("WQSelect.validateFreeQ");
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
646
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
647 double[] minmaxQ = determineMinMaxQ(artifact);
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
648
379
c21fb8de54f8 Enabled the FLYSArtifact to handle an array of inserted WQ values (without given ranges).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 352
diff changeset
649 return validateBounds(minmaxQ[0], minmaxQ[1], from, to, step);
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 320
diff changeset
650 }
137
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
651 }
7f839b81cdde Added a new state for the W/Q input in the WINFO parameterization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
652 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org