annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java @ 8863:1009cab0f86b

Some work on flow depth exporter
author gernotbelger
date Fri, 19 Jan 2018 18:47:53 +0100
parents 7bbfb24e6eec
children 9f7a285b0ee3
rev   line source
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
2 * Software engineering by Intevation GmbH
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
3 *
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
7 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
8
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
9 package org.dive4elements.river.artifacts.sinfo.flowdepth;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
10
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
11 import java.io.OutputStream;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
12 import java.text.DateFormat;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
13 import java.util.ArrayList;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
14 import java.util.Collection;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
15 import java.util.Date;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
16 import java.util.HashMap;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
17 import java.util.Locale;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
18 import java.util.Map;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
19
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
20 import org.apache.log4j.Logger;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
21 import org.dive4elements.artifacts.CallMeta;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
22 import org.dive4elements.artifacts.common.utils.Config;
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
23 import org.dive4elements.river.FLYS;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
24 import org.dive4elements.river.artifacts.model.CalculationResult;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
25 import org.dive4elements.river.artifacts.resources.Resources;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
26 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
27 import org.dive4elements.river.exports.AbstractExporter;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
28 import org.dive4elements.river.model.River;
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
29 import org.dive4elements.river.model.Unit;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
30
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
31 import au.com.bytecode.opencsv.CSVWriter;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
32 import net.sf.jasperreports.engine.JRDataSource;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
33 import net.sf.jasperreports.engine.JRException;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
34 import net.sf.jasperreports.engine.JasperExportManager;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
35 import net.sf.jasperreports.engine.JasperFillManager;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
36 import net.sf.jasperreports.engine.JasperPrint;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
37
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
38 /**
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
39 * Generates different output formats (csv, pdf) of data that resulted from a flow depths computation.
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
40 *
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
41 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
42 * @author Gernot Belger
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
43 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
44 // REMARK: must be public because its registered in generators.xml
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
45 public class FlowDepthExporter extends AbstractExporter {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
46
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
47 /** The log used in this exporter.*/
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
48 private static Logger log = Logger.getLogger(FlowDepthExporter.class);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
49
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
50 private static final String CSV_KM_HEADER = "sinfo.export.flow_depth.csv.header.km";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
51 private static final String CSV_FLOWDEPTH_HEADER = "sinfo.export.flow_depth.csv.header.flowdepth";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
52 private static final String CSV_FLOWDEPTHTKH_HEADER = "sinfo.export.flow_depth.csv.header.flowdepthTkh";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
53 private static final String CSV_TKH_HEADER = "sinfo.export.flow_depth.csv.header.tkh";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
54 private static final String CSV_WATERLEVEL_HEADER = "sinfo.export.flow_depth.csv.header.waterlevel";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
55 private static final String CSV_DISCHARGE_HEADER = "sinfo.export.flow_depth.csv.header.discharge";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
56 private static final String CSV_LABEL_HEADER = "sinfo.export.flow_depth.csv.header.label";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
57 private static final String CSV_GAUGE_HEADER = "sinfo.export.flow_depth.csv.header.gauge";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
58 private static final String CSV_MEAN_BED_HEIGHT_HEADER = "sinfo.export.flow_depth.csv.header.mean_bed_height";
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
59 private static final String CSV_MEAN_BED_HEIGHT_HEADER_SHORT = "sinfo.export.flow_depth.csv.header.mean_bed_height.short";
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
60 private static final String CSV_SOUNDING_HEADER = "sinfo.export.flow_depth.csv.header.sounding";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
61 private static final String CSV_LOCATION_HEADER = "sinfo.export.flow_depth.csv.header.location";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
62
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
63 private static final String CSV_META_HEADER_RESULT =
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
64 "sinfo.export.flow_depth.csv.meta.header.result";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
65
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
66 private static final String CSV_META_HEADER_RESULT_LABEL =
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
67 "sinfo.export.flow_depth.csv.meta.header.result.label";
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
68
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
69 private static final String CSV_META_VERSION =
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
70 "sinfo.export.flow_depth.csv.meta.version";
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
71
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
72 private static final String CSV_META_VERSION_LABEL =
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
73 "sinfo.export.flow_depth.csv.meta.version.label";
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
74
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
75 private static final String CSV_META_USER =
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
76 "sinfo.export.flow_depth.csv.meta.user";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
77
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
78 private static final String CSV_META_USER_LABEL =
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
79 "sinfo.export.flow_depth.csv.meta.user.label";
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
80
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
81 private static final String CSV_META_CREATION =
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
82 "sinfo.export.flow_depth.csv.meta.creation";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
83
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
84 private static final String CSV_META_CREATION_LABEL =
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
85 "sinfo.export.flow_depth.csv.meta.creation.label";
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
86
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
87 private static final String CSV_META_RIVER =
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
88 "sinfo.export.flow_depth.csv.meta.river";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
89
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
90 private static final String CSV_META_RIVER_LABEL =
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
91 "sinfo.export.flow_depth.csv.meta.river.label";
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
92
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
93 private static final String CSV_META_HEADER_SOUNDING =
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
94 "sinfo.export.flow_depth.csv.meta.header.sounding";
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
95
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
96 private static final String CSV_META_HEADER_WATERLEVEL =
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
97 "sinfo.export.flow_depth.csv.meta.header.waterlevel";
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
98
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
99 private static final String CSV_META_RANGE =
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
100 "sinfo.export.flow_depth.csv.meta.range";
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
101
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
102 private static final String CSV_META_RANGE_LABEL =
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
103 "sinfo.export.flow_depth.csv.meta.range.label";
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
104
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
105 private static final String CSV_META_HEIGHT_UNIT_RIVER = "sinfo.export.flow_depth.csv.meta.height_unit.river";
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
106
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
107 private static final String JASPER_FILE = "/jasper/sinfo.flowdepth.jasper";
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
108
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
109 private static final String UNIT_M = "m";
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
110
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
111 private static final String UNIT_CM = "cm";
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
112
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
113 private static final String UNIT_CUBIC_M = "m³/s";
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
114
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
115 /** The storage that contains the current calculation result.*/
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
116 private FlowDepthCalculationResults data = null;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
117
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
118 /**
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
119 * Formats header with unit
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
120 */
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
121 private String msgUnit(final String key, String unit ) {
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
122
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
123 final String msg = msg(key);
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
124 return String.format("%s [%s]", msg, unit);
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
125 }
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
126
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
127 @Override
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
128 protected void addData(Object d) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
129 /* reset */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
130 data = null;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
131
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
132 if (d instanceof CalculationResult) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
133
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
134 final Object dat = ((CalculationResult)d).getData();
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
135 if( dat != null )
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
136 data = (FlowDepthCalculationResults)dat;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
137 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
138 }
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
139
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
140 @Override
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
141 protected void writeCSVData(CSVWriter writer) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
142 log.info("FlowDepthExporter.writeCSVData");
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
143
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
144 /* fetch calculation results */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
145 final FlowDepthCalculationResults results = data;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
146
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
147 final boolean useTkh = results.isUseTkh();
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
148 final River river = results.getRiver();
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
149
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
150 /* write as csv */
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
151 writeCSVMeta(writer, results);
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
152 writeCSVHeader(writer, river, useTkh);
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
153
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
154 for (final FlowDepthCalculationResult result : results.getResults()) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
155 writeCSVFlowDepthResult(writer, result, useTkh);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
156 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
157 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
158
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
159 private void writeCSVFlowDepthResult(final CSVWriter writer, final FlowDepthCalculationResult result, final boolean useTkh) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
160 final Collection<FlowDepthRow> rows = result.getRows();
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
161 for (final FlowDepthRow flowDepthRow : rows) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
162 writeCSVFlowDepthRow(writer, flowDepthRow, useTkh);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
163 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
164 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
165
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
166 private void writeCSVMeta(final CSVWriter writer, final FlowDepthCalculationResults results) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
167 log.info("FlowDepthExporter.writeCSVMeta");
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
168
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
169 final String calcModeLabel = results.getCalcModeLabel();
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
170 final River river = results.getRiver();
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
171 writeCSVMetaEntry(writer, CSV_META_HEADER_RESULT, msg( CSV_META_HEADER_RESULT_LABEL ), river.getName(), calcModeLabel );
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
172
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
173 // "# FLYS-Version: "
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
174 writeCSVMetaEntry(writer, CSV_META_VERSION, msg( CSV_META_VERSION_LABEL ), FLYS.VERSION );
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
175
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
176 // "# Bearbeiter: "
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
177 writeCSVMetaEntry(writer, CSV_META_USER, msg( CSV_META_USER_LABEL ), results.getUser() );
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
178
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
179 // "# Datum der Erstellung: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
180 final Locale locale = Resources.getLocale(context.getMeta());
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
181 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
182 writeCSVMetaEntry(writer, CSV_META_CREATION, msg( CSV_META_CREATION_LABEL ), df.format(new Date()) );
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
183
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
184 // "# Gewässer: "
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
185 writeCSVMetaEntry(writer, CSV_META_RIVER, msg( CSV_META_RIVER_LABEL ), river.getName() );
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
186
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
187 // "# Höhensystem des Flusses: "
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
188 final Unit wstUnit = river.getWstUnit();
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
189 writeCSVMetaEntry(writer, CSV_META_HEIGHT_UNIT_RIVER, wstUnit.getName());
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
190
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
191 // "# Ort/Bereich (km): "
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
192 writeCSVMetaEntry(writer, CSV_META_RANGE, msg( CSV_META_RANGE_LABEL ), getKmFormatter().format(results.getFrom() ), getKmFormatter().format( results.getTo()));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
193
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
194 // "##METADATEN PEILUNG"
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
195 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING );
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
196
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
197 // FIXME: check: macht nicht viel sinn da es mehrere geben kann.. oder immer wieder wiederholen?
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
198 // "# Jahr der Peilung: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
199 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
200 // "# Aufnahmeart: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
201 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
202 // "# Lagesystem: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
203 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
204 // "# Höhensystem: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
205 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
206 // "# ursprüngliches Höhensystem: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
207 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
208 // "##METADATEN WASSERSPIEGELLAGE"
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
209 writeCSVMetaEntry(writer, CSV_META_HEADER_WATERLEVEL );
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
210 // "# Bezeichnung der Wasserspiegellage: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
211 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
212 // "# Höhensystem der Wasserspiegellage: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
213 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
214 // "# Auswerter: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
215 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
216 // "# Bezugspegel: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
217 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
218 // "# Jahr/Zeitraum der Wasserspiegellage: "
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
219 // FIXME
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
220
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
221 // "# W/Pegel [cm]: " (nur bei Eingabe des Wasserstands am Pegel)
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
222 // TODO: unklar, es wird kein W eingegeben
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
223
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
224 // "# Q (m³/s): " (nur bei Eingabe des Durchflusses)
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
225 // TODO: unklar, es wird kein Q eingegeben
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
226
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
227 writer.writeNext(new String[] { "" });
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
228 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
229
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
230
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
231 private void writeCSVMetaEntry(CSVWriter writer, String message, Object... messageArgs) {
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
232
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
233 CallMeta meta = context.getMeta();
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
234
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
235 writer.writeNext(new String[] {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
236 Resources.getMsg(
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
237 meta,
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
238 message,
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
239 message,
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
240 messageArgs)
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
241 });
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
242 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
243
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
244 /**
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
245 * Write the header, with different headings depending on whether at a
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
246 * gauge or at a location.
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
247 * @param river
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
248 * @param useTkh
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
249 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
250 private void writeCSVHeader(
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
251 final CSVWriter writer,
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
252 final River river,
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
253 final boolean useTkh
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
254 ) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
255 log.info("FlowDepthExporter.writeCSVHeader");
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
256
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
257 final Collection<String> header = new ArrayList<>(11);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
258
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
259 header.add(msg(CSV_KM_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
260 header.add(msgUnit(CSV_FLOWDEPTH_HEADER, UNIT_M));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
261 if( useTkh )
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
262 {
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
263 header.add(msgUnit(CSV_FLOWDEPTHTKH_HEADER, UNIT_M));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
264 header.add(msgUnit(CSV_TKH_HEADER, UNIT_CM));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
265 }
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
266
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
267 final String wstUnitName = river.getWstUnit().getName();
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
268 header.add(msgUnit(CSV_WATERLEVEL_HEADER, wstUnitName));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
269 header.add(msgUnit(CSV_DISCHARGE_HEADER, UNIT_CUBIC_M));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
270 header.add(msg(CSV_LABEL_HEADER));
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
271 header.add(msg(CSV_GAUGE_HEADER));
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
272 header.add(msgUnit(CSV_MEAN_BED_HEIGHT_HEADER, wstUnitName));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
273 header.add(msg(CSV_SOUNDING_HEADER));
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
274 header.add(msg(CSV_LOCATION_HEADER));
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
275
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
276 writer.writeNext(header.toArray(new String[header.size()]));
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
277 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
278
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
279 /**
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
280 * Format a row of a flow depth result into an array of string, both used by csv and pdf
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
281 * @param useTkh
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
282 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
283 private String[] formatFlowDepthRow(
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
284 final FlowDepthRow row,
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
285 boolean useTkh ) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
286
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
287 final Collection<String> lines = new ArrayList<>(11);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
288
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
289 // Fluss-km
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
290 lines.add( getKmFormatter().format( row.getStation() ) );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
291
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
292 // Fließtiefe [m]
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
293 lines.add( getFlowDepthFormatter().format( row.getFlowDepth() ) );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
294
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
295 if( useTkh )
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
296 {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
297 // Fließtiefe mit TKH [m]
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
298 lines.add( getFlowDepthFormatter().format( row.getFlowDepthWithTkh() ) );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
299
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
300 // TKH [cm]
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
301 lines.add( getTkhFormatter().format( row.getTkh() ) );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
302 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
303
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
304 // Wasserstand [NN + m]
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
305 lines.add( getW2Formatter().format( row.getWaterlevel() ) );
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
306
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
307 // Q [m³/s]
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
308 lines.add( getQFormatter().format( row.getDischarge() ) );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
309
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
310 // Bezeichnung
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
311 lines.add( row.getWaterlevelLabel() );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
312
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
313 // Bezugspegel
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
314 lines.add( row.getGauge() );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
315
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
316 // Mittlere Sohlhöhe [NN + m]
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
317 lines.add( getMeanBedHeighFormatter().format( row.getMeanBedHeight( ) ) );
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
318
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
319 // Peilung/Epoche
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
320 lines.add( row.getSoundageLabel() );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
321
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
322 // Lage
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
323 lines.add( row.getLocation() );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
324
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
325 return lines.toArray(new String[lines.size()]);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
326 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
327 /**
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
328 * Write "rows" of csv data from wqkms with writer.
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
329 * @param useTkh
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
330 */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
331 private void writeCSVFlowDepthRow(
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
332 final CSVWriter writer,
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
333 final FlowDepthRow row,
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
334 final boolean useTkh
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
335 ) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
336 log.debug("FlowDepthExporter.writeCSVFlowDepthRow");
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
337
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
338 final String[] formattedRow = formatFlowDepthRow(row, useTkh);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
339 writer.writeNext( formattedRow );
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
340 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
341
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
342 @Override
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
343 protected void writePDF(OutputStream outStream) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
344 log.debug("write PDF");
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
345
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
346 final JRDataSource source = createJRData();
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
347
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
348 final String confPath = Config.getConfigDirectory().toString();
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
349
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
350 // FIXME: distinguish between with and without tkh: we need two jasper reports!
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
351
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
352 final Map<String,Object> parameters = new HashMap<>();
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
353 parameters.put("ReportTitle", "Exported Data");
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
354 try {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
355 final JasperPrint print = JasperFillManager.fillReport(
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
356 confPath + JASPER_FILE,
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
357 parameters,
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
358 source);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
359 JasperExportManager.exportReportToPdfStream(print, outStream);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
360 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
361 catch(JRException je) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
362 log.warn("Error generating PDF Report!", je);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
363 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
364 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
365
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
366 private JRDataSource createJRData() {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
367
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
368 /* fetch calculation results */
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
369 final FlowDepthCalculationResults results = data;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
370
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
371 final MetaAndTableJRDataSource source = new MetaAndTableJRDataSource();
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
372
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
373 addJRMetaData(source, results);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
374
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
375 final boolean useTkh = results.isUseTkh();
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
376
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
377 for (final FlowDepthCalculationResult result : results.getResults()) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
378 addJRTableData(source, result, useTkh);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
379 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
380
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
381 return source;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
382 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
383
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
384 private void addJRMetaData(final MetaAndTableJRDataSource source, FlowDepthCalculationResults results) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
385
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
386 final River river = results.getRiver();
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
387 final String wstUnitName = river.getWstUnit().getName();
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
388
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
389 /* general metadata */
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
390 source.addMetaData("header", msg(CSV_META_HEADER_RESULT_LABEL));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
391 source.addMetaData("calcMode", results.getCalcModeLabel());
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
392
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
393 source.addMetaData("version_label", msg(CSV_META_VERSION_LABEL));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
394 source.addMetaData("version", FLYS.VERSION);
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
395
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
396 source.addMetaData("user_label", msg(CSV_META_USER_LABEL));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
397 source.addMetaData("user", results.getUser());
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
398
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
399 final Locale locale = Resources.getLocale(context.getMeta());
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
400 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
401 source.addMetaData("date_label", msg(CSV_META_CREATION_LABEL));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
402 source.addMetaData("date", df.format(new Date()));
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
403
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
404 source.addMetaData("river_label", msg(CSV_META_RIVER_LABEL) );
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
405 source.addMetaData("river", river.getName());
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
406
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
407 final String rangeValue = String.format( "%s - %s", getKmFormatter().format(results.getFrom() ), getKmFormatter().format( results.getTo()));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
408 source.addMetaData("range_label", msg(CSV_META_RANGE_LABEL));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
409 source.addMetaData("range", rangeValue);
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
410
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
411 /* column headings */
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
412 source.addMetaData("station_header", msg(CSV_KM_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
413 source.addMetaData("flowdepth_header", msg(CSV_FLOWDEPTH_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
414 source.addMetaData("flowdepth_tkh_header", msg(CSV_FLOWDEPTHTKH_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
415 source.addMetaData("tkh_header", msg(CSV_TKH_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
416 source.addMetaData("waterlevel_header", msg(CSV_WATERLEVEL_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
417 source.addMetaData("river_unit", wstUnitName);
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
418 source.addMetaData("discharge_header", msg(CSV_DISCHARGE_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
419 source.addMetaData("waterlevel_name_header", msg(CSV_LABEL_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
420 source.addMetaData("gauge_header", msg(CSV_GAUGE_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
421 source.addMetaData("bedheight_header", msg(CSV_MEAN_BED_HEIGHT_HEADER_SHORT));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
422 source.addMetaData("sounding_name_header", msg(CSV_SOUNDING_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
423 source.addMetaData("location_header", msg(CSV_LOCATION_HEADER));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
424 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
425
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
426 private void addJRTableData(final MetaAndTableJRDataSource source, final FlowDepthCalculationResult result, final boolean useTkh) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
427
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
428 final Collection<FlowDepthRow> rows = result.getRows();
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
429
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
430 for (final FlowDepthRow row : rows) {
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
431
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
432 final String[] formattedRow = formatFlowDepthRow(row, useTkh);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
433 source.addData(formattedRow);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
434 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
435 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
436 }

http://dive4elements.wald.intevation.org