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));
     }
 

http://dive4elements.wald.intevation.org