annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java @ 8894:a66f2a7c4f84

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

http://dive4elements.wald.intevation.org