annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/WaterlevelSelectState.java @ 7636:003502ea4854

issue1020: Handle FixRealizingResult for UESK waterlevel-selection.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Tue, 03 Dec 2013 12:25:03 +0100
parents f89ad512f426
children 21adafca6441
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
9 package org.dive4elements.river.artifacts.states;
1172
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
11 import org.apache.log4j.Logger;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
12
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
13 import org.w3c.dom.Element;
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
14
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
15 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
16 import org.dive4elements.artifacts.CallContext;
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
17
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
18 import org.dive4elements.artifactdatabase.data.DefaultStateData;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
19 import org.dive4elements.artifactdatabase.data.StateData;
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
20
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
21 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
22
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
23 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
24 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
25 import org.dive4elements.river.artifacts.model.WQKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
26 import org.dive4elements.river.artifacts.model.extreme.ExtremeResult;
7636
003502ea4854 issue1020: Handle FixRealizingResult for UESK waterlevel-selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7571
diff changeset
27 import org.dive4elements.river.artifacts.model.fixings.FixRealizingResult;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
28 import org.dive4elements.river.artifacts.resources.Resources;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
29 import org.dive4elements.river.utils.RiverUtils;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5415
diff changeset
30 import org.dive4elements.river.utils.StringUtil;
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
31
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
32
1172
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 /**
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 */
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 public class WaterlevelSelectState extends DefaultState {
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
38 private static final Logger logger =
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
39 Logger.getLogger(WaterlevelSelectState.class);
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
40
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
41 public static final String SPLIT_CHAR = ";";
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
42
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
43 public static final String WINFO_WSP_STATE_ID = "state.winfo.waterlevel";
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
44
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
45 public static final String I18N_STATIC_KEY = "wsp.selected.string";
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
46
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
47
1172
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 @Override
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 protected String getUIProvider() {
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 return "wsp_datacage_panel";
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 }
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
52
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
53
1655
d251e5929860 Extracted StringUtil.unbracket from WaterlevelSelectState.strip .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
54 /**
d251e5929860 Extracted StringUtil.unbracket from WaterlevelSelectState.strip .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
55 * @param flys ignored
d251e5929860 Extracted StringUtil.unbracket from WaterlevelSelectState.strip .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
56 * @param cc ignrored
d251e5929860 Extracted StringUtil.unbracket from WaterlevelSelectState.strip .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
57 */
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
58 @Override
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
59 public StateData transform(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
60 D4EArtifact flys,
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
61 CallContext cc,
2205
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1743
diff changeset
62 StateData stateData,
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
63 String name,
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
64 String val
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
65 ) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
66 if (!isValueValid(val)) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
67 logger.error("The given input string is not valid: '" + val + "'");
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
68 return null;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
69 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
70
1655
d251e5929860 Extracted StringUtil.unbracket from WaterlevelSelectState.strip .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
71 return new DefaultStateData(name, null, null, StringUtil.unbracket(val));
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
72 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
73
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
74
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
75 @Override
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
76 public boolean validate(Artifact artifact)
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
77 throws IllegalArgumentException
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
78 {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
79 D4EArtifact flys = (D4EArtifact) artifact;
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
80
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
81 StateData data = flys.getData("wsp");
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
82
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
83 if (data == null) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
84 throw new IllegalArgumentException("WSP is empty");
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
85 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
86
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
87 return true;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
88 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
89
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
90
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
91 @Override
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
92 protected Element createStaticData(
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
93 D4EArtifact flys,
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
94 ElementCreator creator,
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
95 CallContext cc,
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
96 String name,
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
97 String value,
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
98 String type
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
99 ) {
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
100 Element dataElement = creator.create("data");
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
101 creator.addAttr(dataElement, "name", name, true);
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
102 creator.addAttr(dataElement, "type", type, true);
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
103
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
104 Element itemElement = creator.create("item");
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
105 creator.addAttr(itemElement, "value", value, true);
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
106
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
107 String[] labels = getLabels(cc, value);
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
108 Object[] obj = new Object[] { labels[0] };
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
109
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
110 String attrValue = Resources.getMsg(
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
111 cc.getMeta(), I18N_STATIC_KEY, I18N_STATIC_KEY, obj);
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
112
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
113 creator.addAttr(itemElement, "label", attrValue, true);
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
114 dataElement.appendChild(itemElement);
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
115
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
116 return dataElement;
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
117 }
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
118
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
119
1655
d251e5929860 Extracted StringUtil.unbracket from WaterlevelSelectState.strip .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
120 /**
d251e5929860 Extracted StringUtil.unbracket from WaterlevelSelectState.strip .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
121 * Get name to display for selected watelerlevel (for example "Q=123")
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2205
diff changeset
122 * from the CalculationResult.
1655
d251e5929860 Extracted StringUtil.unbracket from WaterlevelSelectState.strip .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
123 */
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
124 public static String[] getLabels(CallContext cc, String value) {
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
125 String[] parts = value.split(SPLIT_CHAR);
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
126
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
127 D4EArtifact artifact = RiverUtils.getArtifact(parts[0], cc);
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
128
7571
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
129 Object rawData = artifact.compute(
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
130 cc,
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
131 null,
7571
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
132 //WINFO_WSP_STATE_ID,
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
133 artifact.getCurrentStateId(),
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
134 ComputeType.ADVANCE,
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
135 false);
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
136
5415
5bac3e75f59c WaterlevelSelectState: Avoid npe with extreme results.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4433
diff changeset
137 WQKms[] wqkms;
5bac3e75f59c WaterlevelSelectState: Avoid npe with extreme results.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4433
diff changeset
138
7571
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
139 // TODO issue1020: Fetch cases in which only WKms or
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
140 // other weird stuff arrives.
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
141 if (rawData instanceof CalculationResult) {
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
142 CalculationResult calcResult = (CalculationResult) rawData;
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
143 if (calcResult.getData() instanceof ExtremeResult) {
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
144 wqkms = ((ExtremeResult) calcResult.getData()).getWQKms();
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
145 }
7636
003502ea4854 issue1020: Handle FixRealizingResult for UESK waterlevel-selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7571
diff changeset
146 else if (calcResult.getData() instanceof FixRealizingResult) {
003502ea4854 issue1020: Handle FixRealizingResult for UESK waterlevel-selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7571
diff changeset
147 wqkms = ((FixRealizingResult) calcResult.getData()).getWQKms();
003502ea4854 issue1020: Handle FixRealizingResult for UESK waterlevel-selection.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7571
diff changeset
148 }
7571
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
149 else {
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
150 wqkms = (WQKms[]) calcResult.getData();
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
151 }
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
152 }
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
153 else if (rawData instanceof WQKms) {
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
154 wqkms = new WQKms[] {(WQKms) rawData};
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
155 }
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
156 else if (rawData instanceof WQKms[]) {
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
157 wqkms = (WQKms[]) rawData;
5415
5bac3e75f59c WaterlevelSelectState: Avoid npe with extreme results.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4433
diff changeset
158 }
5bac3e75f59c WaterlevelSelectState: Avoid npe with extreme results.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4433
diff changeset
159 else {
7571
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
160 logger.error("Do not know how to handle " + rawData.getClass());
f89ad512f426 issue1020: In WaterlevelSelectState create label more differentiated at
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6016
diff changeset
161 wqkms = null;
5415
5bac3e75f59c WaterlevelSelectState: Avoid npe with extreme results.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4433
diff changeset
162 }
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
163
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
164 int idx = -1;
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
165 try {
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
166 idx = Integer.parseInt(parts[2]);
6016
d24d29d9efa7 issue1320: Handle exception.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
167 String name = wqkms[idx].getName();
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
168
6016
d24d29d9efa7 issue1320: Handle exception.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
169 return new String[] { StringUtil.wWrap(name) };
d24d29d9efa7 issue1320: Handle exception.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
170 }
d24d29d9efa7 issue1320: Handle exception.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
171 catch (NumberFormatException nfe) { /* do nothing */
d24d29d9efa7 issue1320: Handle exception.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
172 logger.error("Cannot get label for " + value + " (" + parts[2] + ")");
d24d29d9efa7 issue1320: Handle exception.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
173 return new String[] {""};
d24d29d9efa7 issue1320: Handle exception.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5994
diff changeset
174 }
1180
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
175 }
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
176
1aba1a75beb2 Write the name of the selected waterlevels (used for the floodmap) into the static DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1178
diff changeset
177
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
178 /**
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
179 * Validates the given String. A valid string for this state requires the
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
180 * format: "UUID;FACETNAME;FACETINDEX".
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
181 *
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
182 * @param value The string value requires validation.
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
183 *
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
184 * @return true, if the string applies the specified format, otherwise
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
185 * false.
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
186 */
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
187 public static boolean isValueValid(String value) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
188 logger.debug("Validate string: '" + value + "'");
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
189
1655
d251e5929860 Extracted StringUtil.unbracket from WaterlevelSelectState.strip .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
190 value = StringUtil.unbracket(value);
1178
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
191
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
192 logger.debug("Validate substring: '" + value + "'");
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
193
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
194 if (value == null || value.length() == 0) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
195 return false;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
196 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
197
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
198 String[] parts = value.split(SPLIT_CHAR);
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
199
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
200 if (parts == null || parts.length < 3) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
201 return false;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
202 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
203
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
204 if (parts[0] == null || parts[0].length() == 0) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
205 return false;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
206 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
207
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
208 if (parts[1] == null || parts[1].length() == 0) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
209 return false;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
210 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
211
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
212 try {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
213 Integer.parseInt(parts[2]);
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
214 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
215 catch (NumberFormatException nfe) {
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
216 logger.error("Index is not a valid integer!", nfe);
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
217 }
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
218
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
219 return true;
1b432c260e97 Enabled the FloodMapState to fetch waterlevel data from external Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1172
diff changeset
220 }
1172
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
221 }
23eb122c8ec1 Prepared the winfo artifact for floodmap calculations (now selectable in the UI).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
222 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org