Mercurial > dive4elements > river
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 |