Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/SInfoResultType.java @ 9000:50cc99579a46
Work on uinfo
author | gernotbelger |
---|---|
date | Thu, 12 Apr 2018 19:16:10 +0200 |
parents | 7c1611b5a59e |
children | 7134a4c7d1b6 |
comparison
equal
deleted
inserted
replaced
8999:e3b3ce32c825 | 9000:50cc99579a46 |
---|---|
8 * documentation coming with Dive4Elements River for details. | 8 * documentation coming with Dive4Elements River for details. |
9 */ | 9 */ |
10 package org.dive4elements.river.artifacts.sinfo.common; | 10 package org.dive4elements.river.artifacts.sinfo.common; |
11 | 11 |
12 import java.text.NumberFormat; | 12 import java.text.NumberFormat; |
13 import java.util.HashMap; | |
14 import java.util.Locale; | |
15 import java.util.Map; | |
16 | 13 |
17 import org.apache.commons.lang.StringUtils; | 14 import org.apache.commons.lang.StringUtils; |
18 import org.dive4elements.artifacts.CallContext; | 15 import org.dive4elements.artifacts.CallContext; |
19 import org.dive4elements.artifacts.CallMeta; | 16 import org.dive4elements.river.artifacts.common.AbstractResultType; |
17 import org.dive4elements.river.artifacts.common.I18NStrings; | |
20 import org.dive4elements.river.artifacts.resources.Resources; | 18 import org.dive4elements.river.artifacts.resources.Resources; |
21 import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings; | |
22 import org.dive4elements.river.artifacts.sinfo.tkhcalculation.SoilKind; | 19 import org.dive4elements.river.artifacts.sinfo.tkhcalculation.SoilKind; |
23 import org.dive4elements.river.utils.Formatter; | 20 import org.dive4elements.river.utils.Formatter; |
24 import org.dive4elements.river.utils.RiverUtils; | 21 import org.dive4elements.river.utils.RiverUtils; |
25 | 22 |
26 /** | 23 /** |
27 * Result type for data that goes into {@link SInfoResultRow}s. | 24 * Result type for data that goes into {@link SInfoResultRow}s. |
28 * | 25 * |
29 * @author Gernot Belger | 26 * @author Gernot Belger |
30 */ | 27 */ |
31 public enum SInfoResultType { | 28 public abstract class SInfoResultType extends AbstractResultType { |
32 | 29 |
33 station(SInfoI18NStrings.UNIT_KM, SInfoI18NStrings.CSV_KM_HEADER) { | 30 private SInfoResultType(final String unit, final String csvHeader) { |
34 @Override | 31 super(unit, csvHeader, csvHeader); |
35 public String exportValue(final CallContext context, final Object value) { | 32 } |
36 final double doubleValue = asDouble(value); | 33 |
37 return exportDoubleValue(context, doubleValue); | 34 private SInfoResultType(final String unit, final String csvHeader, final String pdfHeader) { |
38 } | 35 super(unit, csvHeader, pdfHeader); |
39 | 36 } |
40 @Override | 37 |
41 protected NumberFormat createFormatter(final CallContext context) { | 38 public static final SInfoResultType waterlevel = new SInfoResultType(null, SInfoI18NStrings.CSV_WATERLEVEL_HEADER, |
42 return Formatter.getWaterlevelKM(context); | 39 "sinfo.export.flow_depth.pdf.header.waterlevel") { |
43 } | |
44 }, | |
45 | |
46 waterlevel(null, SInfoI18NStrings.CSV_WATERLEVEL_HEADER,"sinfo.export.flow_depth.pdf.header.waterlevel") { | |
47 @Override | 40 @Override |
48 public String exportValue(final CallContext context, final Object value) { | 41 public String exportValue(final CallContext context, final Object value) { |
49 final double doubleValue = asDouble(value); | 42 final double doubleValue = asDouble(value); |
50 return exportDoubleValue(context, doubleValue); | 43 return exportDoubleValue(context, doubleValue); |
51 } | 44 } |
54 protected NumberFormat createFormatter(final CallContext context) { | 47 protected NumberFormat createFormatter(final CallContext context) { |
55 // REMARK: other modules use Formatter.getWaterlevelW(context) instead, but that format with a variable number of | 48 // REMARK: other modules use Formatter.getWaterlevelW(context) instead, but that format with a variable number of |
56 // digits. | 49 // digits. |
57 return Formatter.getFlowDepth(context); | 50 return Formatter.getFlowDepth(context); |
58 } | 51 } |
59 }, | 52 }; |
60 | 53 |
61 waterlevelLabel(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_LABEL_HEADER) { | 54 public static final SInfoResultType waterlevelLabel = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_LABEL_HEADER) { |
62 @Override | 55 @Override |
63 public String exportValue(final CallContext context, final Object value) { | 56 public String exportValue(final CallContext context, final Object value) { |
64 return exportStringValue(value); | 57 return exportStringValue(value); |
65 } | 58 } |
66 | 59 |
67 @Override | 60 @Override |
68 protected NumberFormat createFormatter(final CallContext context) { | 61 protected NumberFormat createFormatter(final CallContext context) { |
69 throw new UnsupportedOperationException(); | 62 throw new UnsupportedOperationException(); |
70 } | 63 } |
71 }, | 64 }; |
72 | 65 |
73 discharge(SInfoI18NStrings.UNIT_CUBIC_M, SInfoI18NStrings.CSV_DISCHARGE_HEADER) { | 66 public static final SInfoResultType discharge = new SInfoResultType(I18NStrings.UNIT_CUBIC_M, SInfoI18NStrings.CSV_DISCHARGE_HEADER) { |
74 @Override | 67 @Override |
75 public String exportValue(final CallContext context, final Object value) { | 68 public String exportValue(final CallContext context, final Object value) { |
76 final double doubleValue = asDouble(value); | 69 final double doubleValue = asDouble(value); |
77 final double roundedDischarge = RiverUtils.roundQ(doubleValue); | 70 final double roundedDischarge = RiverUtils.roundQ(doubleValue); |
78 return exportDoubleValue(context, roundedDischarge); | 71 return exportDoubleValue(context, roundedDischarge); |
80 | 73 |
81 @Override | 74 @Override |
82 protected NumberFormat createFormatter(final CallContext context) { | 75 protected NumberFormat createFormatter(final CallContext context) { |
83 return Formatter.getWaterlevelQ(context); | 76 return Formatter.getWaterlevelQ(context); |
84 } | 77 } |
85 }, | 78 }; |
86 | 79 |
87 meanBedHeight(null, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER_SHORT) { | 80 public static final SInfoResultType meanBedHeight = new SInfoResultType(null, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER, |
81 SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER_SHORT) { | |
88 @Override | 82 @Override |
89 public String exportValue(final CallContext context, final Object value) { | 83 public String exportValue(final CallContext context, final Object value) { |
90 final double doubleValue = asDouble(value); | 84 final double doubleValue = asDouble(value); |
91 return exportDoubleValue(context, doubleValue); | 85 return exportDoubleValue(context, doubleValue); |
92 } | 86 } |
93 | 87 |
94 @Override | 88 @Override |
95 protected NumberFormat createFormatter(final CallContext context) { | 89 protected NumberFormat createFormatter(final CallContext context) { |
96 return Formatter.getMeanBedHeight(context); | 90 return Formatter.getMeanBedHeight(context); |
97 } | 91 } |
98 }, | 92 }; |
99 | 93 |
100 soundingLabel(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_SOUNDING_HEADER) { | 94 public static final SInfoResultType soundingLabel = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_SOUNDING_HEADER) { |
101 @Override | 95 @Override |
102 public String exportValue(final CallContext context, final Object value) { | 96 public String exportValue(final CallContext context, final Object value) { |
103 return exportStringValue(value); | 97 return exportStringValue(value); |
104 } | 98 } |
105 | 99 |
106 @Override | 100 @Override |
107 protected NumberFormat createFormatter(final CallContext context) { | 101 protected NumberFormat createFormatter(final CallContext context) { |
108 throw new UnsupportedOperationException(); | 102 throw new UnsupportedOperationException(); |
109 } | 103 } |
110 }, | 104 }; |
111 | 105 public static final SInfoResultType flowdepthDevelopmentPerYear = new SInfoResultType(I18NStrings.UNIT_CM_A, |
112 flowdepthmin(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_MIN_HEADER) { | 106 SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_PER_YEAR_HEADER) { |
113 @Override | 107 @Override |
114 public String exportValue(final CallContext context, final Object value) { | 108 public String exportValue(final CallContext context, final Object value) { |
115 final double doubleValue = asDouble(value); | 109 final double doubleValue = asDouble(value); |
116 return exportDoubleValue(context, doubleValue); | 110 return exportDoubleValue(context, doubleValue); |
117 } | 111 } |
118 | 112 |
119 @Override | 113 @Override |
120 protected NumberFormat createFormatter(final CallContext context) { | 114 protected NumberFormat createFormatter(final CallContext context) { |
121 return Formatter.getFlowDepth(context); | 115 return Formatter.getFlowDepthDevelopmentPerYear(context); |
122 } | 116 } |
123 }, | 117 }; |
124 | 118 |
125 flowdepthmax(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_MAX_HEADER) { | 119 public static final SInfoResultType flowdepthmin = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_MIN_HEADER) { |
126 @Override | 120 @Override |
127 public String exportValue(final CallContext context, final Object value) { | 121 public String exportValue(final CallContext context, final Object value) { |
128 final double doubleValue = asDouble(value); | 122 final double doubleValue = asDouble(value); |
129 return exportDoubleValue(context, doubleValue); | 123 return exportDoubleValue(context, doubleValue); |
130 } | 124 } |
131 | 125 |
132 @Override | 126 @Override |
133 protected NumberFormat createFormatter(final CallContext context) { | 127 protected NumberFormat createFormatter(final CallContext context) { |
134 return Formatter.getFlowDepth(context); | 128 return Formatter.getFlowDepth(context); |
135 } | 129 } |
136 }, | 130 }; |
137 | 131 |
138 gaugeLabel(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_GAUGE_HEADER) { | 132 public static final SInfoResultType flowdepthmax = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_MAX_HEADER) { |
133 @Override | |
134 public String exportValue(final CallContext context, final Object value) { | |
135 final double doubleValue = asDouble(value); | |
136 return exportDoubleValue(context, doubleValue); | |
137 } | |
138 | |
139 @Override | |
140 protected NumberFormat createFormatter(final CallContext context) { | |
141 return Formatter.getFlowDepth(context); | |
142 } | |
143 }; | |
144 | |
145 public static final SInfoResultType gaugeLabel = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_GAUGE_HEADER) { | |
139 @Override | 146 @Override |
140 public String exportValue(final CallContext context, final Object value) { | 147 public String exportValue(final CallContext context, final Object value) { |
141 return exportStringValue(value); | 148 return exportStringValue(value); |
142 } | 149 } |
143 | 150 |
144 @Override | 151 @Override |
145 protected NumberFormat createFormatter(final CallContext context) { | 152 protected NumberFormat createFormatter(final CallContext context) { |
146 throw new UnsupportedOperationException(); | 153 throw new UnsupportedOperationException(); |
147 } | 154 } |
148 }, | 155 }; |
149 | 156 |
150 location(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_LOCATION_HEADER) { | 157 public static final SInfoResultType location = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_LOCATION_HEADER) { |
151 @Override | 158 @Override |
152 public String exportValue(final CallContext context, final Object value) { | 159 public String exportValue(final CallContext context, final Object value) { |
153 return exportStringValue(value); | 160 return exportStringValue(value); |
154 } | 161 } |
155 | 162 |
156 @Override | 163 @Override |
157 protected NumberFormat createFormatter(final CallContext context) { | 164 protected NumberFormat createFormatter(final CallContext context) { |
158 throw new UnsupportedOperationException(); | 165 throw new UnsupportedOperationException(); |
159 } | 166 } |
160 }, | 167 }; |
161 | 168 |
162 soilkind(SInfoI18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_TKHKIND_HEADER, "sinfo.export.tkh.pdf.header.tkhkind") { | 169 public static final SInfoResultType soilkind = new SInfoResultType(I18NStrings.UNIT_NONE, SInfoI18NStrings.CSV_TKHKIND_HEADER, |
170 "sinfo.export.tkh.pdf.header.tkhkind") { | |
163 @Override | 171 @Override |
164 public String exportValue(final CallContext context, final Object value) { | 172 public String exportValue(final CallContext context, final Object value) { |
165 | 173 |
166 if (value == null) | 174 if (value == null) |
167 return StringUtils.EMPTY; | 175 return StringUtils.EMPTY; |
174 | 182 |
175 @Override | 183 @Override |
176 protected NumberFormat createFormatter(final CallContext context) { | 184 protected NumberFormat createFormatter(final CallContext context) { |
177 throw new UnsupportedOperationException(); | 185 throw new UnsupportedOperationException(); |
178 } | 186 } |
179 }, | 187 }; |
180 | 188 |
181 flowdepth(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_HEADER) { | 189 public static final SInfoResultType flowdepth = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_HEADER) { |
182 @Override | 190 @Override |
183 public String exportValue(final CallContext context, final Object value) { | 191 public String exportValue(final CallContext context, final Object value) { |
184 final double doubleValue = asDouble(value); | 192 final double doubleValue = asDouble(value); |
185 return exportDoubleValue(context, doubleValue); | 193 return exportDoubleValue(context, doubleValue); |
186 } | 194 } |
187 | 195 |
188 @Override | 196 @Override |
189 protected NumberFormat createFormatter(final CallContext context) { | 197 protected NumberFormat createFormatter(final CallContext context) { |
190 return Formatter.getFlowDepth(context); | 198 return Formatter.getFlowDepth(context); |
191 } | 199 } |
192 }, | 200 }; |
193 | 201 |
194 d50(null, null) { | 202 public static final SInfoResultType d50 = new SInfoResultType(null, null) { |
195 @Override | 203 @Override |
196 public String exportValue(final CallContext context, final Object value) { | 204 public String exportValue(final CallContext context, final Object value) { |
197 final double doubleValue = asDouble(value); | 205 final double doubleValue = asDouble(value); |
198 return exportDoubleValue(context, doubleValue); | 206 return exportDoubleValue(context, doubleValue); |
199 } | 207 } |
200 | 208 |
201 @Override | 209 @Override |
202 protected NumberFormat createFormatter(final CallContext context) { | 210 protected NumberFormat createFormatter(final CallContext context) { |
203 throw new UnsupportedOperationException(); | 211 throw new UnsupportedOperationException(); |
204 } | 212 } |
205 }, | 213 }; |
206 | 214 |
207 velocity(null, null) { | 215 public static final SInfoResultType velocity = new SInfoResultType(null, null) { |
208 @Override | 216 @Override |
209 public String exportValue(final CallContext context, final Object value) { | 217 public String exportValue(final CallContext context, final Object value) { |
210 final double doubleValue = asDouble(value); | 218 final double doubleValue = asDouble(value); |
211 return exportDoubleValue(context, doubleValue); | 219 return exportDoubleValue(context, doubleValue); |
212 } | 220 } |
213 | 221 |
214 @Override | 222 @Override |
215 protected NumberFormat createFormatter(final CallContext context) { | 223 protected NumberFormat createFormatter(final CallContext context) { |
216 throw new UnsupportedOperationException(); | 224 throw new UnsupportedOperationException(); |
217 } | 225 } |
218 }, | 226 }; |
219 | 227 |
220 tau(null, null) { | 228 public static final SInfoResultType tau = new SInfoResultType(null, null) { |
221 @Override | 229 @Override |
222 public String exportValue(final CallContext context, final Object value) { | 230 public String exportValue(final CallContext context, final Object value) { |
223 final double doubleValue = asDouble(value); | 231 final double doubleValue = asDouble(value); |
224 return exportDoubleValue(context, doubleValue); | 232 return exportDoubleValue(context, doubleValue); |
225 } | 233 } |
226 | 234 |
227 @Override | 235 @Override |
228 protected NumberFormat createFormatter(final CallContext context) { | 236 protected NumberFormat createFormatter(final CallContext context) { |
229 throw new UnsupportedOperationException(); | 237 throw new UnsupportedOperationException(); |
230 } | 238 } |
231 }, | 239 }; |
232 | 240 |
233 tkh(SInfoI18NStrings.UNIT_CM, SInfoI18NStrings.CSV_TKH_HEADER, SInfoI18NStrings.CSV_TKH_HEADER_SHORT) { | 241 public static final SInfoResultType tkh = new SInfoResultType(I18NStrings.UNIT_CM, SInfoI18NStrings.CSV_TKH_HEADER, SInfoI18NStrings.CSV_TKH_HEADER_SHORT) { |
234 @Override | 242 @Override |
235 public String exportValue(final CallContext context, final Object value) { | 243 public String exportValue(final CallContext context, final Object value) { |
236 final double doubleValue = asDouble(value); | 244 final double doubleValue = asDouble(value); |
237 return exportDoubleValue(context, doubleValue); | 245 return exportDoubleValue(context, doubleValue); |
238 } | 246 } |
239 | 247 |
240 @Override | 248 @Override |
241 protected NumberFormat createFormatter(final CallContext context) { | 249 protected NumberFormat createFormatter(final CallContext context) { |
242 return Formatter.getTkh(context); | 250 return Formatter.getTkh(context); |
243 } | 251 } |
244 }, | 252 }; |
245 | 253 |
246 tkhup(SInfoI18NStrings.UNIT_CM, null) { | 254 public static final SInfoResultType tkhup = new SInfoResultType(I18NStrings.UNIT_M, null) { |
247 @Override | 255 @Override |
248 public String exportValue(final CallContext context, final Object value) { | 256 public String exportValue(final CallContext context, final Object value) { |
249 final double doubleValue = asDouble(value); | 257 final double doubleValue = asDouble(value); |
250 return exportDoubleValue(context, doubleValue); | 258 return exportDoubleValue(context, doubleValue); |
251 } | 259 } |
252 | 260 |
253 @Override | 261 @Override |
254 protected NumberFormat createFormatter(final CallContext context) { | 262 protected NumberFormat createFormatter(final CallContext context) { |
255 throw new UnsupportedOperationException(); | 263 throw new UnsupportedOperationException(); |
256 } | 264 } |
257 }, | 265 }; |
258 | 266 |
259 tkhdown(SInfoI18NStrings.UNIT_CM, null) { | 267 public static final SInfoResultType tkhdown = new SInfoResultType(I18NStrings.UNIT_M, null) { |
260 @Override | 268 @Override |
261 public String exportValue(final CallContext context, final Object value) { | 269 public String exportValue(final CallContext context, final Object value) { |
262 final double doubleValue = asDouble(value); | 270 final double doubleValue = asDouble(value); |
263 return exportDoubleValue(context, doubleValue); | 271 return exportDoubleValue(context, doubleValue); |
264 } | 272 } |
265 | 273 |
266 @Override | 274 @Override |
267 protected NumberFormat createFormatter(final CallContext context) { | 275 protected NumberFormat createFormatter(final CallContext context) { |
268 throw new UnsupportedOperationException(); | 276 throw new UnsupportedOperationException(); |
269 } | 277 } |
270 }, | 278 }; |
271 | 279 |
272 flowdepthtkh(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTHTKH_HEADER) { | 280 public static final SInfoResultType flowdepthtkh = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTHTKH_HEADER) { |
273 @Override | 281 @Override |
274 public String exportValue(final CallContext context, final Object value) { | 282 public String exportValue(final CallContext context, final Object value) { |
275 final double doubleValue = asDouble(value); | 283 final double doubleValue = asDouble(value); |
276 return exportDoubleValue(context, doubleValue); | 284 return exportDoubleValue(context, doubleValue); |
277 } | 285 } |
278 | 286 |
279 @Override | 287 @Override |
280 protected NumberFormat createFormatter(final CallContext context) { | 288 protected NumberFormat createFormatter(final CallContext context) { |
281 return Formatter.getFlowDepth(context); | 289 return Formatter.getFlowDepth(context); |
282 } | 290 } |
283 }, | 291 }; |
284 | 292 |
285 flowdepthDevelopment(SInfoI18NStrings.UNIT_CM, SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_HEADER, SInfoI18NStrings.PDF_FLOWDEPTH_DEVELOPMENT_HEADER) { | 293 public static final SInfoResultType flowdepthDevelopment = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_HEADER, |
294 SInfoI18NStrings.PDF_FLOWDEPTH_DEVELOPMENT_HEADER) { | |
286 @Override | 295 @Override |
287 public String exportValue(final CallContext context, final Object value) { | 296 public String exportValue(final CallContext context, final Object value) { |
288 final double doubleValue = asDouble(value); | 297 final double doubleValue = asDouble(value); |
289 return exportDoubleValue(context, doubleValue); | 298 return exportDoubleValue(context, doubleValue); |
290 } | 299 } |
291 | 300 |
292 @Override | 301 @Override |
293 protected NumberFormat createFormatter(final CallContext context) { | 302 protected NumberFormat createFormatter(final CallContext context) { |
294 return Formatter.getTkh(context); | 303 return Formatter.getTkh(context); |
295 } | 304 } |
296 }, | 305 }; |
297 flowdepthDevelopmentPerYear(SInfoI18NStrings.UNIT_CM_A, SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_PER_YEAR_HEADER) { | 306 |
307 public static final SInfoResultType depthDevelopmentPerYear = new SInfoResultType(I18NStrings.UNIT_CM_A, | |
308 SInfoI18NStrings.CSV_FLOWDEPTH_DEVELOPMENT_PER_YEAR_HEADER) { | |
298 @Override | 309 @Override |
299 public String exportValue(final CallContext context, final Object value) { | 310 public String exportValue(final CallContext context, final Object value) { |
300 final double doubleValue = asDouble(value); | 311 final double doubleValue = asDouble(value); |
301 return exportDoubleValue(context, doubleValue); | 312 return exportDoubleValue(context, doubleValue); |
302 } | 313 } |
303 | 314 |
304 @Override | 315 @Override |
305 protected NumberFormat createFormatter(final CallContext context) { | 316 protected NumberFormat createFormatter(final CallContext context) { |
306 return Formatter.getFlowDepthDevelopmentPerYear(context); | 317 return Formatter.getFlowDepthDevelopmentPerYear(context); |
307 } | 318 } |
308 }, | 319 }; |
309 waterlevelDifference(SInfoI18NStrings.UNIT_CM, SInfoI18NStrings.CSV_WATERLEVEL_DIFFERENCE_HEADER, "sinfo.export.pdf.header.waterlevel.difference") { | 320 public static final SInfoResultType waterlevelDifference = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_WATERLEVEL_DIFFERENCE_HEADER, |
321 "sinfo.export.pdf.header.waterlevel.difference") { | |
310 @Override | 322 @Override |
311 public String exportValue(final CallContext context, final Object value) { | 323 public String exportValue(final CallContext context, final Object value) { |
312 final double doubleValue = asDouble(value); | 324 final double doubleValue = asDouble(value); |
313 return exportDoubleValue(context, doubleValue); | 325 return exportDoubleValue(context, doubleValue); |
314 } | 326 } |
315 | 327 |
316 @Override | 328 @Override |
317 protected NumberFormat createFormatter(final CallContext context) { | 329 protected NumberFormat createFormatter(final CallContext context) { |
318 return Formatter.getTkh(context); | 330 return Formatter.getTkh(context); |
319 } | 331 } |
320 }, | 332 }; |
321 bedHeightDifference(SInfoI18NStrings.UNIT_CM, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_DIFFERENCE_HEADER, "sinfo.export.pdf.header.mean_bed_height.difference") { | 333 public static final SInfoResultType bedHeightDifference = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_DIFFERENCE_HEADER, |
334 "sinfo.export.pdf.header.mean_bed_height.difference") { | |
322 @Override | 335 @Override |
323 public String exportValue(final CallContext context, final Object value) { | 336 public String exportValue(final CallContext context, final Object value) { |
324 final double doubleValue = asDouble(value); | 337 final double doubleValue = asDouble(value); |
325 return exportDoubleValue(context, doubleValue); | 338 return exportDoubleValue(context, doubleValue); |
326 } | 339 } |
327 | 340 |
328 @Override | 341 @Override |
329 protected NumberFormat createFormatter(final CallContext context) { | 342 protected NumberFormat createFormatter(final CallContext context) { |
330 return Formatter.getTkh(context); | 343 return Formatter.getTkh(context); |
331 } | 344 } |
332 }, | 345 }; |
333 flowdepthCurrent(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_CURRENT_HEADER) { | 346 public static final SInfoResultType flowdepthCurrent = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_CURRENT_HEADER) { |
334 @Override | 347 @Override |
335 public String exportValue(final CallContext context, final Object value) { | 348 public String exportValue(final CallContext context, final Object value) { |
336 final double doubleValue = asDouble(value); | 349 final double doubleValue = asDouble(value); |
337 return exportDoubleValue(context, doubleValue); | 350 return exportDoubleValue(context, doubleValue); |
338 } | 351 } |
339 | 352 |
340 @Override | 353 @Override |
341 protected NumberFormat createFormatter(final CallContext context) { | 354 protected NumberFormat createFormatter(final CallContext context) { |
342 return Formatter.getFlowDepth(context); | 355 return Formatter.getFlowDepth(context); |
343 } | 356 } |
344 }, | 357 }; |
345 flowdepthHistorical(SInfoI18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_HISTORICAL_HEADER) { | 358 public static final SInfoResultType flowdepthHistorical = new SInfoResultType(I18NStrings.UNIT_M, SInfoI18NStrings.CSV_FLOWDEPTH_HISTORICAL_HEADER) { |
346 @Override | 359 @Override |
347 public String exportValue(final CallContext context, final Object value) { | 360 public String exportValue(final CallContext context, final Object value) { |
348 final double doubleValue = asDouble(value); | 361 final double doubleValue = asDouble(value); |
349 return exportDoubleValue(context, doubleValue); | 362 return exportDoubleValue(context, doubleValue); |
350 } | 363 } |
351 | 364 |
352 @Override | 365 @Override |
353 protected NumberFormat createFormatter(final CallContext context) { | 366 protected NumberFormat createFormatter(final CallContext context) { |
354 return Formatter.getFlowDepth(context); | 367 return Formatter.getFlowDepth(context); |
355 } | 368 } |
356 }; | 369 }; |
357 | 370 |
358 /* Cache for formatters because Formatter will always create new formats (which is very expensive) */ | |
359 private final Map<Locale, NumberFormat> formatters = new HashMap<>(); | |
360 | |
361 private final String unit; | |
362 | |
363 private final String csvHeader; | |
364 | |
365 private final String pdfHeader; | |
366 | |
367 private SInfoResultType(final String unit, final String csvAndPdfHeader) { | |
368 this(unit, csvAndPdfHeader, csvAndPdfHeader); | |
369 } | |
370 | |
371 private SInfoResultType(final String unit, final String csvHeader, final String pdfHeader) { | |
372 this.unit = unit; | |
373 this.csvHeader = csvHeader; | |
374 this.pdfHeader = pdfHeader; | |
375 } | |
376 | |
377 public abstract String exportValue(final CallContext context, final Object value); | |
378 | |
379 protected final String exportStringValue(final Object value) { | |
380 | |
381 if (value == null) | |
382 return StringUtils.EMPTY; | |
383 | |
384 if (!(value instanceof String)) | |
385 throw new IllegalStateException(); | |
386 | |
387 return (String) value; | |
388 } | |
389 | |
390 protected final double asDouble(final Object value) { | |
391 if (value == null) | |
392 return Double.NaN; | |
393 | |
394 if (!(value instanceof Number)) | |
395 throw new IllegalStateException(); | |
396 | |
397 final Number number = (Number) value; | |
398 return number.doubleValue(); | |
399 } | |
400 | |
401 protected final String exportDoubleValue(final CallContext context, final double value) { | |
402 if (Double.isNaN(value)) | |
403 return StringUtils.EMPTY; | |
404 | |
405 final NumberFormat formatter = getFormatter(context); | |
406 return formatter.format(value); | |
407 } | |
408 | |
409 private NumberFormat getFormatter(final CallContext context) { | |
410 final CallMeta meta = context.getMeta(); | |
411 final Locale locale = Resources.getLocale(meta); | |
412 | |
413 if (!this.formatters.containsKey(locale)) | |
414 this.formatters.put(locale, createFormatter(context)); | |
415 | |
416 return this.formatters.get(locale); | |
417 } | |
418 | |
419 protected abstract NumberFormat createFormatter(CallContext context); | |
420 | |
421 public final String getCsvHeader() { | |
422 return this.csvHeader; | |
423 } | |
424 | |
425 public final String getCsvHeader(final CallMeta meta) { | |
426 return Resources.getMsg(meta, this.csvHeader, this.csvHeader); | |
427 } | |
428 | |
429 public final String getPdfHeader(final CallMeta meta) { | |
430 return Resources.getMsg(meta, this.pdfHeader, this.pdfHeader); | |
431 } | |
432 | |
433 public final String getUnit() { | |
434 return this.unit; | |
435 } | |
436 } | 371 } |