Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java @ 8946:5d5d482da3e9
Implementing SINFO - FlowDepthMinMax calculation
author | gernotbelger |
---|---|
date | Tue, 13 Mar 2018 18:49:33 +0100 |
parents | 9c02733a1b3c |
children | a4f1ac81f26d |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java Tue Mar 13 09:55:53 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java Tue Mar 13 18:49:33 2018 +0100 @@ -8,18 +8,11 @@ package org.dive4elements.river.artifacts.sinfo.flowdepth; -import java.text.DateFormat; -import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collection; -import java.util.Date; -import java.util.Locale; import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.math.DoubleRange; import org.apache.log4j.Logger; -import org.dive4elements.river.FLYS; -import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings; import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter; import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo; @@ -31,7 +24,7 @@ import au.com.bytecode.opencsv.CSVWriter; /** - * Generates different output formats (csv, pdf) of data that resulted from a flow depths computation. + * Generates different output formats (csv, pdf) of data that resulted from a flow depths min/max computation. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> * @author Gernot Belger @@ -42,28 +35,13 @@ /** The log used in this exporter. */ private static Logger log = Logger.getLogger(FlowDepthExporter.class); - private static final String CSV_FLOWDEPTH_HEADER = "sinfo.export.flow_depth.csv.header.flowdepth"; - private static final String CSV_FLOWDEPTHTKH_HEADER = "sinfo.export.flow_depth.csv.header.flowdepthTkh"; + private static final String CSV_FLOWDEPTHMINMAX_HEADER = "sinfo.export.flow_depth_minmax.csv.header.flowdepthminmax"; + + private static final String CSV_FLOWDEPTHTKHMINMAX_HEADER = "sinfo.export.flow_depth_minmax.csv.header.flowdepthTkh"; + private static final String CSV_TKH_HEADER = "sinfo.export.flow_depth.csv.header.tkh"; - private static final String CSV_MEAN_BED_HEIGHT_HEADER_SHORT = "sinfo.export.flow_depth.csv.header.mean_bed_height.short"; - private static final String CSV_SOUNDING_HEADER = "sinfo.export.flow_depth.csv.header.sounding"; - - private static final String CSV_META_HEADER_SOUNDING = "sinfo.export.flow_depth.csv.meta.header.sounding"; - - private static final String CSV_META_HEADER_SOUNDING_YEAR = "sinfo.export.flow_depth.csv.meta.header.sounding.year"; - - private static final String CSV_META_HEADER_SOUNDING_TYPE = "sinfo.export.flow_depth.csv.meta.header.sounding.type"; - - private static final String CSV_META_HEADER_SOUNDING_EVALUATOR = "sinfo.export.flow_depth.csv.meta.header.sounding.evaluator"; - - private static final String CSV_META_HEADER_SOUNDING_PRJ = "sinfo.export.flow_depth.csv.meta.header.sounding.prj"; - - private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel"; - - private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original"; - - private static final String JASPER_FILE = "/jasper/sinfo.flowdepth.jasper"; + private static final String JASPER_FILE = "/jasper/sinfo.flowdepthminmax.jasper"; @Override protected Logger getLog() { @@ -71,70 +49,22 @@ } @Override - protected void writeCSVResultMetadata(final CSVWriter writer, final FlowDepthCalculationResults results, final FlowDepthCalculationResult result) { - - /* first some specific metadata */ - final BedHeightInfo sounding = result.getSounding(); - final WstInfo wst = result.getWst(); - - // "##METADATEN PEILUNG" - writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING); + protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthCalculationResults results) { + log.info("FlowDepthExporter.writeCSVMeta"); - // "# Jahr der Peilung: " - writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_YEAR, Integer.toString(sounding.getYear())); - // "# Aufnahmeart: " - writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_TYPE, sounding.getType()); - // "# Auswerter: " - writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_EVALUATOR, sounding.getEvaluationBy()); - // "# Lagesystem: " - writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_PRJ, sounding.getLocationSystem()); - // "# Höhensystem: " - writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL, sounding.getCurElevationModelUnit()); - // "# ursprüngliches Höhensystem: " - writeCSVMetaEntry(writer, CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL, sounding.getOldElevationModelUnit()); + super.writeCSVGlobalMetadataDefaults(writer, results); - // "##METADATEN WASSERSPIEGELLAGE" - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL); - // "# Bezeichnung der Wasserspiegellage: " - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_NAME, wst.getLabel()); - // "# Bezugspegel: " - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_GAUGE, wst.getGauge()); - // "# Jahr/Zeitraum der Wasserspiegellage: " - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_YEAR, Integer.toString(wst.getYear())); + writer.writeNext(new String[] { "" }); } @Override - protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthCalculationResults results) { - log.info("FlowDepthExporter.writeCSVMeta"); - - final String calcModeLabel = results.getCalcModeLabel(); - final RiverInfo river = results.getRiver(); - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEADER_RESULT, msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL), river.getName(), calcModeLabel); - - // "# FLYS-Version: " - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_VERSION, msg(SInfoI18NStrings.CSV_META_VERSION_LABEL), FLYS.VERSION); - - // "# Bearbeiter: " - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_USER, msg(SInfoI18NStrings.CSV_META_USER_LABEL), results.getUser()); + protected void writeCSVResultMetadata(final CSVWriter writer, final FlowDepthCalculationResults results, final FlowDepthCalculationResult result) { - // "# Datum der Erstellung: " - final Locale locale = Resources.getLocale(this.context.getMeta()); - final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_CREATION, msg(SInfoI18NStrings.CSV_META_CREATION_LABEL), df.format(new Date())); - - // "# Gewässer: " - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RIVER, msg(SInfoI18NStrings.CSV_META_RIVER_LABEL), river.getName()); + final BedHeightInfo sounding = result.getSounding(); + super.writeCSVSoundingMetadata(writer, sounding); - // "# Höhensystem des Flusses: " - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_HEIGHT_UNIT_RIVER, river.getWstUnit()); - - // "# Ort/Bereich (km): " - final DoubleRange calcRange = results.getCalcRange(); - writeCSVMetaEntry(writer, SInfoI18NStrings.CSV_META_RANGE, msg(SInfoI18NStrings.CSV_META_RANGE_LABEL), - getKmFormatter().format(calcRange.getMinimumDouble()), - getKmFormatter().format(calcRange.getMaximumDouble())); - - writer.writeNext(new String[] { "" }); + final WstInfo wst = result.getWst(); + super.writeCSVWaterlevelMetadata(writer, wst); } /** @@ -152,9 +82,9 @@ final Collection<String> header = new ArrayList<>(11); header.add(msg(SInfoI18NStrings.CSV_KM_HEADER)); - header.add(msgUnit(CSV_FLOWDEPTH_HEADER, SInfoI18NStrings.UNIT_M)); + header.add(msgUnit(CSV_FLOWDEPTHMINMAX_HEADER, SInfoI18NStrings.UNIT_M)); if (getData().isUseTkh()) { - header.add(msgUnit(CSV_FLOWDEPTHTKH_HEADER, SInfoI18NStrings.UNIT_M)); + header.add(msgUnit(CSV_FLOWDEPTHTKHMINMAX_HEADER, SInfoI18NStrings.UNIT_M)); header.add(msgUnit(CSV_TKH_HEADER, SInfoI18NStrings.UNIT_CM)); } @@ -163,7 +93,7 @@ header.add(msg(SInfoI18NStrings.CSV_LABEL_HEADER)); header.add(msg(SInfoI18NStrings.CSV_GAUGE_HEADER)); header.add(msgUnit(SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER, river.getWstUnit())); - header.add(msg(CSV_SOUNDING_HEADER)); + header.add(msg(SInfoI18NStrings.CSV_SOUNDING_HEADER)); header.add(msg(SInfoI18NStrings.CSV_LOCATION_HEADER)); writer.writeNext(header.toArray(new String[header.size()])); @@ -235,45 +165,20 @@ @Override protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthCalculationResults results) { - final RiverInfo river = results.getRiver(); - final String wstUnitName = river.getWstUnit(); - /* general metadata */ - source.addMetaData("header", msg(SInfoI18NStrings.CSV_META_HEADER_RESULT_LABEL)); - source.addMetaData("calcMode", results.getCalcModeLabel()); - - source.addMetaData("version_label", msg(SInfoI18NStrings.CSV_META_VERSION_LABEL)); - source.addMetaData("version", FLYS.VERSION); - - source.addMetaData("user_label", msg(SInfoI18NStrings.CSV_META_USER_LABEL)); - source.addMetaData("user", results.getUser()); - - final Locale locale = Resources.getLocale(this.context.getMeta()); - final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); - source.addMetaData("date_label", msg(SInfoI18NStrings.CSV_META_CREATION_LABEL)); - source.addMetaData("date", df.format(new Date())); - - source.addMetaData("river_label", msg(SInfoI18NStrings.CSV_META_RIVER_LABEL)); - source.addMetaData("river", river.getName()); - - final DoubleRange calcRange = results.getCalcRange(); - final NumberFormat kmFormatter = getKmFormatter(); - final String rangeValue = String.format("%s - %s", kmFormatter.format(calcRange.getMinimumDouble()), kmFormatter.format(calcRange.getMaximumDouble())); - source.addMetaData("range_label", msg(SInfoI18NStrings.CSV_META_RANGE_LABEL)); - source.addMetaData("range", rangeValue); + super.addJRMetaDataDefaults(source, results); /* column headings */ source.addMetaData("station_header", msg(SInfoI18NStrings.CSV_KM_HEADER)); - source.addMetaData("flowdepth_header", msg(CSV_FLOWDEPTH_HEADER)); - source.addMetaData("flowdepth_tkh_header", msg(CSV_FLOWDEPTHTKH_HEADER)); + source.addMetaData("flowdepth_header", msg(CSV_FLOWDEPTHMINMAX_HEADER)); + source.addMetaData("flowdepth_tkh_header", msg(CSV_FLOWDEPTHTKHMINMAX_HEADER)); source.addMetaData("tkh_header", msg(CSV_TKH_HEADER)); source.addMetaData("waterlevel_header", msg(SInfoI18NStrings.CSV_WATERLEVEL_HEADER)); - source.addMetaData("river_unit", wstUnitName); source.addMetaData("discharge_header", msg(SInfoI18NStrings.CSV_DISCHARGE_HEADER)); source.addMetaData("waterlevel_name_header", msg(SInfoI18NStrings.CSV_LABEL_HEADER)); source.addMetaData("gauge_header", msg(SInfoI18NStrings.CSV_GAUGE_HEADER)); - source.addMetaData("bedheight_header", msg(CSV_MEAN_BED_HEIGHT_HEADER_SHORT)); - source.addMetaData("sounding_name_header", msg(CSV_SOUNDING_HEADER)); + source.addMetaData("bedheight_header", msg(SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER_SHORT)); + source.addMetaData("sounding_name_header", msg(SInfoI18NStrings.CSV_SOUNDING_HEADER)); source.addMetaData("location_header", msg(SInfoI18NStrings.CSV_LOCATION_HEADER)); }