annotate artifacts/src/main/java/org/dive4elements/river/exports/DischargeLongitudinalSectionExporter.java @ 9312:740d65e4aa14

Q [m³/s] one message
author gernotbelger
date Thu, 26 Jul 2018 15:54:20 +0200
parents e4606eae8ea5
children
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5141
diff changeset
9 package org.dive4elements.river.exports;
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
11 import java.text.NumberFormat;
3254
9a4707ec7800 Add styles for W(t) chart domain markers
Christian Lins <christian.lins@intevation.de>
parents: 2423
diff changeset
12
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
13 import org.apache.log4j.Logger;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5141
diff changeset
14 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5141
diff changeset
15 import org.dive4elements.river.artifacts.model.WQCKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5141
diff changeset
16 import org.dive4elements.river.artifacts.model.WQKms;
3254
9a4707ec7800 Add styles for W(t) chart domain markers
Christian Lins <christian.lins@intevation.de>
parents: 2423
diff changeset
17
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
18 import au.com.bytecode.opencsv.CSVWriter;
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 /**
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 */
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 public class DischargeLongitudinalSectionExporter extends WaterlevelExporter {
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
25 /** The log used in this exporter. */
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
26 private static Logger log = Logger.getLogger(DischargeLongitudinalSectionExporter.class);
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
27
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
28 public static final String CSV_KM_HEADER = "export.discharge.longitudinal.section.csv.header.km";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
29
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
30 public static final String CSV_W_HEADER = "export.discharge.longitudinal.section.csv.header.w";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
31
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
32 public static final String CSV_CW_HEADER = "export.discharge.longitudinal.section.csv.header.cw";
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
33
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
34 public static final String CSV_Q_HEADER = "common.export.csv.header.q";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
35
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
36 public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km";
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
37 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
38 public static final String DEFAULT_CSV_CW_HEADER = "W korr.";
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
39 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
40
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 @Override
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
42 protected void addData(Object d) {
716
733d6db30722 Fix for flys/issue158
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 701
diff changeset
43 if (d instanceof CalculationResult) {
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
44 d = ((CalculationResult) d).getData();
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
45 if (d instanceof WQKms[]) {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
46 this.data.add((WQKms[]) d);
716
733d6db30722 Fix for flys/issue158
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 701
diff changeset
47 }
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 716
diff changeset
48 }
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 }
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 @Override
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
52 protected void writeCSVHeader(final CSVWriter writer, final boolean atGauge, final boolean isQ) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
53 log.info("WaterlevelExporter.writeCSVHeader");
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
54
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
55 writer.writeNext(new String[] { msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER), msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER),
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
56 msg(CSV_CW_HEADER, DEFAULT_CSV_CW_HEADER), msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER), msg(CSV_Q_DESC_HEADER, DEFAULT_CSV_Q_DESC_HEADER) });
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
57 }
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 407
diff changeset
58
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
59 @Override
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
60 protected void wQKms2CSV(final CSVWriter writer, final WQKms wqkms, final boolean atGauge, final boolean isQ) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
61 log.debug("WaterlevelExporter.wQKms2CSV");
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
63 final int size = wqkms.size();
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 double[] result = new double[4];
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
66 final NumberFormat kmf = getKmFormatter();
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
67 final NumberFormat wf = getWFormatter();
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
68 final NumberFormat qf = getQFormatter();
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
69
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
70 for (int i = 0; i < size; i++) {
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 result = wqkms.get(i, result);
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
73 final String name = wqkms.getName();
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 String wc = "";
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 if (wqkms instanceof WQCKms) {
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
76 wc = wf.format(result[3]);
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 }
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
79 writer.writeNext(new String[] { kmf.format(result[2]), wf.format(result[0]), wc, qf.format(result[1]), name });
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 }
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 }
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
82
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
83 @Override
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
84 protected void addWSTColumn(final WstWriter writer, final WQKms wqkms) {
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
85 final String name = wqkms.getName();
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
86
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
87 // is it a W or a Q mode?
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
88 final int wIdx = name.indexOf("W");
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
89 final int qIdx = name.indexOf("Q");
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
90
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
91 String wq = null;
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
92 if (wIdx >= 0) {
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
93 wq = "W";
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
94 } else if (qIdx >= 0) {
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
95 wq = "Q";
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
96 }
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
97
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
98 // we just want to display the first W or Q value in the WST
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
99 final int start = name.indexOf("(");
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
100 final int end = name.indexOf(")");
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
101
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
102 final String tmp = name.substring(start + 1, end);
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
103 final String[] values = tmp.split(";");
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
104
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 8202
diff changeset
105 final String column = wq + "=" + values[0];
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
106
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
107 writer.addColumn(column);
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
108 }
407
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 }
9eb5f0c8fe7f Added a CSV exporter for the discharge longitudinal section computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org