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

http://dive4elements.wald.intevation.org