annotate flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java @ 2176:65dac9cf6ff5

Issue 138. PDF output for waterlevel calculation result. flys-artifacts/trunk@3774 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Thu, 26 Jan 2012 15:38:46 +0000
parents a4bdf7d8527e
children 5ff481ab24a1
rev   line source
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.exports;
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
3 import java.io.IOException;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 import java.io.OutputStream;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
5 import java.text.DateFormat;
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
6 import java.text.NumberFormat;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 import java.util.ArrayList;
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
8 import java.util.Map;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
9 import java.util.HashMap;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
10 import java.util.Date;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.util.List;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
12 import java.util.Locale;
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
13 import java.util.regex.Matcher;
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
14 import java.util.regex.Pattern;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import org.w3c.dom.Document;
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import org.apache.log4j.Logger;
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import au.com.bytecode.opencsv.CSVWriter;
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
22 import net.sf.jasperreports.engine.JRDataSource;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
23 import net.sf.jasperreports.engine.JasperExportManager;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
24 import net.sf.jasperreports.engine.JasperFillManager;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
25 import net.sf.jasperreports.engine.JasperPrint;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
26 import net.sf.jasperreports.engine.JRException;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
27
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import de.intevation.artifacts.CallContext;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
29 import de.intevation.artifacts.CallMeta;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
31 import de.intevation.flys.model.Gauge;
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
32
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
33 import de.intevation.flys.artifacts.FLYSArtifact;
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
34 import de.intevation.flys.artifacts.WINFOArtifact;
709
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
35 import de.intevation.flys.artifacts.model.CalculationResult;
749
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
36 import de.intevation.flys.artifacts.model.WQCKms;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 import de.intevation.flys.artifacts.model.WQKms;
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
38 import de.intevation.flys.artifacts.model.WKmsJRDataSource;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
39 import de.intevation.flys.artifacts.resources.Resources;
706
ddd8b37d5cd3 Removed dead code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 701
diff changeset
40
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
41 import de.intevation.flys.utils.FLYSUtils;
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
42 import de.intevation.flys.utils.FLYSUtils.WQ_MODE;
445
a7947972fdeb Added a new class that supports formatters for different types of data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
43 import de.intevation.flys.utils.Formatter;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 /**
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 */
391
5d6988836f01 Added an exporter to export the computed data of a duration curve.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
49 public class WaterlevelExporter extends AbstractExporter {
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 /** The logger used in this exporter.*/
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 private static Logger logger = Logger.getLogger(WaterlevelExporter.class);
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
55 public static final String FACET_WST = "wst";
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
56
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
57
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
58 public static final String CSV_KM_HEADER =
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
59 "export.waterlevel.csv.header.km";
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
60
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
61 public static final String CSV_W_HEADER =
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
62 "export.waterlevel.csv.header.w";
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
63
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
64 public static final String CSV_Q_HEADER =
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
65 "export.waterlevel.csv.header.q";
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
66
2063
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
67 public static final String CSV_Q_DESC_HEADER =
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
68 "export.waterlevel.csv.header.q.desc";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
69
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
70 public static final String CSV_W_DESC_HEADER =
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
71 "export.waterlevel.csv.header.w.desc";
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
72
2063
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
73 public static final String CSV_LOCATION_HEADER =
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
74 "export.waterlevel.csv.header.location";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
75
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
76 public static final String CSV_GAUGE_HEADER =
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
77 "export.waterlevel.csv.header.gauge";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
78
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
79 public static final String CSV_META_RESULT =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
80 "export.waterlevel.csv.meta.result";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
81
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
82 public static final String CSV_META_CREATION =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
83 "export.waterlevel.csv.meta.creation";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
84
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
85 public static final String CSV_META_CALCULATIONBASE =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
86 "export.waterlevel.csv.meta.calculationbase";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
87
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
88 public static final String CSV_META_RIVER =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
89 "export.waterlevel.csv.meta.river";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
90
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
91 public static final String CSV_META_RANGE =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
92 "export.waterlevel.csv.meta.range";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
93
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
94 public static final String CSV_META_GAUGE =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
95 "export.waterlevel.csv.meta.gauge";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
96
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
97 public static final String CSV_META_Q =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
98 "export.waterlevel.csv.meta.q";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
99
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
100 public static final String CSV_META_W =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
101 "export.waterlevel.csv.meta.w";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
102
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
103 public static final String CSV_NOT_IN_GAUGE_RANGE =
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
104 "export.waterlevel.csv.not.in.gauge.range";
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
105
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
106
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
107 public static final Pattern NUMBERS_PATTERN =
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
108 Pattern.compile("\\D*(\\d++.\\d*)\\D*");
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
109
2063
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
110 public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
111 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
112 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
113 public static final String DEFAULT_CSV_Q_DESC_HEADER = "Bezeichnung";
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
114 public static final String DEFAULT_CSV_W_DESC_HEADER = "W/Pegel [cm]";
2063
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
115 public static final String DEFAULT_CSV_LOCATION_HEADER = "Lage";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
116 public static final String DEFAULT_CSV_GAUGE_HEADER = "Bezugspegel";
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
117 public static final String DEFAULT_CSV_NOT_IN_GAUGE_RANGE =
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
118 "außerhalb des gewählten Bezugspegels";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
119
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
120 public static final String PDF_HEADER_MODE = "export.waterlevel.pdf.mode";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
121
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 /** The storage that contains all WQKms objects for the different facets.*/
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123 protected List<WQKms[]> data;
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 public void init(Document request, OutputStream out, CallContext context) {
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 logger.debug("WaterlevelExporter.init");
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128
391
5d6988836f01 Added an exporter to export the computed data of a duration curve.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
129 super.init(request, out, context);
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130
391
5d6988836f01 Added an exporter to export the computed data of a duration curve.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
131 this.data = new ArrayList<WQKms[]>();
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
135 @Override
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
136 public void generate()
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
137 throws IOException
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
138 {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
139 logger.debug("WaterlevelExporter.generate");
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
140
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
141 if (facet != null && facet.equals(AbstractExporter.FACET_CSV)) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
142 generateCSV();
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
143 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
144 else if (facet != null && facet.equals(FACET_WST)) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
145 generateWST();
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
146 }
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
147 else if (facet != null && facet.equals(AbstractExporter.FACET_PDF)) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
148 generatePDF();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
149 }
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
150 else {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
151 throw new IOException("invalid facet for exporter");
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
152 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
153 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
154
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
155
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
156 @Override
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
157 protected void addData(Object d) {
709
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
158 if (d instanceof CalculationResult) {
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
159 d = ((CalculationResult)d).getData();
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
160 if (d instanceof WQKms []) {
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
161 data.add((WQKms [])d);
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
162 }
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
163 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
167 /**
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
168 * This method is used to prepare the column titles of waterlevel exports.
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
169 * Titles in this export include the Q value. If a Q value matches a named
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
170 * main value (as HQ100 or MNQ) this named main value should be used as
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
171 * title. This method resets the name of the <i>wqkms</i> object if such
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
172 * named main value fits to the chosen Q.
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
173 *
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
174 * @param winfo A WINFO Artifact.
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
175 * @param wqkms A WQKms object that should be prepared.
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
176 */
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
177 protected String getColumnTitle(WINFOArtifact winfo, WQKms wqkms) {
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
178 logger.debug("WaterlevelExporter.prepareNamedValue");
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
179
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
180 String name = wqkms.getName();
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
181
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
182 logger.debug("Name of WQKms = '" + name + "'");
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
183
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
184 if (name.indexOf("W=") >= 0) {
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
185 return name;
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
186 }
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
187
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
188 Matcher m = NUMBERS_PATTERN.matcher(name);
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
189
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
190 if (m.matches()) {
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
191 String raw = m.group(1);
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
192
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
193 try {
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
194 double v = Double.valueOf(raw);
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
195
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
196 String nmv = FLYSUtils.getNamedMainValue(winfo, v);
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
197
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
198 if (nmv != null && nmv.length() > 0) {
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
199 nmv = FLYSUtils.stripNamedMainValue(nmv);
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
200 logger.debug("Set named main value '" + nmv + "'");
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
201
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
202 return nmv;
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
203 }
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
204 }
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
205 catch (NumberFormatException nfe) {
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
206 // do nothing here
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
207 }
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
208 }
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
209
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
210 return name;
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
211 }
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
212
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
213
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
214 protected String getCSVRowTitle(WINFOArtifact winfo, WQKms wqkms) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
215 logger.debug("WaterlevelExporter.prepareNamedValue");
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
216
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
217 String name = wqkms.getName();
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
218
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
219 logger.debug("Name of WQKms = '" + name + "'");
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
220
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
221 WQ_MODE wqmode = FLYSUtils.getWQMode(winfo);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
222
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
223 if (wqmode == WQ_MODE.WFREE || wqmode == WQ_MODE.QGAUGE) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
224 return localizeWQKms(winfo, wqkms);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
225 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
226
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
227 Double v = wqkms.getRawValue();
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
228
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
229 String nmv = FLYSUtils.getNamedMainValue(winfo, v);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
230
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
231 if (nmv != null && nmv.length() > 0) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
232 nmv = FLYSUtils.stripNamedMainValue(nmv);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
233 logger.debug("Set named main value '" + nmv + "'");
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
234
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
235 return nmv;
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
236 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
237
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
238 return localizeWQKms(winfo, wqkms);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
239 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
240
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
241
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
242 protected String localizeWQKms(WINFOArtifact winfo, WQKms wqkms) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
243 WQ_MODE wqmode = FLYSUtils.getWQMode(winfo);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
244 Double rawValue = wqkms.getRawValue();
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
245
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
246 if (rawValue == null) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
247 return wqkms.getName();
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
248 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
249
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
250 NumberFormat nf = Formatter.getRawFormatter(context);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
251
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
252 if (wqmode == WQ_MODE.WFREE || wqmode == WQ_MODE.WGAUGE) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
253 return "W=" + nf.format(rawValue);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
254 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
255 else {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
256 return "Q=" + nf.format(rawValue);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
257 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
258 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
259
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
260
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
261 @Override
391
5d6988836f01 Added an exporter to export the computed data of a duration curve.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
262 protected void writeCSVData(CSVWriter writer) {
5d6988836f01 Added an exporter to export the computed data of a duration curve.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
263 logger.info("WaterlevelExporter.writeData");
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
264
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
265 WQ_MODE mode = FLYSUtils.getWQMode((FLYSArtifact)master);
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
266 boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE;
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
267 boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE;
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
268
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
269 writeCSVMeta(writer);
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
270 writeCSVHeader(writer, atGauge, isQ);
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
271
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
272 for (WQKms[] tmp: data) {
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
273 for (WQKms wqkms: tmp) {
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
274 wQKms2CSV(writer, wqkms, atGauge, isQ);
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
275 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
276 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
277 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
278
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
279
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
280 protected void writeCSVMeta(CSVWriter writer) {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
281 logger.info("WaterlevelExporter.writeCSVMeta");
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
282
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
283 CallMeta meta = context.getMeta();
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
284
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
285 FLYSArtifact flys = (FLYSArtifact) master;
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
286
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
287 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
288 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
289 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
290 CSV_META_RESULT,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
291 CSV_META_RESULT,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
292 new Object[] { FLYSUtils.getRivername(flys) })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
293 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
294
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
295 Locale locale = Resources.getLocale(meta);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
296 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
297
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
298 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
299 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
300 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
301 CSV_META_CREATION,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
302 CSV_META_CREATION,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
303 new Object[] { df.format(new Date()) })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
304 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
305
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
306 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
307 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
308 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
309 CSV_META_CALCULATIONBASE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
310 CSV_META_CALCULATIONBASE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
311 new Object[] { "" }) // TODO what is required at this place?
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
312 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
313
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
314 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
315 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
316 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
317 CSV_META_RIVER,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
318 CSV_META_RIVER,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
319 new Object[] { FLYSUtils.getRivername(flys) })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
320 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
321
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
322 double[] kms = FLYSUtils.getKmRange(flys);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
323 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
324 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
325 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
326 CSV_META_RANGE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
327 CSV_META_RANGE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
328 new Object[] { kms[0], kms[kms.length-1] })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
329 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
330
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
331 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
332 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
333 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
334 CSV_META_GAUGE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
335 CSV_META_GAUGE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
336 new Object[] { FLYSUtils.getGaugename(flys) })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
337 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
338
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
339 FLYSUtils.WQ_MODE wq = FLYSUtils.getWQMode(flys);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
340 if (wq == FLYSUtils.WQ_MODE.QFREE || wq == FLYSUtils.WQ_MODE.QGAUGE) {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
341 double[] qs = FLYSUtils.getQs(flys);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
342
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
343 String lower = "";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
344 String upper = "";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
345
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
346 if (qs != null && qs.length > 0) {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
347 lower = String.valueOf(qs[0]);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
348 upper = String.valueOf(qs[qs.length-1]);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
349 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
350 else {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
351 logger.warn("Could not determine Q range!");
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
352 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
353
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
354 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
355 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
356 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
357 CSV_META_Q,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
358 CSV_META_Q,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
359 new Object[] { lower, upper })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
360 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
361 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
362 else {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
363 double[] ws = FLYSUtils.getWs(flys);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
364
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
365 String lower = "";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
366 String upper = "";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
367
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
368 if (ws != null && ws.length > 0) {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
369 lower = String.valueOf(ws[0]);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
370 upper = String.valueOf(ws[ws.length-1]);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
371 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
372 else {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
373 logger.warn("Could not determine W range!");
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
374 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
375
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
376 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
377 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
378 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
379 CSV_META_W,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
380 CSV_META_W,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
381 new Object[] { lower, upper })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
382 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
383 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
384
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
385 writer.writeNext(new String[] { "" });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
386 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
387
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
388
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
389 protected void writeCSVHeader(
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
390 CSVWriter writer,
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
391 boolean atGauge,
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
392 boolean isQ
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
393 ) {
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
394 logger.info("WaterlevelExporter.writeCSVHeader");
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
395
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
396 if (atGauge) {
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
397 writer.writeNext(new String[] {
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
398 msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
399 msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
400 msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER),
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
401 (isQ
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
402 ? msg(CSV_Q_DESC_HEADER, DEFAULT_CSV_Q_DESC_HEADER)
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
403 : msg(CSV_W_DESC_HEADER, DEFAULT_CSV_W_DESC_HEADER)),
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
404 msg(CSV_LOCATION_HEADER, DEFAULT_CSV_LOCATION_HEADER),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
405 msg(CSV_GAUGE_HEADER, DEFAULT_CSV_GAUGE_HEADER)
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
406 });
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
407 }
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
408 else {
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
409 writer.writeNext(new String[] {
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
410 msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
411 msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
412 msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
413 msg(CSV_LOCATION_HEADER, DEFAULT_CSV_LOCATION_HEADER)
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
414 });
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
415 }
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
416 }
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
417
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
418
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
419 protected void wQKms2CSV(
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
420 CSVWriter writer,
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
421 WQKms wqkms,
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
422 boolean atGauge,
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
423 boolean isQ
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
424 ) {
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
425 logger.debug("WaterlevelExporter.wQKms2CSV");
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
426
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
427 NumberFormat kmf = getKmFormatter();
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
428 NumberFormat wf = getWFormatter();
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
429 NumberFormat qf = getQFormatter();
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
430
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
431 int size = wqkms.size();
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
432 double[] result = new double[3];
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
433
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
434 FLYSArtifact flys = (FLYSArtifact) master;
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
435 Gauge gauge = FLYSUtils.getGauge(flys);
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
436 String gaugeName = gauge.getName();
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
437 String desc = "";
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
438 String notinrange = msg(
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
439 CSV_NOT_IN_GAUGE_RANGE,
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
440 DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
441
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
442 double a = gauge.getRange().getA().doubleValue();
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
443 double b = gauge.getRange().getB().doubleValue();
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
444
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
445 if (flys instanceof WINFOArtifact && isQ) {
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
446 desc = getCSVRowTitle((WINFOArtifact)flys, wqkms);
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
447 }
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
448 else if (!isQ) {
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
449 Double value = FLYSUtils.getValueFromWQ(wqkms);
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
450 desc = value != null
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
451 ? Formatter.getWaterlevelW(context).format(value) : null;
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
452 }
2063
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
453
2144
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
454 long startTime = System.currentTimeMillis();
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
455
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
456 for (int i = 0; i < size; i ++) {
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
457 result = wqkms.get(i, result);
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
458
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
459 if (atGauge) {
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
460 writer.writeNext(new String[] {
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
461 kmf.format(result[2]),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
462 wf.format(result[0]),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
463 qf.format(result[1]),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
464 desc,
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
465 FLYSUtils.getLocationDescription(flys, result[2]),
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
466 result[2] >= a && result[2] <= b
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
467 ? gaugeName
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
468 : notinrange
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
469 });
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
470 }
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
471 else {
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
472 writer.writeNext(new String[] {
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
473 kmf.format(result[2]),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
474 wf.format(result[0]),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
475 qf.format(result[1]),
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
476 FLYSUtils.getLocationDescription(flys, result[2])
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
477 });
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
478 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
479 }
2144
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
480
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
481 long stopTime = System.currentTimeMillis();
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
482
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
483 if (logger.isDebugEnabled()) {
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
484 logger.debug("Writing CSV took " +
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
485 (float)(stopTime-startTime)/1000f + " secs.");
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
486 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
487 }
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
488
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
489
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
490 /**
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
491 * Generates the output in WST format.
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
492 */
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
493 protected void generateWST()
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
494 throws IOException
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
495 {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
496 logger.info("WaterlevelExporter.generateWST");
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
497
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
498 int cols = data.get(0).length;
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
499 WstWriter writer = new WstWriter(cols);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
500
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
501 writeWSTData(writer);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
502
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
503 writer.write(out);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
504 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
505
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
506
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
507 protected void writeWSTData(WstWriter writer) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
508 logger.debug("WaterlevelExporter.writeWSTData");
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
509
749
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
510 double[] result = new double[4];
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
511
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
512 for (WQKms[] tmp: data) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
513 for (WQKms wqkms: tmp) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
514 int size = wqkms != null ? wqkms.size() : 0;
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
515
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
516 addWSTColumn(writer, wqkms);
447
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 446
diff changeset
517
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
518 for (int i = 0; i < size; i++) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
519 result = wqkms.get(i, result);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
520
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
521 writer.add(result);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
522 }
749
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
523
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
524 if (wqkms instanceof WQCKms) {
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
525 addWSTColumn(writer, wqkms);
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
526
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
527 for (int c = 0; c < size; c++) {
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
528 result = wqkms.get(c, result);
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
529
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
530 writer.addCorrected(result);
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
531 }
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
532 }
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
533 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
534 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
535 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
536
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
537
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
538 /**
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
539 * This method is used to register a new column at <i>writer</i>. The name /
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
540 * title of the column depends on the Q or W value of <i>wqkms</i>. If a Q
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
541 * was selected and the Q fits to a named main value, the title is set to
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
542 * the named main value. Otherwise, the name returned by
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
543 * <i>WQKms.getName()</i> is set.
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
544 *
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
545 * @param writer The WstWriter.
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
546 * @param wqkms The new WST column.
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
547 */
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
548 protected void addWSTColumn(WstWriter writer, WQKms wqkms) {
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
549 if (master instanceof WINFOArtifact) {
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
550 writer.addColumn(getColumnTitle((WINFOArtifact) master, wqkms));
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
551 }
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
552 else {
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
553 writer.addColumn(wqkms.getName());
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
554 }
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
555 }
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
556
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
557
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
558 /**
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
559 * Returns the number formatter for kilometer values.
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
560 *
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
561 * @return the number formatter for kilometer values.
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
562 */
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
563 protected NumberFormat getKmFormatter() {
445
a7947972fdeb Added a new class that supports formatters for different types of data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
564 return Formatter.getWaterlevelKM(context);
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
565 }
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
566
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
567
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
568 /**
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
569 * Returns the number formatter for W values.
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
570 *
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
571 * @return the number formatter for W values.
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
572 */
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
573 protected NumberFormat getWFormatter() {
445
a7947972fdeb Added a new class that supports formatters for different types of data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
574 return Formatter.getWaterlevelW(context);
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
575 }
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
576
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
577
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
578 /**
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
579 * Returns the number formatter for Q values.
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
580 *
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
581 * @return the number formatter for Q values.
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
582 */
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
583 protected NumberFormat getQFormatter() {
445
a7947972fdeb Added a new class that supports formatters for different types of data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 418
diff changeset
584 return Formatter.getWaterlevelQ(context);
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
585 }
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
586
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
587
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
588 /**
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
589 *
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
590 */
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
591 @Override
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
592 protected void writePDF(OutputStream out) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
593 logger.debug("write PDF");
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
594 WKmsJRDataSource source = createJRData();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
595 Map parameters = new HashMap();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
596 parameters.put("ReportTitle", "Exported Data");
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
597 try {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
598 JasperPrint print = JasperFillManager.fillReport(
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
599 "conf/jasper/waterlevel.jasper",
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
600 parameters,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
601 source);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
602 JasperExportManager.exportReportToPdfStream(print, out);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
603 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
604 catch(JRException je) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
605 logger.warn("Error generating PDF Report!");
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
606 je.printStackTrace();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
607 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
608 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
609
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
610 protected WKmsJRDataSource createJRData() {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
611 WKmsJRDataSource source = new WKmsJRDataSource();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
612
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
613 WQ_MODE mode = FLYSUtils.getWQMode((FLYSArtifact)master);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
614 boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
615 boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
616
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
617 addMetaData(source);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
618 for (WQKms[] tmp: data) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
619 for (WQKms wqkms: tmp) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
620 addWKmsData(wqkms, atGauge, isQ, source);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
621 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
622 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
623 return source;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
624 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
625
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
626 protected void addMetaData(WKmsJRDataSource source) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
627 CallMeta meta = context.getMeta();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
628
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
629 FLYSArtifact flys = (FLYSArtifact) master;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
630
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
631 source.addMetaData ("river", FLYSUtils.getRivername(flys));
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
632
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
633 Locale locale = Resources.getLocale(meta);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
634 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
635
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
636 source.addMetaData("date", df.format(new Date()));
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
637
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
638 double[] kms = FLYSUtils.getKmRange(flys);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
639 source.addMetaData("range", kms[0] + " - " + kms[kms.length-1]);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
640
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
641 source.addMetaData("gauge", FLYSUtils.getGaugename(flys));
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
642
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
643 source.addMetaData("calculation", Resources.getMsg(
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
644 locale,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
645 PDF_HEADER_MODE,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
646 "Waterlevel"));
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
647 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
648
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
649 protected void addWKmsData(
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
650 WQKms wqkms,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
651 boolean atGauge,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
652 boolean isQ,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
653 WKmsJRDataSource source)
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
654 {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
655 logger.debug("WaterlevelExporter.addWKmsData");
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
656
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
657 NumberFormat kmf = getKmFormatter();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
658 NumberFormat wf = getWFormatter();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
659 NumberFormat qf = getQFormatter();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
660
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
661 int size = wqkms.size();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
662 double[] result = new double[3];
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
663
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
664 FLYSArtifact flys = (FLYSArtifact) master;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
665 Gauge gauge = FLYSUtils.getGauge(flys);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
666 String gaugeName = gauge.getName();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
667 String desc = "";
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
668 String notinrange = msg(
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
669 CSV_NOT_IN_GAUGE_RANGE,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
670 DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
671
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
672 double a = gauge.getRange().getA().doubleValue();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
673 double b = gauge.getRange().getB().doubleValue();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
674
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
675 if (flys instanceof WINFOArtifact && isQ) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
676 desc = getCSVRowTitle((WINFOArtifact)flys, wqkms);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
677 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
678 else if (!isQ) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
679 Double value = FLYSUtils.getValueFromWQ(wqkms);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
680 desc = value != null
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
681 ? Formatter.getWaterlevelW(context).format(value) : null;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
682 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
683
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
684 long startTime = System.currentTimeMillis();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
685
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
686 for (int i = 0; i < size; i ++) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
687 result = wqkms.get(i, result);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
688
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
689 if (atGauge) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
690 source.addData(new String[] {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
691 kmf.format(result[2]),
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
692 wf.format(result[0]),
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
693 qf.format(result[1]),
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
694 desc,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
695 FLYSUtils.getLocationDescription(flys, result[2]),
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
696 result[2] >= a && result[2] <= b
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
697 ? gaugeName
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
698 : notinrange
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
699 });
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
700 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
701 else {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
702 source.addData(new String[] {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
703 kmf.format(result[2]),
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
704 wf.format(result[0]),
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
705 qf.format(result[1]),
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
706 FLYSUtils.getLocationDescription(flys, result[2])
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
707 });
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
708 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
709 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
710
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
711 long stopTime = System.currentTimeMillis();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
712
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
713 if (logger.isDebugEnabled()) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
714 logger.debug("Writing PDF data took " +
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
715 (float)(stopTime-startTime)/1000f + " secs.");
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
716 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
717
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
718 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
719 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
720 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org