annotate flys-artifacts/src/main/java/de/intevation/flys/exports/WDifferencesExporter.java @ 4241:49cb65d5932d

Improved the historical discharge calculation. The calculation now creates new HistoricalWQKms (new subclass of WQKms). Those WQKms are used to create new facets from (new) type 'HistoricalDischargeCurveFacet'. The chart generator is improved to support those facets.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 24 Oct 2012 14:34:35 +0200
parents b2ea89a665bc
children
rev   line source
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.exports;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
2
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
3 import java.io.IOException;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
4 import java.io.OutputStream;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
5 import java.text.NumberFormat;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
6 import java.util.ArrayList;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
7 import java.util.List;
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
8 import java.util.Map;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
9 import java.util.HashMap;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
10 import java.util.Date;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
11 import java.text.DateFormat;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
12 import java.util.Locale;
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 import org.w3c.dom.Document;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16 import org.apache.log4j.Logger;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18 import au.com.bytecode.opencsv.CSVWriter;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
20 import net.sf.jasperreports.engine.JasperExportManager;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
21 import net.sf.jasperreports.engine.JasperFillManager;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
22 import net.sf.jasperreports.engine.JasperPrint;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
23 import net.sf.jasperreports.engine.JRException;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
24
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25 import de.intevation.artifacts.CallContext;
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
26 import de.intevation.artifacts.CallMeta;
2185
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
27 import de.intevation.artifacts.common.utils.Config;
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
28
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
29 import de.intevation.flys.artifacts.WINFOArtifact;
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 import de.intevation.flys.artifacts.model.CalculationResult;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 import de.intevation.flys.artifacts.model.WKms;
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
33 import de.intevation.flys.artifacts.model.WKmsJRDataSource;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
34 import de.intevation.flys.artifacts.resources.Resources;
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
36 import de.intevation.flys.utils.FLYSUtils;
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 import de.intevation.flys.utils.Formatter;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 /**
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
40 * (CSV)Exporter for WDifferences.
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
41 */
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
42 public class WDifferencesExporter extends AbstractExporter {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 /** The logger used in this exporter. */
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 private static Logger logger = Logger.getLogger(WDifferencesExporter.class);
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47
1705
2c643a643026 Addressed 'wrong label' issue of wdiff csv-export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
48 public static final String WDIFF_CSV_KM_HEADER =
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 "export.w_differences.csv.header.km";
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50
1705
2c643a643026 Addressed 'wrong label' issue of wdiff csv-export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
51 public static final String WDIFF_CSV_W_HEADER =
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 "export.w_differences.csv.header.w";
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53
1705
2c643a643026 Addressed 'wrong label' issue of wdiff csv-export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
54 public static final String WDIFF_DEFAULT_CSV_KM_HEADER = "Fluss-Km";
2c643a643026 Addressed 'wrong label' issue of wdiff csv-export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
55 public static final String WDIFF_DEFAULT_CSV_W_HEADER = "m";
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
57 public static final String PDF_HEADER_MODE = "export.wdifferences.pdf.mode";
2185
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
58 public static final String JASPER_FILE = "export.wdifferences.pdf.file";
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60 /** The storage that contains all WKms objects for the different facets. */
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 protected List<WKms[]> data;
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
63
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
64 public void init(Document request, OutputStream out, CallContext context) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
65 logger.debug("WDifferencesExporter.init");
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
66
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
67 super.init(request, out, context);
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69 this.data = new ArrayList<WKms[]>();
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
71
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
72
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 /**
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74 * Genereate data in csv format.
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75 */
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76 @Override
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77 public void generate()
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
78 throws IOException
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79 {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
80 logger.debug("WDifferencesExporter.generate");
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
81
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
82 if (facet == null) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
83 throw new IOException("invalid (null) facet for exporter");
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
85 else if (facet.equals(AbstractExporter.FACET_CSV)) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 generateCSV();
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87 }
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
88 else if (facet.equals(AbstractExporter.FACET_PDF)) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
89 generatePDF();
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
90 }
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
91 else {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
92 throw new IOException("invalid facet (" + facet + ") for exporter");
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
93 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
94 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
95
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
96
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
97 /**
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
98 * Adds given data.
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
99 * @param d either a WKms or a CalculationResult to add to data.
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
100 */
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
101 @Override
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
102 protected void addData(Object d) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
103 if (d instanceof CalculationResult) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
104 d = ((CalculationResult)d).getData();
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
105 if (d instanceof WKms []) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
106 data.add((WKms [])d);
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
107 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
108 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
109 else if (d instanceof WKms) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
110 data.add(new WKms[] { (WKms) d });
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
111 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
112 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
113
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
114
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
115 /**
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
116 * Lets writer write all data (including header).
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
117 * @param writer Writer to write data with.
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
118 */
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
119 @Override
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
120 protected void writeCSVData(CSVWriter writer) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
121 logger.info("WDifferencesExporter.writeData");
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
122
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
123 writeCSVHeader(writer);
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
124
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
125 for (WKms[] tmp: data) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
126 for (WKms wkms: tmp) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
127 wKms2CSV(writer, wkms);
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
128 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
129 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
130 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
131
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
132
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
133 /**
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
134 * Lets csvwriter write the header (first line in file).
3269
b2ea89a665bc Fix issues in 'documentation'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2260
diff changeset
135 * @param writer Writer to write header with.
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
136 */
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
137 protected void writeCSVHeader(CSVWriter writer) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
138 logger.info("WDifferencesExporter.writeCSVHeader");
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
139
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
140 writer.writeNext(new String[] {
1705
2c643a643026 Addressed 'wrong label' issue of wdiff csv-export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
141 msg(WDIFF_CSV_KM_HEADER, WDIFF_DEFAULT_CSV_KM_HEADER),
2c643a643026 Addressed 'wrong label' issue of wdiff csv-export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1161
diff changeset
142 msg(WDIFF_CSV_W_HEADER, WDIFF_DEFAULT_CSV_W_HEADER)
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
143 });
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
144 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
145
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
146
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
147 protected void wKms2CSV(CSVWriter writer, WKms wkms) {
2260
22bac691d414 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2185
diff changeset
148 logger.debug("WDifferencesExporter.wKms2CSV");
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
149
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
150 NumberFormat kmf = getKmFormatter();
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
151 NumberFormat wf = getWFormatter();
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
152 int size = wkms.size();
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
153
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
154 for (int i = 0; i < size; i ++) {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
155
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
156 writer.writeNext(new String[] {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
157 kmf.format(wkms.getKm(i)),
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
158 wf.format(wkms.getW(i))
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
159 });
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
160 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
161 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
162
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
163
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
164 /**
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
165 * Returns the number formatter for kilometer values.
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
166 *
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
167 * @return the number formatter for kilometer values.
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
168 */
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
169 protected NumberFormat getKmFormatter() {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
170 return Formatter.getWaterlevelKM(context);
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
171 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
172
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
173
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
174 /**
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
175 * Returns the number formatter for W values.
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
176 *
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
177 * @return the number formatter for W values.
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
178 */
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
179 protected NumberFormat getWFormatter() {
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
180 return Formatter.getWaterlevelW(context);
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
181 }
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1705
diff changeset
182
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1705
diff changeset
183
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 1705
diff changeset
184 @Override
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
185 protected void writePDF(OutputStream out) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
186 WKmsJRDataSource source = createJRData();
2185
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
187
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
188 String jasperFile = Resources.getMsg(
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
189 context.getMeta(),
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
190 JASPER_FILE,
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
191 "/jasper/wdifferences_en.jasper");
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
192 String confPath = Config.getConfigDirectory().toString();
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
193
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
194 Map parameters = new HashMap();
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
195 parameters.put("ReportTitle", "Exported Data");
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
196 try {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
197 JasperPrint print = JasperFillManager.fillReport(
2185
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2180
diff changeset
198 confPath + jasperFile,
2180
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
199 parameters,
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
200 source);
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
201 JasperExportManager.exportReportToPdfStream(print, out);
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
202 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
203 catch(JRException je) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
204 logger.warn("Error generating PDF Report!");
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
205 je.printStackTrace();
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
206 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
207 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
208
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
209 protected WKmsJRDataSource createJRData() {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
210 WKmsJRDataSource source = new WKmsJRDataSource();
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
211
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
212 addMetaData(source);
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
213 for (WKms[] tmp: data) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
214 for (WKms wkms: tmp) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
215 addWKmsData(source, wkms);
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
216 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
217 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
218 return source;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
219 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
220
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
221
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
222 protected void addMetaData(WKmsJRDataSource source) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
223 CallMeta meta = context.getMeta();
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
224
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
225 WINFOArtifact flys = (WINFOArtifact) master;
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
226
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
227 source.addMetaData ("river", FLYSUtils.getRivername(flys));
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
228
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
229 Locale locale = Resources.getLocale(meta);
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
230 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
231
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
232 source.addMetaData("date", df.format(new Date()));
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
233
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
234 String differences = FLYSUtils.getWDifferences(flys, context);
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
235 source.addMetaData("differences", differences);
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
236
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
237 source.addMetaData("calculation", Resources.getMsg(
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
238 locale,
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
239 PDF_HEADER_MODE,
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
240 "W Differences"));
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
241 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
242
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
243 protected void addWKmsData(WKmsJRDataSource source, WKms wkms) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
244 NumberFormat kmf = getKmFormatter();
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
245 NumberFormat wf = getWFormatter();
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
246 int size = wkms.size();
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
247
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
248 for (int i = 0; i < size; i ++) {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
249
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
250 source.addData(new String[] {
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
251 kmf.format(wkms.getKm(i)),
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
252 wf.format(wkms.getW(i))
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
253 });
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
254 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
255 }
65b32220f197 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2176
diff changeset
256
1161
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
257 }
9bdf738abbad Added CSV Exporter for WDifferences.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
258 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org