Mercurial > dive4elements > river
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 : |