annotate artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCommonExporter.java @ 8999:e3b3ce32c825

Work on uinfo
author gernotbelger
date Thu, 12 Apr 2018 19:15:42 +0200
parents
children 460fcc128794
rev   line source
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
2 * Software engineering by
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
5 *
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
9 */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.common;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
11
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
12 import java.io.OutputStream;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
13 import java.util.Collection;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
14 import java.util.HashMap;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
15 import java.util.List;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
16 import java.util.Map;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
17
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
18 import org.apache.log4j.Logger;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
19 import org.dive4elements.artifacts.CallMeta;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
20 import org.dive4elements.artifacts.common.utils.Config;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
21 import org.dive4elements.river.artifacts.model.CalculationResult;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
22 import org.dive4elements.river.artifacts.resources.Resources;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
23 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
24 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
25 import org.dive4elements.river.exports.AbstractExporter;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
26
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
27 import au.com.bytecode.opencsv.CSVWriter;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
28 import net.sf.jasperreports.engine.JRDataSource;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
29 import net.sf.jasperreports.engine.JRElement;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
30 import net.sf.jasperreports.engine.JRException;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
31 import net.sf.jasperreports.engine.JRPrintPage;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
32 import net.sf.jasperreports.engine.JasperCompileManager;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
33 import net.sf.jasperreports.engine.JasperExportManager;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
34 import net.sf.jasperreports.engine.JasperFillManager;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
35 import net.sf.jasperreports.engine.JasperPrint;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
36 import net.sf.jasperreports.engine.JasperReport;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
37 import net.sf.jasperreports.engine.design.JasperDesign;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
38 import net.sf.jasperreports.engine.util.JRProperties;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
39 import net.sf.jasperreports.engine.xml.JRSaxParserFactory;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
40 import net.sf.jasperreports.engine.xml.JRXmlLoader;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
41
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
42 /**
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
43 * @author Gernot Belger
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
44 */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
45 public abstract class AbstractCommonExporter<RESULT extends AbstractCalculationResult, RESULTS extends AbstractCalculationResults<RESULT>> extends AbstractExporter {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
46
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
47 /** The storage that contains the current calculation result. */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
48 protected static enum ExportMode {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
49 pdf, csv
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
50 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
51
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
52 /** The log used in this exporter. */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
53 protected abstract Logger getLog();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
54
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
55 protected RESULTS data = null;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
56
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
57 public RESULTS getData() {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
58 return this.data;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
59 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
60
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
61 @Override
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
62 protected void addData(final Object d) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
63 /* reset */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
64 this.data = null;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
65
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
66 if (d instanceof CalculationResult) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
67
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
68 final Object dat = ((CalculationResult) d).getData();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
69 if (dat != null) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
70 @SuppressWarnings("unchecked")
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
71 final RESULTS result = (RESULTS) dat;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
72 this.data = result;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
73 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
74 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
75 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
76
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
77 /**
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
78 * Formats header with unit and label: msg [unit] (label)
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
79 */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
80 protected String msgUnitLabel(final String key, final String unit, final String label) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
81 final String msg = msg(key);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
82 return String.format("%s [%s] (%s)", msg, unit, label);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
83 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
84
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
85 @Override
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
86 protected void writeCSVData(final CSVWriter writer) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
87 getLog().info("writeCSVData");
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
88
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
89 /* fetch calculation results */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
90 final RESULTS results = this.data;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
91
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
92 /* write as csv */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
93 writeCSVGlobalMetadata(writer, results);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
94 writer.writeNext(new String[] { "" }); // break line HERE to avoid redundance
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
95 final RiverInfo river = results.getRiver();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
96 // FIXME :with comment if not first result
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
97 writeCSVHeader(writer, results, river);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
98 writer.writeNext(new String[] { "" }); // break line HERE to avoid redundance
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
99
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
100 for (final RESULT result : results.getResults()) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
101 writeCSVResult(writer, results, result);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
102 writer.writeNext(new String[] { "" }); // break line HERE after each resultset
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
103 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
104
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
105 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
106
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
107 protected abstract void writeCSVHeader(final CSVWriter writer, final RESULTS results, final RiverInfo river);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
108
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
109 /**
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
110 * Add metadata that is once written to the top of the file.
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
111 */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
112 protected abstract void writeCSVGlobalMetadata(final CSVWriter writer, final RESULTS results);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
113
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
114 protected void writeCSVMetaEntry(final CSVWriter writer, final String message, final Object... messageArgs) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
115
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
116 final CallMeta meta = this.context.getMeta();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
117
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
118 writer.writeNext(new String[] { Resources.getMsg(meta, message, message, messageArgs) });
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
119 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
120
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
121 private void writeCSVResult(final CSVWriter writer, final RESULTS results, final RESULT result) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
122
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
123 writeCSVResultMetadata(writer, results, result);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
124 writer.writeNext(new String[] { "" }); // break line HERE to avoid redundance
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
125
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
126 // final RiverInfo river = results.getRiver();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
127 //
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
128 // writeCSVHeader(writer, results, river);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
129 /* now the value rows */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
130 final Collection<ResultRow> rows = result.getRows(); // war mal SInfoResultRow
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
131 for (final ResultRow row : rows) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
132 writeCSVRow(writer, results, result, row);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
133 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
134 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
135
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
136 /**
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
137 * Add metadata that is written once per result set.
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
138 */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
139 protected abstract void writeCSVResultMetadata(CSVWriter writer, RESULTS results, RESULT result);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
140
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
141 protected void writeCSVRow(final CSVWriter writer, final RESULTS results, final RESULT result, final ResultRow row) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
142 getLog().debug("writeCSVFlowDepthRow");
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
143
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
144 final String[] formattedRow = formatCSVRow(results, row);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
145 writer.writeNext(formattedRow);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
146 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
147
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
148 protected final String[] formatCSVRow(final RESULTS results, final ResultRow row) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
149 return formatRow(results, row, ExportMode.csv);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
150 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
151
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
152 // protected abstract void tweakDesign()
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
153
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
154 @Override
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
155 protected void writePDF(final OutputStream outStream) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
156 getLog().debug("write PDF");
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
157
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
158 final JRDataSource source = createJRData();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
159 final JRDataSource source2 = createJRData();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
160
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
161 final String confPath = Config.getConfigDirectory().toString();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
162
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
163 // FIXME: distinguish between with and without tkh: we need two jasper reports!
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
164
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
165 final Map<String, Object> parameters = new HashMap<>();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
166 parameters.put("ReportTitle", "Exported Data");
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
167
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
168 try {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
169
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
170 // JRProperties.setProperty(JRProperties.COMPILER_XML_VALIDATION, false);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
171 JRProperties.setProperty(JRSaxParserFactory.PROPERTY_REPORT_PARSER_FACTORY, JRReportSaxParserFactory.class.getName());
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
172
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
173 final String jasperPath = confPath + getJasperFile();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
174 final JasperDesign test = JRXmlLoader.load(jasperPath);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
175
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
176 final JRElement element = test.getColumnHeader().getElementByKey("TEST");
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
177 // element.setWidth(200);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
178
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
179 final JasperReport compiled = JasperCompileManager.compileReport(test);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
180
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
181 final JasperPrint print = JasperFillManager.fillReport(compiled, parameters, source);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
182 // JasperExportManager.exportReportToPdfStream(print, outStream);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
183
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
184 final JasperPrint print2 = JasperFillManager.fillReport(compiled, parameters, source2);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
185
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
186 final List<JRPrintPage> pages = print2.getPages();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
187 for (final JRPrintPage page : pages)
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
188 print.addPage(page);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
189
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
190 JasperExportManager.exportReportToPdfStream(print, outStream);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
191 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
192 catch (final JRException je) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
193 getLog().warn("Error generating PDF Report!", je);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
194 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
195 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
196
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
197 protected abstract String getJasperFile();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
198
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
199 private JRDataSource createJRData() {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
200
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
201 /* fetch calculation results */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
202 final RESULTS results = this.data;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
203
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
204 final MetaAndTableJRDataSource source = new MetaAndTableJRDataSource();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
205
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
206 addJRMetaData(source, results);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
207
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
208 for (final RESULT result : results.getResults()) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
209 addJRTableData(source, results, result);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
210 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
211
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
212 return source;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
213 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
214
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
215 protected abstract void addJRMetaData(final MetaAndTableJRDataSource source, final RESULTS results);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
216
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
217 protected void addJRTableData(final MetaAndTableJRDataSource source, final RESULTS results, final RESULT result) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
218
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
219 final Collection<ResultRow> rows = result.getRows();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
220
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
221 for (final ResultRow row : rows) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
222
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
223 final String[] formattedRow = formatPDFRow(results, row);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
224 source.addData(formattedRow);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
225 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
226 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
227
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
228 protected abstract String[] formatRow(RESULTS results, ResultRow row, ExportMode mode);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
229
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
230 protected final String[] formatPDFRow(final RESULTS results, final ResultRow row) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
231 // @Override
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
232 // protected String[] formatPDFRow(final FlowDepthDevelopmentCalculationResults results, final ResultRow row) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
233 return formatRow(results, row, ExportMode.pdf);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
234 // }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
235 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
236
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
237 protected abstract void writeCSVGlobalMetadataDefaults(final CSVWriter writer, final RESULTS results);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
238
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
239 protected abstract void addJRMetaDataDefaults(final MetaAndTableJRDataSource source, final RESULTS results);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
240 }

http://dive4elements.wald.intevation.org