comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhExporter.java @ 8946:5d5d482da3e9

Implementing SINFO - FlowDepthMinMax calculation
author gernotbelger
date Tue, 13 Mar 2018 18:49:33 +0100
parents 9c02733a1b3c
children a4f1ac81f26d
comparison
equal deleted inserted replaced
8945:4a6b6a3c279c 8946:5d5d482da3e9
6 * documentation coming with Dive4Elements River for details. 6 * documentation coming with Dive4Elements River for details.
7 */ 7 */
8 8
9 package org.dive4elements.river.artifacts.sinfo.tkhstate; 9 package org.dive4elements.river.artifacts.sinfo.tkhstate;
10 10
11 import java.text.DateFormat;
12 import java.text.NumberFormat;
13 import java.util.ArrayList; 11 import java.util.ArrayList;
14 import java.util.Collection; 12 import java.util.Collection;
15 import java.util.Date;
16 import java.util.Locale;
17 13
18 import org.apache.commons.lang.math.DoubleRange;
19 import org.apache.log4j.Logger; 14 import org.apache.log4j.Logger;
20 import org.dive4elements.river.FLYS;
21 import org.dive4elements.river.artifacts.resources.Resources;
22 import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings; 15 import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings;
23 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter; 16 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter;
24 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource; 17 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource;
25 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; 18 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
26 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; 19 import org.dive4elements.river.artifacts.sinfo.util.WstInfo;
62 55
63 @Override 56 @Override
64 protected void writeCSVGlobalMetadata(final CSVWriter writer, final TkhCalculationResults results) { 57 protected void writeCSVGlobalMetadata(final CSVWriter writer, final TkhCalculationResults results) {
65 log.info("TkhExporter.writeCSVMeta"); 58 log.info("TkhExporter.writeCSVMeta");
66 59
67 final String calcModeLabel = results.getCalcModeLabel(); 60 super.writeCSVGlobalMetadataDefaults(writer, results);
68 final RiverInfo river = results.getRiver();
69 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_RESULT, msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL), river.getName(), calcModeLabel);
70
71 // "# FLYS-Version: "
72 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_VERSION, msg(SInfoI18NStrings.CSV_META_VERSION_LABEL), FLYS.VERSION);
73
74 // "# Bearbeiter: "
75 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_USER, msg(SInfoI18NStrings.CSV_META_USER_LABEL), results.getUser());
76
77 // "# Datum der Erstellung: "
78 final Locale locale = Resources.getLocale(this.context.getMeta());
79 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
80 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_CREATION, msg(SInfoI18NStrings.CSV_META_CREATION_LABEL), df.format(new Date()));
81
82 // "# Gewässer: "
83 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RIVER, msg(SInfoI18NStrings.CSV_META_RIVER_LABEL), river.getName());
84
85 // "# Höhensystem des Flusses: "
86 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEIGHT_UNIT_RIVER, river.getWstUnit());
87
88 // "# Ort/Bereich (km): "
89 final DoubleRange calcRange = results.getCalcRange();
90 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RANGE, msg(SInfoI18NStrings.CSV_META_RANGE_LABEL),
91 getKmFormatter().format(calcRange.getMinimumDouble()), getKmFormatter().format(calcRange.getMaximumDouble()));
92 61
93 // "# Berechnungsgrundlage: Gleichung nach GILL (1971)" 62 // "# Berechnungsgrundlage: Gleichung nach GILL (1971)"
94 writeCSVMetaEntry(writer, CSV_META_CALCULATION_FORMULA); 63 writeCSVMetaEntry(writer, CSV_META_CALCULATION_FORMULA);
95 64
96 writer.writeNext(new String[] { "" }); 65 writer.writeNext(new String[] { "" });
126 95
127 @Override 96 @Override
128 // FIXME: rename 97 // FIXME: rename
129 protected void writeCSVResultMetadata(final CSVWriter writer, final TkhCalculationResults results, final TkhCalculationResult result) { 98 protected void writeCSVResultMetadata(final CSVWriter writer, final TkhCalculationResults results, final TkhCalculationResult result) {
130 99
131 /* first some specific metadata */
132 final WstInfo wst = result.getWst(); 100 final WstInfo wst = result.getWst();
101 super.writeCSVWaterlevelMetadata(writer, wst);
133 102
134 // "##METADATEN WASSERSPIEGELLAGE" 103 // TODO:
135 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL); 104 // "# W/Pegel [cm]: " (nur bei Eingabe des Wasserstands am Pegel)
136 // "# Bezeichnung der Wasserspiegellage: " 105 // "# Q (m³/s): " (nur bei Eingabe des Durchflusses)
137 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_NAME, wst.getLabel());
138 // "# Bezugspegel: "
139 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_GAUGE, wst.getGauge());
140 // // "# Jahr/Zeitraum der Wasserspiegellage: "
141 // writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_YEAR, Integer.toString(wst.getYear()));
142 } 106 }
143 107
144 @Override 108 @Override
145 protected String[] formatCSVRow(final TkhCalculationResults results, final TkhResultRow row) { 109 protected String[] formatCSVRow(final TkhCalculationResults results, final TkhResultRow row) {
146 return formatRow(results, row, ExportMode.csv); 110 return formatRow(results, row, ExportMode.csv);
197 } 161 }
198 162
199 @Override 163 @Override
200 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final TkhCalculationResults results) { 164 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final TkhCalculationResults results) {
201 165
202 final RiverInfo river = results.getRiver();
203 final String wstUnitName = river.getWstUnit();
204
205 /* general metadata */ 166 /* general metadata */
206 source.addMetaData("header", msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL)); 167 super.addJRMetaDataDefaults(source, results);
207 source.addMetaData("calcMode", results.getCalcModeLabel());
208
209 source.addMetaData("version_label", msg(SInfoI18NStrings.CSV_META_VERSION_LABEL));
210 source.addMetaData("version", FLYS.VERSION);
211
212 source.addMetaData("user_label", msg(SInfoI18NStrings.CSV_META_USER_LABEL));
213 source.addMetaData("user", results.getUser());
214
215 final Locale locale = Resources.getLocale(this.context.getMeta());
216 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
217 source.addMetaData("date_label", msg(SInfoI18NStrings.CSV_META_CREATION_LABEL));
218 source.addMetaData("date", df.format(new Date()));
219
220 source.addMetaData("river_label", msg(SInfoI18NStrings.CSV_META_RIVER_LABEL));
221 source.addMetaData("river", river.getName());
222 source.addMetaData("river_unit", wstUnitName);
223
224 final DoubleRange calcRange = results.getCalcRange();
225 final NumberFormat kmFormatter = getKmFormatter();
226 final String rangeValue = String.format("%s - %s", kmFormatter.format(calcRange.getMinimumDouble()), kmFormatter.format(calcRange.getMaximumDouble()));
227 source.addMetaData("range_label", msg(SInfoI18NStrings.CSV_META_RANGE_LABEL));
228 source.addMetaData("range", rangeValue);
229 168
230 /* column headings */ 169 /* column headings */
231 source.addMetaData("station_header", msg(SInfoI18NStrings.CSV_KM_HEADER)); 170 source.addMetaData("station_header", msg(SInfoI18NStrings.CSV_KM_HEADER));
232 source.addMetaData("tkh_header", msg(CSV_TKH_HEADER)); 171 source.addMetaData("tkh_header", msg(CSV_TKH_HEADER));
233 source.addMetaData("bedheight_header", msg(CSV_MEAN_BED_HEIGHT_HEADER_SHORT)); 172 source.addMetaData("bedheight_header", msg(CSV_MEAN_BED_HEIGHT_HEADER_SHORT));

http://dive4elements.wald.intevation.org