annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/SoundingsSelect.java @ 9391:2da486c7c05f

salix historical sounding workflow changed
author gernotbelger
date Thu, 09 Aug 2018 17:25:13 +0200
parents f575ff573cbb
children ba3ad54edbae
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: 3931
diff changeset
9 package org.dive4elements.river.artifacts.states;
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
11 import java.text.NumberFormat;
8070
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
12 import java.util.Collections;
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
13 import java.util.List;
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
14
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import org.apache.log4j.Logger;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3931
diff changeset
16 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3931
diff changeset
17 import org.dive4elements.artifacts.CallContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3931
diff changeset
18 import org.dive4elements.artifacts.common.model.KVP;
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
19 import org.dive4elements.artifacts.common.utils.XMLUtils;
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
20 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
21 import org.dive4elements.river.artifacts.D4EArtifact;
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
22 import org.dive4elements.river.artifacts.resources.Resources;
8559
6d8d7425a6b5 Bed heights are just bed heights since a while ('single' is obsolete).
"Tom Gottfried <tom@intevation.de>"
parents: 8202
diff changeset
23 import org.dive4elements.river.model.BedHeight;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3931
diff changeset
24 import org.dive4elements.river.model.River;
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
25 import org.dive4elements.river.utils.Formatter;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
26 import org.dive4elements.river.utils.RiverUtils;
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
27 import org.w3c.dom.Element;
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
28
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
29 public abstract class SoundingsSelect extends DefaultState {
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
31 private static final String SOUNDINGS = "soundings";
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
33 public static final String PREFIX_SINGLE = "single-";
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
34
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
35 /** Private log. */
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
36 private static final Logger log = Logger.getLogger(SoundingsSelect.class);
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 @Override
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
39 protected final void appendItems(final Artifact artifact, final ElementCreator creator, final String name, final CallContext context,
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
40 final Element select) {
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
41 try {
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
42 creator.addAttr(select, "type", "multiattribute", true);
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
8070
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
44 appendMeta(creator, select);
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
45
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
46 getOptions(artifact, name, context, creator, select);
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
47 }
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
48 catch (final IllegalArgumentException iae) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
49 log.warn("Illegal argument", iae);
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
50 }
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
51 }
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
52
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
53 private static Element order(final ElementCreator creator, final String name, final String order) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
54 final Element element = creator.create(name);
8070
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
55 creator.addAttr(element, "order", order, false);
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
56 return element;
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
57 }
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
58
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
59 private void appendMeta(final ElementCreator creator, final Element select) {
8070
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
60
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
61 final Element meta = creator.create("meta");
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
62 meta.appendChild(order(creator, "year", "0"));
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
63 meta.appendChild(order(creator, "value", "1"));
8070
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
64 meta.appendChild(order(creator, "analyzed_range", "2"));
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
65 meta.appendChild(order(creator, "label", "3"));
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
66 meta.appendChild(order(creator, "minfo_type", "4"));
8070
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
67
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
68 select.appendChild(meta);
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
69
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
70 }
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
71
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
72 private KVP<String, String>[] getOptions(final Artifact artifact, final String parameterName, final CallContext context, final ElementCreator creator,
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
73 final Element select) throws IllegalArgumentException {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
74 log.debug("Get options for parameter: '" + parameterName + "'");
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 if (!testParameterName(parameterName)) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
77 throw new IllegalArgumentException("Invalid parameter for state: '" + parameterName + "'");
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 }
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
80 final River river = RiverUtils.getRiver((D4EArtifact) artifact);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
81 final double lo = ((D4EArtifact) artifact).getDataAsDouble("ld_from");
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
82 final double hi = ((D4EArtifact) artifact).getDataAsDouble("ld_to");
2716
150dcdefeb7d Only offer soundings that fit to the current km range in MINFO bed height workflow.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2712
diff changeset
83
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
84 final double kmLo = Math.min(lo, hi);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
85 final double kmHi = Math.max(lo, hi);
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
87 appendSingles(river, kmLo, kmHi, creator, select, context);
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
88
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
89 final List<KVP<String, String>> kvp = Collections.<KVP<String, String>>emptyList();
3452
200e70f31f6f Removed some superfluous casts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3087
diff changeset
90 return kvp.toArray(new KVP[kvp.size()]);
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
91 }
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
92
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
93 private void appendSingles(final River river, final double kmLo, final double kmHi, final ElementCreator creator, final Element select,
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
94 final CallContext context) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
95 final List<BedHeight> singles = BedHeight.getBedHeights(river, kmLo, kmHi);
3785
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3782
diff changeset
96
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
97 if (singles != null) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
98 final int size = singles.size();
3785
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3782
diff changeset
99
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
100 log.debug("Found " + size + " singles.");
3785
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3782
diff changeset
101
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
102 final NumberFormat nf = Formatter.getCalculationKm(context.getMeta());
3782
5d0419882382 Added missing translation of minfo state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3649
diff changeset
103 for (int i = 0; i < size; i++) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
104 final BedHeight s = singles.get(i);
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
105
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
106 final String id = PREFIX_SINGLE + s.getId();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
107 final String value = s.getDescription();
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
108
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
109 final Integer year = s.getYear();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
110 final Element item = creator.create("item");
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
111 creator.addAttr(item, "label", value, true);
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
112 creator.addAttr(item, "value", id, true);
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
113 creator.addAttr(item, "analyzed_range", nf.format(s.getRange().getA()) + " - " + nf.format(s.getRange().getB()));
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
114 creator.addAttr(item, "year", year != null ? s.getYear().toString() : "");
7875
b320826b1183 Changed column names in sounding select state ui.
Raimund Renkert <rrenkert@intevation.de>
parents: 7833
diff changeset
115 creator.addAttr(item, "minfo_type", s.getType().getName());
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
116 select.appendChild(item);
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
117 }
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 }
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
119 if (log.isDebugEnabled()) {
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
120 log.debug("appended singles");
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
121 log.debug(XMLUtils.toString(select));
8070
d77f53c1e5a1 Added meta infos for multi items to enable client to order the columns in a defined order.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7919
diff changeset
122 }
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
123 }
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
125 @Override
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
126 protected final Element createStaticData(final D4EArtifact flys, final ElementCreator creator, final CallContext cc, final String name, final String value,
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
127 final String type) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
128 final Element data = creator.create("data");
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
129 creator.addAttr(data, "name", name, true);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
130 creator.addAttr(data, "type", type, true);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
131 creator.addAttr(data, "label", Resources.getMsg(cc.getMeta(), name, name), true);
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
133 final String[] values = value.split(";");
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
134
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
135 for (final String val : values) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
136 final Element item = creator.create("item");
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
137 creator.addAttr(item, "value", val, true);
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
138 creator.addAttr(item, "label", getLabelFor(cc, name, val), true);
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
139
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
140 data.appendChild(item);
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
141 }
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
142
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
143 return data;
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
144 }
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
145
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
146 private String getLabelFor(final CallContext cc, final String parameterName, final String value) throws IllegalArgumentException {
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
147 if (!testParameterName(parameterName)) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
148 throw new IllegalArgumentException("Invalid parameter for state: '" + parameterName + "'");
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149 }
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
150
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
151 if (value.indexOf(PREFIX_SINGLE) >= 0) {
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
152 return getLabelForSingle(cc, value);
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
153 }
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
154 return value;
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
155 }
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
156
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
157 private String getLabelForSingle(final CallContext cc, final String value) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
158 final String id = value.replace(PREFIX_SINGLE, "");
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
159 try {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
160 final BedHeight s = BedHeight.getBedHeightById(Integer.parseInt(id));
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
161
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
162 if (s != null) {
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
163 return s.getDescription();
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
164 } else {
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
165 return "no value for '" + id + "'";
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
166 }
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
167 }
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
168 catch (final NumberFormatException nfe) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
169 log.warn("Could not parse id from string '" + id + "'", nfe);
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
170 }
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
171
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
172 return "n.A.";
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
173 }
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
174
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
175 /**
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8559
diff changeset
176 * This method might be used to test, if a parameter name
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8559
diff changeset
177 * is handled by this state.
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 *
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
179 * @param parameterName
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
180 * The name of a parameter.
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
181 *
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
182 * @return true, if parameterName is one of <i>MAIN_CHANNEL</i> or
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
183 * <i>TOTAL_CHANNEL</i>. Otherwise false.
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
184 */
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
185 private boolean testParameterName(final String parameterName) {
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
186 if (parameterName == null || parameterName.length() == 0) {
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
187 return false;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
188 } else if (parameterName.equals(SOUNDINGS)) {
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
189 return true;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
190 } else {
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
191 return false;
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
192 }
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
193 }
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
194 }
3083
4bd3d8bbb60c Added missing vim lines.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2716
diff changeset
195 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org