annotate artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCommonListExporter.java @ 9168:d2472018740c

Fixed dateformat with 4-digit year, added query method for collision years of a river
author mschaefer
date Thu, 21 Jun 2018 08:13:37 +0200
parents 23945061daec
children
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.util.Collection;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
13
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
14 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
15
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
16 import au.com.bytecode.opencsv.CSVWriter;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
17
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
18 /**
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
19 * @author Gernot Belger
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
20 */
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9005
diff changeset
21 public abstract class AbstractCommonListExporter<RESULT extends AbstractCalculationResult, RESULTS extends AbstractCalculationListResults<RESULT>> extends AbstractCommonExporter<RESULTS> {
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
22
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
23 /** The storage that contains the current calculation result. */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
24 protected static enum ExportMode {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
25 pdf, csv
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
26 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
27
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
28 @Override
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9005
diff changeset
29 protected void doWriteCSVData(final CSVWriter writer, final RESULTS results) {
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
30
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
31 getLog().info("writeCSVData");
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
32
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
33 /* write as csv */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
34 writeCSVGlobalMetadata(writer, results);
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9005
diff changeset
35
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
36 writer.writeNext(new String[] { "" }); // break line HERE to avoid redundance
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
37 final RiverInfo river = results.getRiver();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
38 // FIXME :with comment if not first result
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
39 writeCSVHeader(writer, results, river);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
40 writer.writeNext(new String[] { "" }); // break line HERE to avoid redundance
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
41
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
42 for (final RESULT result : results.getResults()) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
43 writeCSVResult(writer, results, result);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
44 writer.writeNext(new String[] { "" }); // break line HERE after each resultset
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
45 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
46 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
47
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
48 protected abstract void writeCSVHeader(final CSVWriter writer, final RESULTS results, final RiverInfo river);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
49
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
50 /**
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
51 * Add metadata that is once written to the top of the file.
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
52 */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
53 protected abstract void writeCSVGlobalMetadata(final CSVWriter writer, final RESULTS results);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
54
9005
460fcc128794 jasper multiple
gernotbelger
parents: 8999
diff changeset
55 private final void writeCSVResult(final CSVWriter writer, final RESULTS results, final RESULT result) {
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
56
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
57 writeCSVResultMetadata(writer, results, result);
9005
460fcc128794 jasper multiple
gernotbelger
parents: 8999
diff changeset
58 // wenn resultsmetadata null sind!? keine neue zeile
460fcc128794 jasper multiple
gernotbelger
parents: 8999
diff changeset
59 // writer.writeNext(new String[] { "" }); // break line in den Implementationen,
460fcc128794 jasper multiple
gernotbelger
parents: 8999
diff changeset
60 // weil es sein kann, dass KEINE ResultMetadata geschrieben werden; dann wäre eine Leerzeile überflüssig
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
61
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
62 /* now the value rows */
9005
460fcc128794 jasper multiple
gernotbelger
parents: 8999
diff changeset
63 final Collection<ResultRow> rows = result.getRows();
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9005
diff changeset
64 for (final ResultRow row : rows)
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
65 writeCSVRow(writer, results, result, row);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
66 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
67
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
68 /**
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
69 * Add metadata that is written once per result set.
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
70 */
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
71 protected abstract void writeCSVResultMetadata(CSVWriter writer, RESULTS results, RESULT result);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
72
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
73 protected void writeCSVRow(final CSVWriter writer, final RESULTS results, final RESULT result, final ResultRow row) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
74 getLog().debug("writeCSVFlowDepthRow");
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
75
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
76 final String[] formattedRow = formatCSVRow(results, row);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
77 writer.writeNext(formattedRow);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
78 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
79
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
80 protected final String[] formatCSVRow(final RESULTS results, final ResultRow row) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
81 return formatRow(results, row, ExportMode.csv);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
82 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
83
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9005
diff changeset
84 protected final MetaAndTableJRDataSource createJRData() {
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
85
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
86 /* fetch calculation results */
9150
23945061daec gigantic refactoring: exporter, result, results
gernotbelger
parents: 9005
diff changeset
87 final RESULTS results = getResults();
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
88
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
89 final MetaAndTableJRDataSource source = new MetaAndTableJRDataSource();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
90
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
91 addJRMetaData(source, results);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
92
9005
460fcc128794 jasper multiple
gernotbelger
parents: 8999
diff changeset
93 for (final RESULT result : results.getResults())
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
94 addJRTableData(source, results, result);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
95
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
96 return source;
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
97 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
98
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
99 protected abstract void addJRMetaData(final MetaAndTableJRDataSource source, final RESULTS results);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
100
9005
460fcc128794 jasper multiple
gernotbelger
parents: 8999
diff changeset
101 private void addJRTableData(final MetaAndTableJRDataSource source, final RESULTS results, final RESULT result) {
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
102
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
103 final Collection<ResultRow> rows = result.getRows();
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
104
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
105 for (final ResultRow row : rows) {
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
106
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
107 final String[] formattedRow = formatPDFRow(results, row);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
108 source.addData(formattedRow);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
109 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
110 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
111
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
112 protected abstract String[] formatRow(RESULTS results, ResultRow row, ExportMode mode);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
113
9005
460fcc128794 jasper multiple
gernotbelger
parents: 8999
diff changeset
114 private final String[] formatPDFRow(final RESULTS results, final ResultRow row) {
8999
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
115 return formatRow(results, row, ExportMode.pdf);
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
116 }
e3b3ce32c825 Work on uinfo
gernotbelger
parents:
diff changeset
117 }

http://dive4elements.wald.intevation.org