comparison artifacts/src/main/java/org/dive4elements/river/artifacts/states/SoundingsSelect.java @ 7823:c053b2d813f9 minfo-opt

Add additional data in soundigs select state.
author Raimund Renkert <rrenkert@intevation.de>
date Thu, 20 Mar 2014 13:35:13 +0100
parents af13ceeba52a
children f97162606fa2
comparison
equal deleted inserted replaced
7822:7227082baca3 7823:c053b2d813f9
6 * documentation coming with Dive4Elements River for details. 6 * documentation coming with Dive4Elements River for details.
7 */ 7 */
8 8
9 package org.dive4elements.river.artifacts.states; 9 package org.dive4elements.river.artifacts.states;
10 10
11 import java.text.NumberFormat;
11 import java.util.ArrayList; 12 import java.util.ArrayList;
12 import java.util.List; 13 import java.util.List;
13 14
14 import org.apache.log4j.Logger; 15 import org.apache.log4j.Logger;
15 16
16 import org.dive4elements.artifacts.Artifact; 17 import org.dive4elements.artifacts.Artifact;
17 import org.dive4elements.artifacts.CallContext; 18 import org.dive4elements.artifacts.CallContext;
18 19
19 import org.dive4elements.artifacts.common.model.KVP; 20 import org.dive4elements.artifacts.common.model.KVP;
21 import org.dive4elements.artifacts.common.utils.XMLUtils;
22 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
20 23
21 import org.dive4elements.river.model.BedHeightEpoch; 24 import org.dive4elements.river.model.BedHeightEpoch;
22 import org.dive4elements.river.model.BedHeightSingle; 25 import org.dive4elements.river.model.BedHeightSingle;
23 import org.dive4elements.river.model.River; 26 import org.dive4elements.river.model.River;
24 27
25 import org.dive4elements.river.artifacts.D4EArtifact; 28 import org.dive4elements.river.artifacts.D4EArtifact;
29 import org.dive4elements.river.artifacts.resources.Resources;
30 import org.dive4elements.river.utils.Formatter;
26 import org.dive4elements.river.utils.RiverUtils; 31 import org.dive4elements.river.utils.RiverUtils;
27 32 import org.w3c.dom.Element;
28 33
29 public class SoundingsSelect extends MultiStringArrayState { 34
35 public class SoundingsSelect extends DefaultState {
30 36
31 public static final String SOUNDINGS = "soundings"; 37 public static final String SOUNDINGS = "soundings";
32 38
33 public static final String PREFIX_SINGLE = "single-"; 39 public static final String PREFIX_SINGLE = "single-";
34 40
41 @Override 47 @Override
42 public String getUIProvider() { 48 public String getUIProvider() {
43 return "parameter-matrix"; 49 return "parameter-matrix";
44 } 50 }
45 51
46
47 @Override 52 @Override
53 protected void appendItems(
54 Artifact artifact,
55 ElementCreator creator,
56 String name,
57 CallContext context,
58 Element select
59 ) {
60 try {
61 creator.addAttr(select, "type", "multiattribute", true);
62
63 getOptions(artifact, name, context, creator, select);
64 }
65 catch (IllegalArgumentException iae) {
66 logger.warn("Illegal argument", iae);
67 }
68 }
69
48 protected KVP<String, String>[] getOptions( 70 protected KVP<String, String>[] getOptions(
49 Artifact artifact, 71 Artifact artifact,
50 String parameterName, 72 String parameterName,
51 CallContext context 73 CallContext context,
74 ElementCreator creator,
75 Element select
52 ) 76 )
53 throws IllegalArgumentException 77 throws IllegalArgumentException
54 { 78 {
55 logger.debug("Get options for parameter: '" + parameterName + "'"); 79 logger.debug("Get options for parameter: '" + parameterName + "'");
56 80
66 double kmLo = Math.min(lo, hi); 90 double kmLo = Math.min(lo, hi);
67 double kmHi = Math.max(lo, hi); 91 double kmHi = Math.max(lo, hi);
68 92
69 List<KVP<String, String>> kvp = new ArrayList<KVP<String, String>>(); 93 List<KVP<String, String>> kvp = new ArrayList<KVP<String, String>>();
70 94
71 appendSingles(river, kmLo, kmHi, kvp); 95 appendSingles(river, kmLo, kmHi, creator, select, context);
72 appendEpochs(river, kmLo, kmHi, kvp); 96 appendEpochs(river, kmLo, kmHi, creator, select, context);
73 97
74 return kvp.toArray(new KVP[kvp.size()]); 98 return kvp.toArray(new KVP[kvp.size()]);
75 } 99 }
76 100
77 101
78 protected void appendSingles( 102 protected void appendSingles(
79 River river, 103 River river,
80 double kmLo, 104 double kmLo,
81 double kmHi, 105 double kmHi,
82 List<KVP<String, String>> kvp 106 ElementCreator creator,
107 Element select,
108 CallContext context
83 ) { 109 ) {
84 List<BedHeightSingle> singles = 110 List<BedHeightSingle> singles =
85 BedHeightSingle.getBedHeightSingles(river, kmLo, kmHi); 111 BedHeightSingle.getBedHeightSingles(river, kmLo, kmHi);
86 112
87 if (singles != null) { 113 if (singles != null) {
88 int size = singles.size(); 114 int size = singles.size();
89 115
90 logger.debug("Found " + size + " singles."); 116 logger.debug("Found " + size + " singles.");
91 117
118 NumberFormat nf = Formatter.getCalculationKm(context.getMeta());
92 for (int i = 0; i < size; i++) { 119 for (int i = 0; i < size; i++) {
93 BedHeightSingle s = singles.get(i); 120 BedHeightSingle s = singles.get(i);
94 121
95 String id = PREFIX_SINGLE + s.getId(); 122 String id = PREFIX_SINGLE + s.getId();
96 String value = s.getDescription(); 123 String value = s.getDescription();
97 124
98 kvp.add(new KVP(id, value)); 125 Element item = creator.create("item");
99 } 126 creator.addAttr(item, "label", value, true);
100 } 127 creator.addAttr(item, "value", id, true);
128 creator.addAttr(item, "year", s.getYear().toString());
129 creator.addAttr(item, "type", s.getType().getName());
130 creator.addAttr(item, "range",
131 nf.format(s.getRange().getA()) +
132 " - " +
133 nf.format(s.getRange().getB()));
134 select.appendChild(item);
135 }
136 }
137 logger.debug("appended singles");
138 logger.debug(XMLUtils.toString(select));
101 } 139 }
102 140
103 141
104 protected void appendEpochs( 142 protected void appendEpochs(
105 River river, 143 River river,
106 double kmLo, 144 double kmLo,
107 double kmHi, 145 double kmHi,
108 List<KVP<String, String>> kvp 146 ElementCreator creator,
147 Element select,
148 CallContext context
109 ) { 149 ) {
110 List<BedHeightEpoch> epochs = 150 List<BedHeightEpoch> epochs =
111 BedHeightEpoch.getBedHeightEpochs(river, kmLo, kmHi); 151 BedHeightEpoch.getBedHeightEpochs(river, kmLo, kmHi);
112 152
113 if (epochs != null) { 153 if (epochs != null) {
114 int size = epochs.size(); 154 int size = epochs.size();
115 155
116 logger.debug("Found " + size + " epochs."); 156 logger.debug("Found " + size + " epochs.");
117 157
158 NumberFormat nf = Formatter.getCalculationKm(context.getMeta());
118 for (int i = 0; i < size; i++) { 159 for (int i = 0; i < size; i++) {
119 BedHeightEpoch e = epochs.get(i); 160 BedHeightEpoch e = epochs.get(i);
120 161
121 String id = PREFIX_EPOCH + e.getId(); 162 String id = PREFIX_EPOCH + e.getId();
122 String value = e.getDescription(); 163 String value = e.getDescription();
123 164
124 kvp.add(new KVP(id, value)); 165 Element item = creator.create("item");
125 } 166 creator.addAttr(item, "label", value, true);
126 } 167 creator.addAttr(item, "value", id, true);
127 } 168 creator.addAttr(item, "year", e.getTimeInterval().getStartTime().toString());
128 169 creator.addAttr(item, "range",
170 nf.format(e.getRange().getA()) +
171 " - " +
172 nf.format(e.getRange().getB()));
173 select.appendChild(item);
174 }
175 }
176 logger.debug("appended epochs");
177 }
129 178
130 @Override 179 @Override
180 protected Element createStaticData(
181 D4EArtifact flys,
182 ElementCreator creator,
183 CallContext cc,
184 String name,
185 String value,
186 String type
187 ) {
188 Element data = creator.create("data");
189 creator.addAttr(data, "name", name, true);
190 creator.addAttr(data, "type", type, true);
191 creator.addAttr(data, "label",
192 Resources.getMsg(cc.getMeta(), name, name), true);
193
194 String[] values = value.split(";");
195
196 for (String val: values) {
197 Element item = creator.create("item");
198 creator.addAttr(item, "value", val, true);
199 creator.addAttr(item, "label", getLabelFor(cc, name, val), true);
200
201 data.appendChild(item);
202 }
203
204 return data;
205 }
206
131 protected String getLabelFor( 207 protected String getLabelFor(
132 CallContext cc, 208 CallContext cc,
133 String parameterName, 209 String parameterName,
134 String value 210 String value
135 ) throws IllegalArgumentException 211 ) throws IllegalArgumentException

http://dive4elements.wald.intevation.org