annotate artifacts/src/main/java/org/dive4elements/river/artifacts/states/SoundingsSelect.java @ 9449:ba3ad54edbae

withFieldsOnly bundu.wst sounding
author gernotbelger
date Wed, 22 Aug 2018 14:07:39 +0200
parents 2da486c7c05f
children
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
9449
ba3ad54edbae withFieldsOnly bundu.wst sounding
gernotbelger
parents: 9391
diff changeset
93 protected abstract boolean withHeightFieldsOnly();
ba3ad54edbae withFieldsOnly bundu.wst sounding
gernotbelger
parents: 9391
diff changeset
94
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
95 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
96 final CallContext context) {
9449
ba3ad54edbae withFieldsOnly bundu.wst sounding
gernotbelger
parents: 9391
diff changeset
97 final List<BedHeight> singles = BedHeight.getBedHeights(river, kmLo, kmHi, withHeightFieldsOnly());
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
98
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
99 if (singles != null) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
100 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
101
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
102 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
103
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
104 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
105 for (int i = 0; i < size; i++) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
106 final BedHeight s = singles.get(i);
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
107
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
108 final String id = PREFIX_SINGLE + s.getId();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
109 final String value = s.getDescription();
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
110
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
111 final Integer year = s.getYear();
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
112 final Element item = creator.create("item");
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
113 creator.addAttr(item, "label", value, true);
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
114 creator.addAttr(item, "value", id, true);
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
115 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
116 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
117 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
118 select.appendChild(item);
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
119 }
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 }
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
121 if (log.isDebugEnabled()) {
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
122 log.debug("appended singles");
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
123 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
124 }
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
125 }
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
127 @Override
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
128 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
129 final String type) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
130 final Element data = creator.create("data");
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
131 creator.addAttr(data, "name", name, true);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
132 creator.addAttr(data, "type", type, true);
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
133 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
134
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
135 final String[] values = value.split(";");
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
136
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
137 for (final String val : values) {
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
138 final Element item = creator.create("item");
7823
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
139 creator.addAttr(item, "value", val, true);
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
140 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
141
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
142 data.appendChild(item);
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
143 }
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 return data;
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
146 }
c053b2d813f9 Add additional data in soundigs select state.
Raimund Renkert <rrenkert@intevation.de>
parents: 5994
diff changeset
147
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
148 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
149 if (!testParameterName(parameterName)) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
150 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
151 }
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
152
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
153 if (value.indexOf(PREFIX_SINGLE) >= 0) {
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
154 return getLabelForSingle(cc, 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 return value;
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
157 }
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
158
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
159 private String getLabelForSingle(final CallContext cc, final String value) {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
160 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
161 try {
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
162 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
163
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
164 if (s != null) {
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
165 return s.getDescription();
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
166 } else {
2712
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
167 return "no value for '" + id + "'";
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
168 }
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
169 }
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
170 catch (final NumberFormatException nfe) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8083
diff changeset
171 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
172 }
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 return "n.A.";
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
175 }
ed612b85fb6d Implemented SoundingsSelect.getOptions() and SoundingsSelect.getLabelFor().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2709
diff changeset
176
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177 /**
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8559
diff changeset
178 * This method might be used to test, if a parameter name
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8559
diff changeset
179 * 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
180 *
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
181 * @param parameterName
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
182 * 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
183 *
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
184 * @return true, if parameterName is one of <i>MAIN_CHANNEL</i> or
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
185 * <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
186 */
9391
2da486c7c05f salix historical sounding workflow changed
gernotbelger
parents: 9390
diff changeset
187 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
188 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
189 return false;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
190 } 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
191 return true;
9390
f575ff573cbb "Name der Peilung" columname minfo.
gernotbelger
parents: 8856
diff changeset
192 } else {
2709
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
193 return false;
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
194 }
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
195 }
cd6bcca17de6 Added states and improved transition model for MINFO middle bed height calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
196 }
3083
4bd3d8bbb60c Added missing vim lines.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2716
diff changeset
197 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org