Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoExporter.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 |
---|---|
8 * documentation coming with Dive4Elements River for details. | 8 * documentation coming with Dive4Elements River for details. |
9 */ | 9 */ |
10 package org.dive4elements.river.artifacts.sinfo.common; | 10 package org.dive4elements.river.artifacts.sinfo.common; |
11 | 11 |
12 import java.io.OutputStream; | 12 import java.io.OutputStream; |
13 import java.text.DateFormat; | |
14 import java.text.NumberFormat; | |
13 import java.util.Collection; | 15 import java.util.Collection; |
16 import java.util.Date; | |
14 import java.util.HashMap; | 17 import java.util.HashMap; |
18 import java.util.Locale; | |
15 import java.util.Map; | 19 import java.util.Map; |
16 | 20 |
21 import org.apache.commons.lang.math.DoubleRange; | |
17 import org.apache.log4j.Logger; | 22 import org.apache.log4j.Logger; |
18 import org.dive4elements.artifacts.CallMeta; | 23 import org.dive4elements.artifacts.CallMeta; |
19 import org.dive4elements.artifacts.common.utils.Config; | 24 import org.dive4elements.artifacts.common.utils.Config; |
25 import org.dive4elements.river.FLYS; | |
20 import org.dive4elements.river.artifacts.model.CalculationResult; | 26 import org.dive4elements.river.artifacts.model.CalculationResult; |
21 import org.dive4elements.river.artifacts.resources.Resources; | 27 import org.dive4elements.river.artifacts.resources.Resources; |
28 import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings; | |
29 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo; | |
22 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource; | 30 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource; |
23 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; | 31 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; |
32 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; | |
24 import org.dive4elements.river.exports.AbstractExporter; | 33 import org.dive4elements.river.exports.AbstractExporter; |
25 | 34 |
26 import au.com.bytecode.opencsv.CSVWriter; | 35 import au.com.bytecode.opencsv.CSVWriter; |
27 import net.sf.jasperreports.engine.JRDataSource; | 36 import net.sf.jasperreports.engine.JRDataSource; |
28 import net.sf.jasperreports.engine.JRException; | 37 import net.sf.jasperreports.engine.JRException; |
33 /** | 42 /** |
34 * @author Gernot Belger | 43 * @author Gernot Belger |
35 */ | 44 */ |
36 public abstract class AbstractSInfoExporter<ROW extends AbstractSInfoResultRow, RESULT extends AbstractSInfoCalculationResult<ROW>, RESULTS extends AbstractSInfoCalculationResults<ROW, RESULT>> extends AbstractExporter { | 45 public abstract class AbstractSInfoExporter<ROW extends AbstractSInfoResultRow, RESULT extends AbstractSInfoCalculationResult<ROW>, RESULTS extends AbstractSInfoCalculationResults<ROW, RESULT>> extends AbstractExporter { |
37 | 46 |
47 private static final String CSV_META_HEADER_SOUNDING = "sinfo.export.flow_depth.csv.meta.header.sounding"; | |
48 | |
49 private static final String CSV_META_HEADER_SOUNDING_YEAR = "sinfo.export.flow_depth.csv.meta.header.sounding.year"; | |
50 | |
51 private static final String CSV_META_HEADER_SOUNDING_TYPE = "sinfo.export.flow_depth.csv.meta.header.sounding.type"; | |
52 | |
53 private static final String CSV_META_HEADER_SOUNDING_EVALUATOR = "sinfo.export.flow_depth.csv.meta.header.sounding.evaluator"; | |
54 | |
55 private static final String CSV_META_HEADER_SOUNDING_PRJ = "sinfo.export.flow_depth.csv.meta.header.sounding.prj"; | |
56 | |
57 private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel"; | |
58 | |
59 private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original"; | |
60 | |
38 /** The storage that contains the current calculation result. */ | 61 /** The storage that contains the current calculation result. */ |
39 private RESULTS data = null; | 62 private RESULTS data = null; |
40 | 63 |
41 protected abstract Logger getLog(); | 64 protected abstract Logger getLog(); |
42 | 65 |
171 source.addData(formattedRow); | 194 source.addData(formattedRow); |
172 } | 195 } |
173 } | 196 } |
174 | 197 |
175 protected abstract String[] formatPDFRow(RESULTS results, final ROW row); | 198 protected abstract String[] formatPDFRow(RESULTS results, final ROW row); |
199 | |
200 protected final void writeCSVGlobalMetadataDefaults(final CSVWriter writer, final AbstractSInfoCalculationResults<?, ?> results) { | |
201 | |
202 final String calcModeLabel = results.getCalcModeLabel(); | |
203 final RiverInfo river = results.getRiver(); | |
204 final DoubleRange calcRange = results.getCalcRange(); | |
205 | |
206 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_RESULT, msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL), river.getName(), calcModeLabel); | |
207 | |
208 // "# FLYS-Version: " | |
209 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_VERSION, msg(SInfoI18NStrings.CSV_META_VERSION_LABEL), FLYS.VERSION); | |
210 | |
211 // "# Bearbeiter: " | |
212 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_USER, msg(SInfoI18NStrings.CSV_META_USER_LABEL), results.getUser()); | |
213 | |
214 // "# Datum der Erstellung: " | |
215 final Locale locale = Resources.getLocale(this.context.getMeta()); | |
216 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); | |
217 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_CREATION, msg(SInfoI18NStrings.CSV_META_CREATION_LABEL), df.format(new Date())); | |
218 | |
219 // "# Gewässer: " | |
220 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RIVER, msg(SInfoI18NStrings.CSV_META_RIVER_LABEL), river.getName()); | |
221 | |
222 // "# Höhensystem des Flusses: " | |
223 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEIGHT_UNIT_RIVER, river.getWstUnit()); | |
224 | |
225 // "# Ort/Bereich (km): " | |
226 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RANGE, msg(SInfoI18NStrings.CSV_META_RANGE_LABEL), | |
227 getKmFormatter().format(calcRange.getMinimumDouble()), getKmFormatter().format(calcRange.getMaximumDouble())); | |
228 } | |
229 | |
230 protected final void writeCSVSoundingMetadata(final CSVWriter writer, final BedHeightInfo sounding) { | |
231 // "##METADATEN PEILUNG" | |
232 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING); | |
233 | |
234 // "# Jahr der Peilung: " | |
235 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_YEAR, Integer.toString(sounding.getYear())); | |
236 // "# Aufnahmeart: " | |
237 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_TYPE, sounding.getType()); | |
238 // "# Auswerter: " | |
239 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_EVALUATOR, sounding.getEvaluationBy()); | |
240 // "# Lagesystem: " | |
241 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_PRJ, sounding.getLocationSystem()); | |
242 // "# Höhensystem: " | |
243 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL, sounding.getCurElevationModelUnit()); | |
244 // "# ursprüngliches Höhensystem: " | |
245 writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL, sounding.getOldElevationModelUnit()); | |
246 } | |
247 | |
248 protected final void writeCSVWaterlevelMetadata(final CSVWriter writer, final WstInfo wst) { | |
249 // "##METADATEN WASSERSPIEGELLAGE" | |
250 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL); | |
251 | |
252 // "# Bezeichnung der Wasserspiegellage: " | |
253 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_NAME, wst.getLabel()); | |
254 | |
255 // "# Bezugspegel: " | |
256 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_GAUGE, wst.getGauge()); | |
257 | |
258 // "# Jahr/Zeitraum der Wasserspiegellage: " | |
259 final int year = wst.getYear(); | |
260 if (year > 0) | |
261 writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_YEAR, Integer.toString(year)); | |
262 } | |
263 | |
264 protected final void addJRMetaDataDefaults(final MetaAndTableJRDataSource source, final AbstractSInfoCalculationResults<?, ?> results) { | |
265 | |
266 final RiverInfo river = results.getRiver(); | |
267 final String wstUnitName = river.getWstUnit(); | |
268 | |
269 source.addMetaData("header", msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL)); | |
270 source.addMetaData("calcMode", results.getCalcModeLabel()); | |
271 | |
272 source.addMetaData("version_label", msg(SInfoI18NStrings.CSV_META_VERSION_LABEL)); | |
273 source.addMetaData("version", FLYS.VERSION); | |
274 | |
275 source.addMetaData("user_label", msg(SInfoI18NStrings.CSV_META_USER_LABEL)); | |
276 source.addMetaData("user", results.getUser()); | |
277 | |
278 final Locale locale = Resources.getLocale(this.context.getMeta()); | |
279 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); | |
280 source.addMetaData("date_label", msg(SInfoI18NStrings.CSV_META_CREATION_LABEL)); | |
281 source.addMetaData("date", df.format(new Date())); | |
282 | |
283 source.addMetaData("river_label", msg(SInfoI18NStrings.CSV_META_RIVER_LABEL)); | |
284 source.addMetaData("river", river.getName()); | |
285 source.addMetaData("river_unit", wstUnitName); | |
286 | |
287 final DoubleRange calcRange = results.getCalcRange(); | |
288 final NumberFormat kmFormatter = getKmFormatter(); | |
289 final String rangeValue = String.format("%s - %s", kmFormatter.format(calcRange.getMinimumDouble()), kmFormatter.format(calcRange.getMaximumDouble())); | |
290 source.addMetaData("range_label", msg(SInfoI18NStrings.CSV_META_RANGE_LABEL)); | |
291 source.addMetaData("range", rangeValue); | |
292 } | |
176 } | 293 } |