Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java @ 2045:d13be39cfd1d
#242 Added header with meta information into CSV exports.
flys-artifacts/trunk@3531 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 22 Dec 2011 13:22:55 +0000 |
parents | f73036b991e2 |
children | 97a25b54eea3 |
comparison
equal
deleted
inserted
replaced
2044:5d6e82abe859 | 2045:d13be39cfd1d |
---|---|
1 package de.intevation.flys.exports; | 1 package de.intevation.flys.exports; |
2 | 2 |
3 import java.io.IOException; | 3 import java.io.IOException; |
4 import java.io.OutputStream; | 4 import java.io.OutputStream; |
5 import java.text.DateFormat; | |
5 import java.text.NumberFormat; | 6 import java.text.NumberFormat; |
6 import java.util.ArrayList; | 7 import java.util.ArrayList; |
8 import java.util.Date; | |
7 import java.util.List; | 9 import java.util.List; |
10 import java.util.Locale; | |
8 import java.util.regex.Matcher; | 11 import java.util.regex.Matcher; |
9 import java.util.regex.Pattern; | 12 import java.util.regex.Pattern; |
10 | 13 |
11 import org.w3c.dom.Document; | 14 import org.w3c.dom.Document; |
12 | 15 |
13 import org.apache.log4j.Logger; | 16 import org.apache.log4j.Logger; |
14 | 17 |
15 import au.com.bytecode.opencsv.CSVWriter; | 18 import au.com.bytecode.opencsv.CSVWriter; |
16 | 19 |
17 import de.intevation.artifacts.CallContext; | 20 import de.intevation.artifacts.CallContext; |
18 | 21 import de.intevation.artifacts.CallMeta; |
22 | |
23 import de.intevation.flys.artifacts.FLYSArtifact; | |
19 import de.intevation.flys.artifacts.WINFOArtifact; | 24 import de.intevation.flys.artifacts.WINFOArtifact; |
20 import de.intevation.flys.artifacts.model.CalculationResult; | 25 import de.intevation.flys.artifacts.model.CalculationResult; |
21 import de.intevation.flys.artifacts.model.WQCKms; | 26 import de.intevation.flys.artifacts.model.WQCKms; |
22 import de.intevation.flys.artifacts.model.WQKms; | 27 import de.intevation.flys.artifacts.model.WQKms; |
28 import de.intevation.flys.artifacts.resources.Resources; | |
23 | 29 |
24 import de.intevation.flys.utils.FLYSUtils; | 30 import de.intevation.flys.utils.FLYSUtils; |
25 import de.intevation.flys.utils.Formatter; | 31 import de.intevation.flys.utils.Formatter; |
26 | 32 |
27 | 33 |
43 public static final String CSV_W_HEADER = | 49 public static final String CSV_W_HEADER = |
44 "export.waterlevel.csv.header.w"; | 50 "export.waterlevel.csv.header.w"; |
45 | 51 |
46 public static final String CSV_Q_HEADER = | 52 public static final String CSV_Q_HEADER = |
47 "export.waterlevel.csv.header.q"; | 53 "export.waterlevel.csv.header.q"; |
54 | |
55 public static final String CSV_META_RESULT = | |
56 "export.waterlevel.csv.meta.result"; | |
57 | |
58 public static final String CSV_META_CREATION = | |
59 "export.waterlevel.csv.meta.creation"; | |
60 | |
61 public static final String CSV_META_CALCULATIONBASE = | |
62 "export.waterlevel.csv.meta.calculationbase"; | |
63 | |
64 public static final String CSV_META_RIVER = | |
65 "export.waterlevel.csv.meta.river"; | |
66 | |
67 public static final String CSV_META_RANGE = | |
68 "export.waterlevel.csv.meta.range"; | |
69 | |
70 public static final String CSV_META_GAUGE = | |
71 "export.waterlevel.csv.meta.gauge"; | |
72 | |
73 public static final String CSV_META_Q = | |
74 "export.waterlevel.csv.meta.q"; | |
75 | |
76 public static final String CSV_META_W = | |
77 "export.waterlevel.csv.meta.w"; | |
78 | |
48 | 79 |
49 public static final Pattern NUMBERS_PATTERN = | 80 public static final Pattern NUMBERS_PATTERN = |
50 Pattern.compile("\\D*(\\d++.\\d*)\\D*"); | 81 Pattern.compile("\\D*(\\d++.\\d*)\\D*"); |
51 | 82 |
52 public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km"; | 83 public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km"; |
145 | 176 |
146 @Override | 177 @Override |
147 protected void writeCSVData(CSVWriter writer) { | 178 protected void writeCSVData(CSVWriter writer) { |
148 logger.info("WaterlevelExporter.writeData"); | 179 logger.info("WaterlevelExporter.writeData"); |
149 | 180 |
181 writeCSVMeta(writer); | |
150 writeCSVHeader(writer); | 182 writeCSVHeader(writer); |
151 | 183 |
152 for (WQKms[] tmp: data) { | 184 for (WQKms[] tmp: data) { |
153 for (WQKms wqkms: tmp) { | 185 for (WQKms wqkms: tmp) { |
154 wQKms2CSV(writer, wqkms); | 186 wQKms2CSV(writer, wqkms); |
155 } | 187 } |
156 } | 188 } |
189 } | |
190 | |
191 | |
192 protected void writeCSVMeta(CSVWriter writer) { | |
193 logger.info("WaterlevelExporter.writeCSVMeta"); | |
194 | |
195 CallMeta meta = context.getMeta(); | |
196 | |
197 FLYSArtifact flys = (FLYSArtifact) master; | |
198 | |
199 writer.writeNext(new String[] { | |
200 Resources.getMsg( | |
201 meta, | |
202 CSV_META_RESULT, | |
203 CSV_META_RESULT, | |
204 new Object[] { FLYSUtils.getRivername(flys) }) | |
205 }); | |
206 | |
207 Locale locale = Resources.getLocale(meta); | |
208 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); | |
209 | |
210 writer.writeNext(new String[] { | |
211 Resources.getMsg( | |
212 meta, | |
213 CSV_META_CREATION, | |
214 CSV_META_CREATION, | |
215 new Object[] { df.format(new Date()) }) | |
216 }); | |
217 | |
218 writer.writeNext(new String[] { | |
219 Resources.getMsg( | |
220 meta, | |
221 CSV_META_CALCULATIONBASE, | |
222 CSV_META_CALCULATIONBASE, | |
223 new Object[] { "" }) // TODO what is required at this place? | |
224 }); | |
225 | |
226 writer.writeNext(new String[] { | |
227 Resources.getMsg( | |
228 meta, | |
229 CSV_META_RIVER, | |
230 CSV_META_RIVER, | |
231 new Object[] { FLYSUtils.getRivername(flys) }) | |
232 }); | |
233 | |
234 double[] kms = FLYSUtils.getKmRange(flys); | |
235 writer.writeNext(new String[] { | |
236 Resources.getMsg( | |
237 meta, | |
238 CSV_META_RANGE, | |
239 CSV_META_RANGE, | |
240 new Object[] { kms[0], kms[kms.length-1] }) | |
241 }); | |
242 | |
243 writer.writeNext(new String[] { | |
244 Resources.getMsg( | |
245 meta, | |
246 CSV_META_GAUGE, | |
247 CSV_META_GAUGE, | |
248 new Object[] { FLYSUtils.getGaugename(flys) }) | |
249 }); | |
250 | |
251 FLYSUtils.WQ_MODE wq = FLYSUtils.getWQMode(flys); | |
252 if (wq == FLYSUtils.WQ_MODE.QFREE || wq == FLYSUtils.WQ_MODE.QGAUGE) { | |
253 double[] qs = FLYSUtils.getQs(flys); | |
254 | |
255 String lower = ""; | |
256 String upper = ""; | |
257 | |
258 if (qs != null && qs.length > 0) { | |
259 lower = String.valueOf(qs[0]); | |
260 upper = String.valueOf(qs[qs.length-1]); | |
261 } | |
262 else { | |
263 logger.warn("Could not determine Q range!"); | |
264 } | |
265 | |
266 writer.writeNext(new String[] { | |
267 Resources.getMsg( | |
268 meta, | |
269 CSV_META_Q, | |
270 CSV_META_Q, | |
271 new Object[] { lower, upper }) | |
272 }); | |
273 } | |
274 else { | |
275 double[] ws = FLYSUtils.getWs(flys); | |
276 | |
277 String lower = ""; | |
278 String upper = ""; | |
279 | |
280 if (ws != null && ws.length > 0) { | |
281 lower = String.valueOf(ws[0]); | |
282 upper = String.valueOf(ws[ws.length-1]); | |
283 } | |
284 else { | |
285 logger.warn("Could not determine W range!"); | |
286 } | |
287 | |
288 writer.writeNext(new String[] { | |
289 Resources.getMsg( | |
290 meta, | |
291 CSV_META_W, | |
292 CSV_META_W, | |
293 new Object[] { lower, upper }) | |
294 }); | |
295 } | |
296 | |
297 writer.writeNext(new String[] { "" }); | |
157 } | 298 } |
158 | 299 |
159 | 300 |
160 protected void writeCSVHeader(CSVWriter writer) { | 301 protected void writeCSVHeader(CSVWriter writer) { |
161 logger.info("WaterlevelExporter.writeCSVHeader"); | 302 logger.info("WaterlevelExporter.writeCSVHeader"); |