comparison 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
comparison
equal deleted inserted replaced
9311:7c7f73e5e01e 9312:740d65e4aa14
6 * documentation coming with Dive4Elements River for details. 6 * documentation coming with Dive4Elements River for details.
7 */ 7 */
8 8
9 package org.dive4elements.river.exports; 9 package org.dive4elements.river.exports;
10 10
11 import au.com.bytecode.opencsv.CSVWriter; 11 import java.text.NumberFormat;
12 12
13 import org.apache.log4j.Logger;
13 import org.dive4elements.river.artifacts.model.CalculationResult; 14 import org.dive4elements.river.artifacts.model.CalculationResult;
14 import org.dive4elements.river.artifacts.model.WQCKms; 15 import org.dive4elements.river.artifacts.model.WQCKms;
15 import org.dive4elements.river.artifacts.model.WQKms; 16 import org.dive4elements.river.artifacts.model.WQKms;
16 17
17 import java.text.NumberFormat; 18 import au.com.bytecode.opencsv.CSVWriter;
18
19 import org.apache.log4j.Logger;
20 19
21 /** 20 /**
22 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 21 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
23 */ 22 */
24 public class DischargeLongitudinalSectionExporter extends WaterlevelExporter { 23 public class DischargeLongitudinalSectionExporter extends WaterlevelExporter {
25 24
26 /** The log used in this exporter.*/ 25 /** The log used in this exporter. */
27 private static Logger log = 26 private static Logger log = Logger.getLogger(DischargeLongitudinalSectionExporter.class);
28 Logger.getLogger(DischargeLongitudinalSectionExporter.class);
29 27
28 public static final String CSV_KM_HEADER = "export.discharge.longitudinal.section.csv.header.km";
30 29
31 public static final String CSV_KM_HEADER = 30 public static final String CSV_W_HEADER = "export.discharge.longitudinal.section.csv.header.w";
32 "export.discharge.longitudinal.section.csv.header.km";
33 31
34 public static final String CSV_W_HEADER = 32 public static final String CSV_CW_HEADER = "export.discharge.longitudinal.section.csv.header.cw";
35 "export.discharge.longitudinal.section.csv.header.w";
36 33
37 public static final String CSV_CW_HEADER = 34 public static final String CSV_Q_HEADER = "common.export.csv.header.q";
38 "export.discharge.longitudinal.section.csv.header.cw";
39
40 public static final String CSV_Q_HEADER =
41 "export.discharge.longitudinal.section.csv.header.q";
42 35
43 public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km"; 36 public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km";
44 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]"; 37 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]";
45 public static final String DEFAULT_CSV_CW_HEADER = "W korr."; 38 public static final String DEFAULT_CSV_CW_HEADER = "W korr.";
46 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]"; 39 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]";
47
48 40
49 @Override 41 @Override
50 protected void addData(Object d) { 42 protected void addData(Object d) {
51 if (d instanceof CalculationResult) { 43 if (d instanceof CalculationResult) {
52 d = ((CalculationResult)d).getData(); 44 d = ((CalculationResult) d).getData();
53 if (d instanceof WQKms []) { 45 if (d instanceof WQKms[]) {
54 data.add((WQKms [])d); 46 this.data.add((WQKms[]) d);
55 } 47 }
56 } 48 }
57 } 49 }
58 50
51 @Override
52 protected void writeCSVHeader(final CSVWriter writer, final boolean atGauge, final boolean isQ) {
53 log.info("WaterlevelExporter.writeCSVHeader");
54
55 writer.writeNext(new String[] { msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER), msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER),
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) });
57 }
59 58
60 @Override 59 @Override
61 protected void writeCSVHeader( 60 protected void wQKms2CSV(final CSVWriter writer, final WQKms wqkms, final boolean atGauge, final boolean isQ) {
62 CSVWriter writer,
63 boolean atGauge,
64 boolean isQ
65 ) {
66 log.info("WaterlevelExporter.writeCSVHeader");
67
68 writer.writeNext(new String[] {
69 msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER),
70 msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER),
71 msg(CSV_CW_HEADER, DEFAULT_CSV_CW_HEADER),
72 msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER),
73 msg(CSV_Q_DESC_HEADER, DEFAULT_CSV_Q_DESC_HEADER)
74 });
75 }
76
77
78 protected void wQKms2CSV(
79 CSVWriter writer,
80 WQKms wqkms,
81 boolean atGauge,
82 boolean isQ
83 ) {
84 log.debug("WaterlevelExporter.wQKms2CSV"); 61 log.debug("WaterlevelExporter.wQKms2CSV");
85 62
86 int size = wqkms.size(); 63 final int size = wqkms.size();
87 double[] result = new double[4]; 64 double[] result = new double[4];
88 65
89 NumberFormat kmf = getKmFormatter(); 66 final NumberFormat kmf = getKmFormatter();
90 NumberFormat wf = getWFormatter(); 67 final NumberFormat wf = getWFormatter();
91 NumberFormat qf = getQFormatter(); 68 final NumberFormat qf = getQFormatter();
92 69
93 for (int i = 0; i < size; i ++) { 70 for (int i = 0; i < size; i++) {
94 result = wqkms.get(i, result); 71 result = wqkms.get(i, result);
95 72
96 String name = wqkms.getName(); 73 final String name = wqkms.getName();
97 String wc = ""; 74 String wc = "";
98 if (wqkms instanceof WQCKms) { 75 if (wqkms instanceof WQCKms) {
99 wc = wf.format(result[3]); 76 wc = wf.format(result[3]);
100 } 77 }
101 78
102 writer.writeNext(new String[] { 79 writer.writeNext(new String[] { kmf.format(result[2]), wf.format(result[0]), wc, qf.format(result[1]), name });
103 kmf.format(result[2]),
104 wf.format(result[0]),
105 wc,
106 qf.format(result[1]),
107 name
108 });
109 } 80 }
110 } 81 }
111 82
112
113 @Override 83 @Override
114 protected void addWSTColumn(WstWriter writer, WQKms wqkms) { 84 protected void addWSTColumn(final WstWriter writer, final WQKms wqkms) {
115 String name = wqkms.getName(); 85 final String name = wqkms.getName();
116 86
117 // is it a W or a Q mode? 87 // is it a W or a Q mode?
118 int wIdx = name.indexOf("W"); 88 final int wIdx = name.indexOf("W");
119 int qIdx = name.indexOf("Q"); 89 final int qIdx = name.indexOf("Q");
120 90
121 String wq = null; 91 String wq = null;
122 if (wIdx >= 0) { 92 if (wIdx >= 0) {
123 wq = "W"; 93 wq = "W";
124 } 94 } else if (qIdx >= 0) {
125 else if (qIdx >= 0) {
126 wq = "Q"; 95 wq = "Q";
127 } 96 }
128 97
129 // we just want to display the first W or Q value in the WST 98 // we just want to display the first W or Q value in the WST
130 int start = name.indexOf("("); 99 final int start = name.indexOf("(");
131 int end = name.indexOf(")"); 100 final int end = name.indexOf(")");
132 101
133 String tmp = name.substring(start+1, end); 102 final String tmp = name.substring(start + 1, end);
134 String[] values = tmp.split(";"); 103 final String[] values = tmp.split(";");
135 104
136 String column = wq + "=" + values[0]; 105 final String column = wq + "=" + values[0];
137 106
138 writer.addColumn(column); 107 writer.addColumn(column);
139 } 108 }
140 } 109 }
141 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 110 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org