annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java @ 8938:9c02733a1b3c

Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
author gernotbelger
date Tue, 06 Mar 2018 17:09:39 +0100
parents 791714b92b5c
children 5d5d482da3e9
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.text.DateFormat;
8894
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
12 import java.text.NumberFormat;
8854
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.Locale;
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
17
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
18 import org.apache.commons.lang.StringUtils;
8894
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
19 import org.apache.commons.lang.math.DoubleRange;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
20 import org.apache.log4j.Logger;
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
21 import org.dive4elements.river.FLYS;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
22 import org.dive4elements.river.artifacts.resources.Resources;
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
23 import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings;
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
24 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter;
8894
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
25 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
26 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource;
8894
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
27 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
28 import org.dive4elements.river.artifacts.sinfo.util.WstInfo;
8882
f762fadc5313 Further work on SINFO-FlowDepth
gernotbelger
parents: 8879
diff changeset
29 import org.dive4elements.river.utils.RiverUtils;
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
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
33 /**
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
34 * 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
35 *
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
36 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
37 * @author Gernot Belger
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 // REMARK: must be public because its registered in generators.xml
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
40 public class FlowDepthExporter extends AbstractSInfoExporter<FlowDepthRow, FlowDepthCalculationResult, FlowDepthCalculationResults> {
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
41
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
42 /** The log used in this exporter. */
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
43 private static Logger log = Logger.getLogger(FlowDepthExporter.class);
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
44
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
45 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
46 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
47 private static final String CSV_TKH_HEADER = "sinfo.export.flow_depth.csv.header.tkh";
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
48
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
49 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
50 private static final String CSV_SOUNDING_HEADER = "sinfo.export.flow_depth.csv.header.sounding";
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
51
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
52 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
53
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
54 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
55
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
56 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
57
8882
f762fadc5313 Further work on SINFO-FlowDepth
gernotbelger
parents: 8879
diff changeset
58 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
59
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
60 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
61
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
62 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
63
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
64 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
65
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
66 private static final String JASPER_FILE = "/jasper/sinfo.flowdepth.jasper";
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
67
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
68 @Override
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
69 protected Logger getLog() {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
70 return log;
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
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
73 @Override
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
74 protected void writeCSVResultMetadata(final CSVWriter writer, final FlowDepthCalculationResults results, final FlowDepthCalculationResult result) {
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
75
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
76 /* first some specific metadata */
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
77 final BedHeightInfo sounding = result.getSounding();
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
78 final WstInfo wst = result.getWst();
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
79
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
80 // "##METADATEN PEILUNG"
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
81 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING);
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
82
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
83 // "# Jahr der Peilung: "
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
84 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_YEAR, Integer.toString(sounding.getYear()));
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
85 // "# Aufnahmeart: "
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
86 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_TYPE, sounding.getType());
8882
f762fadc5313 Further work on SINFO-FlowDepth
gernotbelger
parents: 8879
diff changeset
87 // "# Auswerter: "
f762fadc5313 Further work on SINFO-FlowDepth
gernotbelger
parents: 8879
diff changeset
88 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_EVALUATOR, sounding.getEvaluationBy());
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
89 // "# Lagesystem: "
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
90 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_PRJ, sounding.getLocationSystem());
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
91 // "# Höhensystem: "
8879
64ca63f79f6f Further work on SINFO-FlowDepth
gernotbelger
parents: 8877
diff changeset
92 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL, sounding.getCurElevationModelUnit());
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
93 // "# ursprüngliches Höhensystem: "
8884
7a8c12706834 Work on SINFO-FlowDepth
gernotbelger
parents: 8882
diff changeset
94 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL, sounding.getOldElevationModelUnit());
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
95
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
96 // "##METADATEN WASSERSPIEGELLAGE"
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
97 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL);
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
98 // "# Bezeichnung der Wasserspiegellage: "
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
99 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_NAME, wst.getLabel());
8879
64ca63f79f6f Further work on SINFO-FlowDepth
gernotbelger
parents: 8877
diff changeset
100 // "# Bezugspegel: "
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
101 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_GAUGE, wst.getGauge());
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
102 // "# Jahr/Zeitraum der Wasserspiegellage: "
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
103 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_YEAR, Integer.toString(wst.getYear()));
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
104 }
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
105
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
106 @Override
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
107 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthCalculationResults results) {
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
108 log.info("FlowDepthExporter.writeCSVMeta");
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
109
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
110 final String calcModeLabel = results.getCalcModeLabel();
8894
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
111 final RiverInfo river = results.getRiver();
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
112 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_RESULT, msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL), river.getName(), calcModeLabel);
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
113
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
114 // "# FLYS-Version: "
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
115 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_VERSION, msg(SInfoI18NStrings.CSV_META_VERSION_LABEL), FLYS.VERSION);
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
116
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
117 // "# Bearbeiter: "
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
118 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_USER, msg(SInfoI18NStrings.CSV_META_USER_LABEL), results.getUser());
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
119
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
120 // "# Datum der Erstellung: "
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
121 final Locale locale = Resources.getLocale(this.context.getMeta());
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
122 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
123 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_CREATION, msg(SInfoI18NStrings.CSV_META_CREATION_LABEL), df.format(new Date()));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
124
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
125 // "# Gewässer: "
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
126 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RIVER, msg(SInfoI18NStrings.CSV_META_RIVER_LABEL), river.getName());
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
127
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
128 // "# Höhensystem des Flusses: "
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
129 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEIGHT_UNIT_RIVER, river.getWstUnit());
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
130
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
131 // "# Ort/Bereich (km): "
8894
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
132 final DoubleRange calcRange = results.getCalcRange();
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
133 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RANGE, msg(SInfoI18NStrings.CSV_META_RANGE_LABEL),
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
134 getKmFormatter().format(calcRange.getMinimumDouble()),
8894
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
135 getKmFormatter().format(calcRange.getMaximumDouble()));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
136
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
137 writer.writeNext(new String[] { "" });
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
138 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
139
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
140 /**
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
141 * Write the header, with different headings depending on whether at a
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
142 * gauge or at a location.
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
143 *
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
144 * @param river
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
145 * @param useTkh
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
146 */
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
147
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
148 @Override
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
149 protected void writeCSVHeader(final CSVWriter writer, final FlowDepthCalculationResults results, final RiverInfo river) {
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
150 log.info("FlowDepthExporter.writeCSVHeader");
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
151
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
152 final Collection<String> header = new ArrayList<>(11);
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
153
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
154 header.add(msg(SInfoI18NStrings.CSV_KM_HEADER));
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
155 header.add(msgUnit(CSV_FLOWDEPTH_HEADER, SInfoI18NStrings.UNIT_M));
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
156 if (getData().isUseTkh()) {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
157 header.add(msgUnit(CSV_FLOWDEPTHTKH_HEADER, SInfoI18NStrings.UNIT_M));
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
158 header.add(msgUnit(CSV_TKH_HEADER, SInfoI18NStrings.UNIT_CM));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
159 }
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
160
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
161 header.add(msgUnit(SInfoI18NStrings.CSV_WATERLEVEL_HEADER, river.getWstUnit()));
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
162 header.add(msgUnit(SInfoI18NStrings.CSV_DISCHARGE_HEADER, SInfoI18NStrings.UNIT_CUBIC_M));
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
163 header.add(msg(SInfoI18NStrings.CSV_LABEL_HEADER));
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
164 header.add(msg(SInfoI18NStrings.CSV_GAUGE_HEADER));
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
165 header.add(msgUnit(SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER, river.getWstUnit()));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
166 header.add(msg(CSV_SOUNDING_HEADER));
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
167 header.add(msg(SInfoI18NStrings.CSV_LOCATION_HEADER));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
168
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
169 writer.writeNext(header.toArray(new String[header.size()]));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
170 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
171
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
172 @Override
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
173 protected String[] formatCSVRow(final FlowDepthCalculationResults results, final FlowDepthRow row) {
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
174 return formatFlowDepthRow(row);
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
175 }
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
176
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
177 /**
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
178 * 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
179 *
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
180 * @param useTkh
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
181 */
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
182 private String[] formatFlowDepthRow(final FlowDepthRow row) {
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
183
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
184 final Collection<String> lines = new ArrayList<>(11);
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
185
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
186 // Fluss-km
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
187 lines.add(getKmFormatter().format(row.getStation()));
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
188
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
189 // Fließtiefe [m]
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
190 lines.add(getFlowDepthFormatter().format(row.getFlowDepth()));
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
191
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
192 if (getData().isUseTkh()) {
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
193 // Fließtiefe mit TKH [m]
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
194 lines.add(getFlowDepthFormatter().format(row.getFlowDepthWithTkh()));
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
195
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
196 // TKH [cm]
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
197 lines.add(getTkhFormatter().format(row.getTkh()));
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
198 }
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
199
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
200 // Wasserstand [NN + m]
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
201 lines.add(getW2Formatter().format(row.getWaterlevel()));
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
202
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
203 // Q [m³/s]
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
204 final double discharge = row.getDischarge();
8884
7a8c12706834 Work on SINFO-FlowDepth
gernotbelger
parents: 8882
diff changeset
205 if (Double.isNaN(discharge))
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
206 lines.add(StringUtils.EMPTY);
8884
7a8c12706834 Work on SINFO-FlowDepth
gernotbelger
parents: 8882
diff changeset
207 else {
8882
f762fadc5313 Further work on SINFO-FlowDepth
gernotbelger
parents: 8879
diff changeset
208 final double roundedDischarge = RiverUtils.roundQ(discharge);
f762fadc5313 Further work on SINFO-FlowDepth
gernotbelger
parents: 8879
diff changeset
209 lines.add(getQFormatter().format(roundedDischarge));
f762fadc5313 Further work on SINFO-FlowDepth
gernotbelger
parents: 8879
diff changeset
210 }
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
211
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
212 // Bezeichnung
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
213 lines.add(row.getWaterlevelLabel());
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
214
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
215 // Bezugspegel
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
216 lines.add(row.getGauge());
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
217
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
218 // Mittlere Sohlhöhe [NN + m]
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
219 lines.add(getMeanBedHeighFormatter().format(row.getMeanBedHeight()));
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
220
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
221 // Peilung/Epoche
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
222 lines.add(row.getSoundageLabel());
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
223
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
224 // Lage
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
225 lines.add(row.getLocation());
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
226
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
227 return lines.toArray(new String[lines.size()]);
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
228 }
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
229
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
230 @Override
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
231 protected final String getJasperFile() {
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
232 return JASPER_FILE;
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
233 }
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
234
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
235 @Override
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
236 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthCalculationResults results) {
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
237
8894
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
238 final RiverInfo river = results.getRiver();
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
239 final String wstUnitName = river.getWstUnit();
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
240
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
241 /* general metadata */
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
242 source.addMetaData("header", msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL));
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
243 source.addMetaData("calcMode", results.getCalcModeLabel());
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
244
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
245 source.addMetaData("version_label", msg(SInfoI18NStrings.CSV_META_VERSION_LABEL));
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
246 source.addMetaData("version", FLYS.VERSION);
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
247
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
248 source.addMetaData("user_label", msg(SInfoI18NStrings.CSV_META_USER_LABEL));
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
249 source.addMetaData("user", results.getUser());
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
250
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
251 final Locale locale = Resources.getLocale(this.context.getMeta());
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
252 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
253 source.addMetaData("date_label", msg(SInfoI18NStrings.CSV_META_CREATION_LABEL));
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
254 source.addMetaData("date", df.format(new Date()));
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
255
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
256 source.addMetaData("river_label", msg(SInfoI18NStrings.CSV_META_RIVER_LABEL));
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
257 source.addMetaData("river", river.getName());
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
258
8894
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
259 final DoubleRange calcRange = results.getCalcRange();
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
260 final NumberFormat kmFormatter = getKmFormatter();
a66f2a7c4f84 SINFO FlowDepth - slight code cleanup
gernotbelger
parents: 8884
diff changeset
261 final String rangeValue = String.format("%s - %s", kmFormatter.format(calcRange.getMinimumDouble()), kmFormatter.format(calcRange.getMaximumDouble()));
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
262 source.addMetaData("range_label", msg(SInfoI18NStrings.CSV_META_RANGE_LABEL));
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
263 source.addMetaData("range", rangeValue);
8854
7bbfb24e6eec SINFO - first prototype of BArt Fließtiefen
gernotbelger
parents:
diff changeset
264
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
265 /* column headings */
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
266 source.addMetaData("station_header", msg(SInfoI18NStrings.CSV_KM_HEADER));
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
267 source.addMetaData("flowdepth_header", msg(CSV_FLOWDEPTH_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
268 source.addMetaData("flowdepth_tkh_header", msg(CSV_FLOWDEPTHTKH_HEADER));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
269 source.addMetaData("tkh_header", msg(CSV_TKH_HEADER));
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
270 source.addMetaData("waterlevel_header", msg(SInfoI18NStrings.CSV_WATERLEVEL_HEADER));
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
271 source.addMetaData("river_unit", wstUnitName);
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
272 source.addMetaData("discharge_header", msg(SInfoI18NStrings.CSV_DISCHARGE_HEADER));
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
273 source.addMetaData("waterlevel_name_header", msg(SInfoI18NStrings.CSV_LABEL_HEADER));
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
274 source.addMetaData("gauge_header", msg(SInfoI18NStrings.CSV_GAUGE_HEADER));
8863
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
275 source.addMetaData("bedheight_header", msg(CSV_MEAN_BED_HEIGHT_HEADER_SHORT));
1009cab0f86b Some work on flow depth exporter
gernotbelger
parents: 8854
diff changeset
276 source.addMetaData("sounding_name_header", msg(CSV_SOUNDING_HEADER));
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
277 source.addMetaData("location_header", msg(SInfoI18NStrings.CSV_LOCATION_HEADER));
8854
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
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
280 @Override
8938
9c02733a1b3c Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
gernotbelger
parents: 8928
diff changeset
281 protected String[] formatPDFRow(final FlowDepthCalculationResults results, final FlowDepthRow row) {
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
282 return formatFlowDepthRow(row);
8877
9f7a285b0ee3 Some work on SINFO FlowDepth
gernotbelger
parents: 8863
diff changeset
283 }
8928
791714b92b5c Basically implemented SINFO-Tkh Exports
gernotbelger
parents: 8894
diff changeset
284 }

http://dive4elements.wald.intevation.org