Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java @ 3252:62c9bcef0680
Fix issue705 (maĆn value names also in w/q-range mode).
flys-artifacts/trunk@4886 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 06 Jul 2012 12:24:44 +0000 |
parents | f8a1a8af338e |
children | 1a9ab048573a |
comparison
equal
deleted
inserted
replaced
3251:aeeb9192e395 | 3252:62c9bcef0680 |
---|---|
42 import de.intevation.flys.utils.FLYSUtils.WQ_MODE; | 42 import de.intevation.flys.utils.FLYSUtils.WQ_MODE; |
43 import de.intevation.flys.utils.Formatter; | 43 import de.intevation.flys.utils.Formatter; |
44 | 44 |
45 | 45 |
46 /** | 46 /** |
47 * Generates different output formats (wst, csv, pdf) of data that resulted from | |
48 * a waterlevel computation. | |
49 * | |
47 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 50 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
48 */ | 51 */ |
49 public class WaterlevelExporter extends AbstractExporter { | 52 public class WaterlevelExporter extends AbstractExporter { |
50 | 53 |
51 /** The logger used in this exporter.*/ | 54 /** The logger used in this exporter.*/ |
237 | 240 |
238 return localizeWQKms(winfo, wqkms); | 241 return localizeWQKms(winfo, wqkms); |
239 } | 242 } |
240 | 243 |
241 | 244 |
245 /** | |
246 * Get a string like 'W=' or 'Q=' with a number following in localized | |
247 * format. | |
248 */ | |
242 protected String localizeWQKms(WINFOArtifact winfo, WQKms wqkms) { | 249 protected String localizeWQKms(WINFOArtifact winfo, WQKms wqkms) { |
243 WQ_MODE wqmode = FLYSUtils.getWQMode(winfo); | 250 WQ_MODE wqmode = FLYSUtils.getWQMode(winfo); |
244 Double rawValue = wqkms.getRawValue(); | 251 Double rawValue = wqkms.getRawValue(); |
245 | 252 |
246 if (rawValue == null) { | 253 if (rawValue == null) { |
260 | 267 |
261 @Override | 268 @Override |
262 protected void writeCSVData(CSVWriter writer) { | 269 protected void writeCSVData(CSVWriter writer) { |
263 logger.info("WaterlevelExporter.writeData"); | 270 logger.info("WaterlevelExporter.writeData"); |
264 | 271 |
265 WQ_MODE mode = FLYSUtils.getWQMode((FLYSArtifact)master); | 272 WQ_MODE mode = FLYSUtils.getWQMode((FLYSArtifact)master); |
266 boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE; | 273 boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE; |
267 boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE; | 274 boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE; |
268 FLYSUtils.WQ_INPUT input | 275 FLYSUtils.WQ_INPUT input |
269 = FLYSUtils.getWQInputMode((FLYSArtifact)master); | 276 = FLYSUtils.getWQInputMode((FLYSArtifact)master); |
270 boolean isRange = input == FLYSUtils.WQ_INPUT.RANGE; | |
271 | 277 |
272 writeCSVMeta(writer); | 278 writeCSVMeta(writer); |
273 writeCSVHeader(writer, atGauge, isQ); | 279 writeCSVHeader(writer, atGauge, isQ); |
274 | 280 |
275 for (WQKms[] tmp: data) { | 281 for (WQKms[] tmp: data) { |
276 for (WQKms wqkms: tmp) { | 282 for (WQKms wqkms: tmp) { |
277 wQKms2CSV(writer, wqkms, atGauge, isQ, isRange); | 283 wQKms2CSV(writer, wqkms, atGauge, isQ); |
278 } | 284 } |
279 } | 285 } |
280 } | 286 } |
281 | 287 |
282 | 288 |
426 }); | 432 }); |
427 } | 433 } |
428 } | 434 } |
429 | 435 |
430 | 436 |
437 /** | |
438 * Write "rows" of csv data from wqkms with writer. | |
439 */ | |
431 protected void wQKms2CSV( | 440 protected void wQKms2CSV( |
432 CSVWriter writer, | 441 CSVWriter writer, |
433 WQKms wqkms, | 442 WQKms wqkms, |
434 boolean atGauge, | 443 boolean atGauge, |
435 boolean isQ, | 444 boolean isQ |
436 boolean isRange | |
437 ) { | 445 ) { |
438 logger.debug("WaterlevelExporter.wQKms2CSV"); | 446 logger.debug("WaterlevelExporter.wQKms2CSV"); |
439 | 447 |
440 NumberFormat kmf = getKmFormatter(); | 448 NumberFormat kmf = getKmFormatter(); |
441 NumberFormat wf = getWFormatter(); | 449 NumberFormat wf = getWFormatter(); |
464 ? Formatter.getWaterlevelW(context).format(value) : null; | 472 ? Formatter.getWaterlevelW(context).format(value) : null; |
465 } | 473 } |
466 | 474 |
467 long startTime = System.currentTimeMillis(); | 475 long startTime = System.currentTimeMillis(); |
468 | 476 |
469 String colDesc = !isRange | 477 String colDesc = FLYSUtils.getNamedMainValue((WINFOArtifact)flys, |
470 ? FLYSUtils.getNamedMainValue((WINFOArtifact)flys, wqkms.getRawValue()) | 478 wqkms.getRawValue()); |
471 : desc; | |
472 | 479 |
473 for (int i = 0; i < size; i ++) { | 480 for (int i = 0; i < size; i ++) { |
474 result = wqkms.get(i, result); | 481 result = wqkms.get(i, result); |
475 | 482 |
476 if (atGauge) { | 483 if (atGauge) { |
711 | 718 |
712 if (logger.isDebugEnabled()) { | 719 if (logger.isDebugEnabled()) { |
713 logger.debug("Writing PDF data took " + | 720 logger.debug("Writing PDF data took " + |
714 (float)(stopTime-startTime)/1000f + " secs."); | 721 (float)(stopTime-startTime)/1000f + " secs."); |
715 } | 722 } |
716 | |
717 } | 723 } |
718 } | 724 } |
719 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 725 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |