annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoExporter.java @ 8946:5d5d482da3e9

Implementing SINFO - FlowDepthMinMax calculation
author gernotbelger
date Tue, 13 Mar 2018 18:49:33 +0100
parents 9c02733a1b3c
children a4f1ac81f26d
rev   line source
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
2 * Software engineering by
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
5 *
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
9 */
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.sinfo.common;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
11
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
12 import java.io.OutputStream;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
13 import java.text.DateFormat;
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
14 import java.text.NumberFormat;
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
15 import java.util.Collection;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
16 import java.util.Date;
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
17 import java.util.HashMap;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
18 import java.util.Locale;
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
19 import java.util.Map;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
20
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
21 import org.apache.commons.lang.math.DoubleRange;
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
22 import org.apache.log4j.Logger;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
23 import org.dive4elements.artifacts.CallMeta;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
24 import org.dive4elements.artifacts.common.utils.Config;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
25 import org.dive4elements.river.FLYS;
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
26 import org.dive4elements.river.artifacts.model.CalculationResult;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
27 import org.dive4elements.river.artifacts.resources.Resources;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
28 import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings;
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
29 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo;
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
30 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
31 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
32 import org.dive4elements.river.artifacts.sinfo.util.WstInfo;
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
33 import org.dive4elements.river.exports.AbstractExporter;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
34
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
35 import au.com.bytecode.opencsv.CSVWriter;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
36 import net.sf.jasperreports.engine.JRDataSource;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
37 import net.sf.jasperreports.engine.JRException;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
38 import net.sf.jasperreports.engine.JasperExportManager;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
39 import net.sf.jasperreports.engine.JasperFillManager;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
40 import net.sf.jasperreports.engine.JasperPrint;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
41
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
42 /**
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
43 * @author Gernot Belger
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
44 */
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
45 public abstract class AbstractSInfoExporter<ROW extends AbstractSInfoResultRow, RESULT extends AbstractSInfoCalculationResult<ROW>, RESULTS extends AbstractSInfoCalculationResults<ROW, RESULT>> extends AbstractExporter {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
46
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
47 private static final String CSV_META_HEADER_SOUNDING = "sinfo.export.flow_depth.csv.meta.header.sounding";
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
48
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
49 private static final String CSV_META_HEADER_SOUNDING_YEAR = "sinfo.export.flow_depth.csv.meta.header.sounding.year";
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
50
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
51 private static final String CSV_META_HEADER_SOUNDING_TYPE = "sinfo.export.flow_depth.csv.meta.header.sounding.type";
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
52
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
53 private static final String CSV_META_HEADER_SOUNDING_EVALUATOR = "sinfo.export.flow_depth.csv.meta.header.sounding.evaluator";
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
54
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
55 private static final String CSV_META_HEADER_SOUNDING_PRJ = "sinfo.export.flow_depth.csv.meta.header.sounding.prj";
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
56
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
57 private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel";
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
58
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
59 private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original";
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
60
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
61 /** The storage that contains the current calculation result. */
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
62 private RESULTS data = null;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
63
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
64 protected abstract Logger getLog();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
65
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
66 public RESULTS getData() {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
67 return this.data;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
68 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
69
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
70 @Override
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
71 protected final void addData(final Object d) {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
72 /* reset */
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
73 this.data = null;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
74
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
75 if (d instanceof CalculationResult) {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
76
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
77 final Object dat = ((CalculationResult) d).getData();
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
78 if (dat != null) {
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
79 @SuppressWarnings("unchecked")
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
80 final RESULTS result = (RESULTS) dat;
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
81 this.data = result;
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
82 }
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
83 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
84 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
85
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
86 @Override
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
87 protected final void writeCSVData(final CSVWriter writer) {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
88 getLog().info("writeCSVData");
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
89
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
90 /* fetch calculation results */
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
91 final RESULTS results = this.data;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
92
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
93 final RiverInfo river = results.getRiver();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
94
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
95 /* write as csv */
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
96 writeCSVGlobalMetadata(writer, results);
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
97 writeCSVHeader(writer, results, river);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
98
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
99 for (final RESULT result : results.getResults()) {
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
100 writeCSVResult(writer, results, result);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
101 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
102 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
103
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
104 protected abstract void writeCSVHeader(final CSVWriter writer, final RESULTS results, final RiverInfo river);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
105
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
106 /**
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
107 * Add metadata that is once written to the top of the file.
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
108 */
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
109 protected abstract void writeCSVGlobalMetadata(final CSVWriter writer, final RESULTS results);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
110
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
111 protected final void writeCSVMetaEntry(final CSVWriter writer, final String message, final Object... messageArgs) {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
112
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
113 final CallMeta meta = this.context.getMeta();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
114
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
115 writer.writeNext(new String[] { Resources.getMsg(meta, message, message, messageArgs) });
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
116 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
117
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
118 protected final void writeCSVResult(final CSVWriter writer, final RESULTS results, final RESULT result) {
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
119
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
120 writeCSVResultMetadata(writer, results, result);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
121
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
122 /* nwo the value rows */
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
123 final Collection<ROW> rows = result.getRows();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
124 for (final ROW row : rows) {
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
125 writeCSVRow(writer, results, row);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
126 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
127 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
128
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
129 /**
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
130 * Add metadata that is written once per result set.
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
131 */
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
132 protected abstract void writeCSVResultMetadata(CSVWriter writer, RESULTS results, RESULT result);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
133
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
134 protected final void writeCSVRow(final CSVWriter writer, final RESULTS results, final ROW row) {
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
135 getLog().debug("writeCSVFlowDepthRow");
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
136
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
137 final String[] formattedRow = formatCSVRow(results, row);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
138 writer.writeNext(formattedRow);
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
139 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
140
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
141 protected abstract String[] formatCSVRow(RESULTS results, final ROW row);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
142
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
143 @Override
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
144 protected final void writePDF(final OutputStream outStream) {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
145 getLog().debug("write PDF");
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
146
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
147 final JRDataSource source = createJRData();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
148
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
149 final String confPath = Config.getConfigDirectory().toString();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
150
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
151 // FIXME: distinguish between with and without tkh: we need two jasper reports!
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
152
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
153 final Map<String, Object> parameters = new HashMap<>();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
154 parameters.put("ReportTitle", "Exported Data");
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
155
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
156 try {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
157 final String jasperPath = confPath + getJasperFile();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
158
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
159 final JasperPrint print = JasperFillManager.fillReport(jasperPath, parameters, source);
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
160 JasperExportManager.exportReportToPdfStream(print, outStream);
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
161 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
162 catch (final JRException je) {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
163 getLog().warn("Error generating PDF Report!", je);
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
164 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
165 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
166
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
167 protected abstract String getJasperFile();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
168
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
169 private JRDataSource createJRData() {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
170
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
171 /* fetch calculation results */
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
172 final RESULTS results = this.data;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
173
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
174 final MetaAndTableJRDataSource source = new MetaAndTableJRDataSource();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
175
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
176 addJRMetaData(source, results);
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
177
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
178 for (final RESULT result : results.getResults()) {
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
179 addJRTableData(source, results, result);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
180 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
181
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
182 return source;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
183 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
184
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
185 protected abstract void addJRMetaData(final MetaAndTableJRDataSource source, final RESULTS results);
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
186
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
187 protected final void addJRTableData(final MetaAndTableJRDataSource source, final RESULTS results, final RESULT result) {
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
188
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
189 final Collection<ROW> rows = result.getRows();
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
190
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
191 for (final ROW row : rows) {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
192
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
193 final String[] formattedRow = formatPDFRow(results, row);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
194 source.addData(formattedRow);
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
195 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
196 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
197
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
198 protected abstract String[] formatPDFRow(RESULTS results, final ROW row);
8946
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
199
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
200 protected final void writeCSVGlobalMetadataDefaults(final CSVWriter writer, final AbstractSInfoCalculationResults<?, ?> results) {
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
201
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
202 final String calcModeLabel = results.getCalcModeLabel();
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
203 final RiverInfo river = results.getRiver();
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
204 final DoubleRange calcRange = results.getCalcRange();
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
205
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
206 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_RESULT, msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL), river.getName(), calcModeLabel);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
207
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
208 // "# FLYS-Version: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
209 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_VERSION, msg(SInfoI18NStrings.CSV_META_VERSION_LABEL), FLYS.VERSION);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
210
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
211 // "# Bearbeiter: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
212 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_USER, msg(SInfoI18NStrings.CSV_META_USER_LABEL), results.getUser());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
213
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
214 // "# Datum der Erstellung: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
215 final Locale locale = Resources.getLocale(this.context.getMeta());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
216 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
217 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_CREATION, msg(SInfoI18NStrings.CSV_META_CREATION_LABEL), df.format(new Date()));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
218
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
219 // "# Gewässer: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
220 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RIVER, msg(SInfoI18NStrings.CSV_META_RIVER_LABEL), river.getName());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
221
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
222 // "# Höhensystem des Flusses: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
223 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEIGHT_UNIT_RIVER, river.getWstUnit());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
224
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
225 // "# Ort/Bereich (km): "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
226 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RANGE, msg(SInfoI18NStrings.CSV_META_RANGE_LABEL),
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
227 getKmFormatter().format(calcRange.getMinimumDouble()), getKmFormatter().format(calcRange.getMaximumDouble()));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
228 }
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
229
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
230 protected final void writeCSVSoundingMetadata(final CSVWriter writer, final BedHeightInfo sounding) {
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
231 // "##METADATEN PEILUNG"
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
232 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
233
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
234 // "# Jahr der Peilung: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
235 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_YEAR, Integer.toString(sounding.getYear()));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
236 // "# Aufnahmeart: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
237 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_TYPE, sounding.getType());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
238 // "# Auswerter: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
239 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_EVALUATOR, sounding.getEvaluationBy());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
240 // "# Lagesystem: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
241 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_PRJ, sounding.getLocationSystem());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
242 // "# Höhensystem: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
243 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL, sounding.getCurElevationModelUnit());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
244 // "# ursprüngliches Höhensystem: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
245 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL, sounding.getOldElevationModelUnit());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
246 }
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
247
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
248 protected final void writeCSVWaterlevelMetadata(final CSVWriter writer, final WstInfo wst) {
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
249 // "##METADATEN WASSERSPIEGELLAGE"
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
250 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
251
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
252 // "# Bezeichnung der Wasserspiegellage: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
253 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_NAME, wst.getLabel());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
254
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
255 // "# Bezugspegel: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
256 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_GAUGE, wst.getGauge());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
257
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
258 // "# Jahr/Zeitraum der Wasserspiegellage: "
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
259 final int year = wst.getYear();
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
260 if (year > 0)
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
261 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_YEAR, Integer.toString(year));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
262 }
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
263
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
264 protected final void addJRMetaDataDefaults(final MetaAndTableJRDataSource source, final AbstractSInfoCalculationResults<?, ?> results) {
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
265
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
266 final RiverInfo river = results.getRiver();
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
267 final String wstUnitName = river.getWstUnit();
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
268
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
269 source.addMetaData("header", msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
270 source.addMetaData("calcMode", results.getCalcModeLabel());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
271
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
272 source.addMetaData("version_label", msg(SInfoI18NStrings.CSV_META_VERSION_LABEL));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
273 source.addMetaData("version", FLYS.VERSION);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
274
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
275 source.addMetaData("user_label", msg(SInfoI18NStrings.CSV_META_USER_LABEL));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
276 source.addMetaData("user", results.getUser());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
277
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
278 final Locale locale = Resources.getLocale(this.context.getMeta());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
279 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
280 source.addMetaData("date_label", msg(SInfoI18NStrings.CSV_META_CREATION_LABEL));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
281 source.addMetaData("date", df.format(new Date()));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
282
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
283 source.addMetaData("river_label", msg(SInfoI18NStrings.CSV_META_RIVER_LABEL));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
284 source.addMetaData("river", river.getName());
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
285 source.addMetaData("river_unit", wstUnitName);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
286
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
287 final DoubleRange calcRange = results.getCalcRange();
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
288 final NumberFormat kmFormatter = getKmFormatter();
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
289 final String rangeValue = String.format("%s - %s", kmFormatter.format(calcRange.getMinimumDouble()), kmFormatter.format(calcRange.getMaximumDouble()));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
290 source.addMetaData("range_label", msg(SInfoI18NStrings.CSV_META_RANGE_LABEL));
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
291 source.addMetaData("range", rangeValue);
5d5d482da3e9 Implementing SINFO - FlowDepthMinMax calculation
gernotbelger
parents: 8938
diff changeset
292 }
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents:
diff changeset
293 }

http://dive4elements.wald.intevation.org