Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java @ 9485:dd05a5eef210
Bezugspegel Winfo.Wspl + Fix.Awspl fix
author | gernotbelger |
---|---|
date | Mon, 17 Sep 2018 16:00:00 +0200 |
parents | 8d6e56e57c4a |
children | ce13a2f07290 |
comparison
equal
deleted
inserted
replaced
9484:c81cf7e2a770 | 9485:dd05a5eef210 |
---|---|
73 | 73 |
74 public static final String CSV_W_HEADER = "export.waterlevel.csv.header.w"; | 74 public static final String CSV_W_HEADER = "export.waterlevel.csv.header.w"; |
75 | 75 |
76 public static final String CSV_Q_HEADER = "common.export.csv.header.q"; | 76 public static final String CSV_Q_HEADER = "common.export.csv.header.q"; |
77 | 77 |
78 private Boolean IS_Q = null; | |
79 | |
80 /** | 78 /** |
81 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead. | 79 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead. |
82 */ | 80 */ |
83 @Deprecated | 81 @Deprecated |
84 public static final String CSV_Q_DESC_HEADER = "export.waterlevel.csv.header.q.desc"; | 82 public static final String CSV_Q_DESC_HEADER = "export.waterlevel.csv.header.q.desc"; |
309 return "Q=" + nf.format(rawValue); | 307 return "Q=" + nf.format(rawValue); |
310 } | 308 } |
311 } | 309 } |
312 | 310 |
313 protected final boolean isQ() { | 311 protected final boolean isQ() { |
314 if (this.IS_Q == null) { | 312 final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master); |
315 final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master); | 313 return mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE; |
316 final boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE; | |
317 this.IS_Q = isQ; | |
318 } | |
319 return this.IS_Q != null ? this.IS_Q : true; | |
320 } | 314 } |
321 | 315 |
322 @Override | 316 @Override |
323 public void writeCSVData(final CSVWriter writer) { | 317 public void writeCSVData(final CSVWriter writer) { |
324 log.info("WaterlevelExporter.writeData"); | 318 log.info("WaterlevelExporter.writeData"); |
325 final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master); | 319 final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master); |
326 final boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE; | 320 final boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE; |
321 final boolean isQ = isQ(); | |
327 | 322 |
328 final RiverUtils.WQ_INPUT input = RiverUtils.getWQInputMode((D4EArtifact) this.master); | 323 final RiverUtils.WQ_INPUT input = RiverUtils.getWQInputMode((D4EArtifact) this.master); |
329 final boolean isQ = isQ(); | |
330 writeCSVMeta(writer); | 324 writeCSVMeta(writer); |
331 writeCSVHeader(writer, atGauge, isQ); | 325 writeCSVHeader(writer, atGauge, isQ); |
332 | 326 |
333 Double first = Double.NaN; | 327 Double first = Double.NaN; |
334 Double last = Double.NaN; | 328 Double last = Double.NaN; |
519 } | 513 } |
520 } | 514 } |
521 return null; | 515 return null; |
522 } | 516 } |
523 | 517 |
524 protected void writeRow4(final CSVWriter writer, final double wqkm[], final D4EArtifact flys, final Gauge gauge) { | 518 protected void writeRow4(final CSVWriter writer, final double wqkm[], final D4EArtifact flys, final Gauge gauge, final boolean isQ) { |
525 final NumberFormat kmf = getKmFormatter(); | 519 final NumberFormat kmf = getKmFormatter(); |
526 final NumberFormat wf = getWFormatter(); | 520 final NumberFormat wf = getWFormatter(); |
527 final NumberFormat qf = getQFormatter(); | 521 final NumberFormat qf = getQFormatter(); |
528 writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), qf.format(RiverUtils.roundQ(wqkm[1])), | 522 writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), qf.format(RiverUtils.roundQ(wqkm[1])), |
529 RiverUtils.getLocationDescription(flys, wqkm[2]) }); | 523 RiverUtils.getLocationDescription(flys, wqkm[2]) }); |
530 } | 524 } |
531 | 525 |
532 /** Write an csv-row at gauge location. */ | 526 /** Write an csv-row at gauge location. */ |
533 protected void writeRow6(final CSVWriter writer, final double wqkm[], final String wOrQDesc, final D4EArtifact flys, final Gauge gauge) { | 527 protected void writeRow6(final CSVWriter writer, final double wqkm[], final String wOrQDesc, final D4EArtifact flys, final String gaugeName, |
528 final Gauge gauge, final boolean isQ) { | |
534 final NumberFormat kmf = getKmFormatter(); | 529 final NumberFormat kmf = getKmFormatter(); |
535 final NumberFormat wf = getWFormatter(); | 530 final NumberFormat wf = getWFormatter(); |
536 final NumberFormat qf = getQFormatter(); | 531 final NumberFormat qf = getQFormatter(); |
537 | 532 |
538 writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), qf.format(RiverUtils.roundQ(wqkm[1])), wOrQDesc, | 533 writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), qf.format(RiverUtils.roundQ(wqkm[1])), wOrQDesc, |
539 RiverUtils.getLocationDescription(flys, wqkm[2]), gauge.getName() }); | 534 RiverUtils.getLocationDescription(flys, wqkm[2]), gaugeName }); |
540 } | 535 } |
541 | 536 |
542 /** | 537 /** |
543 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead. | 538 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead. |
544 */ | 539 */ |
585 // Skip constant data. | 580 // Skip constant data. |
586 if (wqkms instanceof ConstantWQKms) { | 581 if (wqkms instanceof ConstantWQKms) { |
587 return; | 582 return; |
588 } | 583 } |
589 | 584 |
590 final NumberFormat kmf = getKmFormatter(); | |
591 final NumberFormat wf = getWFormatter(); | |
592 final NumberFormat qf = getQFormatter(); | |
593 | |
594 final int size = wqkms.size(); | 585 final int size = wqkms.size(); |
595 double[] result = new double[3]; | 586 double[] result = new double[3]; |
596 | 587 |
597 final D4EArtifact flys = (D4EArtifact) this.master; | 588 final D4EArtifact flys = (D4EArtifact) this.master; |
598 final RangeAccess rangeAccess = new RangeAccess(flys); | 589 final RangeAccess rangeAccess = new RangeAccess(flys); |
653 lastGauge = found; | 644 lastGauge = found; |
654 } else { | 645 } else { |
655 // TODO issue1114: Take correct gauge | 646 // TODO issue1114: Take correct gauge |
656 gaugeN = km >= a && km <= b ? gaugeName : notinrange; | 647 gaugeN = km >= a && km <= b ? gaugeName : notinrange; |
657 } | 648 } |
658 writeRow6(writer, result, desc, flys, gauge); | 649 writeRow6(writer, result, desc, flys, gaugeN, gauge, isQ); |
659 } | 650 } |
660 } else { // Not at gauge. | 651 } else { // Not at gauge. |
661 for (int i = 0; i < size; ++i) { | 652 for (int i = 0; i < size; ++i) { |
662 result = wqkms.get(i, result); | 653 result = wqkms.get(i, result); |
663 writeRow4(writer, result, flys, gauge); | 654 writeRow4(writer, result, flys, gauge, isQ); |
664 } | 655 } |
665 } | 656 } |
666 | 657 |
667 final long stopTime = System.currentTimeMillis(); | 658 final long stopTime = System.currentTimeMillis(); |
668 | 659 |