diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhExporter.java @ 8948:a4f1ac81f26d

Work on SINFO-FlowDepthMinMax. Also rework of result row stuff, in order to reduce abstraction, using result type concept
author gernotbelger
date Wed, 14 Mar 2018 14:10:32 +0100
parents 5d5d482da3e9
children 09e4a4909814
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhExporter.java	Wed Mar 14 14:09:33 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhExporter.java	Wed Mar 14 14:10:32 2018 +0100
@@ -12,12 +12,12 @@
 import java.util.Collection;
 
 import org.apache.log4j.Logger;
-import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings;
 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter;
+import org.dive4elements.river.artifacts.sinfo.common.SInfoResultRow;
+import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource;
 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
 import org.dive4elements.river.artifacts.sinfo.util.WstInfo;
-import org.dive4elements.river.utils.RiverUtils;
 
 import au.com.bytecode.opencsv.CSVWriter;
 
@@ -27,7 +27,7 @@
  * @author Gernot Belger
  */
 // REMARK: must be public because its registered in generators.xml
-public class TkhExporter extends AbstractSInfoExporter<TkhResultRow, TkhCalculationResult, TkhCalculationResults> {
+public class TkhExporter extends AbstractSInfoExporter<TkhCalculationResult, TkhCalculationResults> {
 
     private static enum ExportMode {
         pdf, csv
@@ -38,12 +38,7 @@
 
     private static final String CSV_META_CALCULATION_FORMULA = "sinfo.export.tkh.calculation.formula";
 
-    private static final String CSV_TKH_HEADER = "sinfo.export.tkh.csv.header.tkh";
-
-    private static final String CSV_TKHKIND_HEADER = "sinfo.export.tkh.csv.header.tkhkind";
-
-    private static final String PREFIX_TKH_KIND = "sinfo.export.tkh.soilkind.";
-
+    // FIXME: use pgetPdfHeader instead of getCsvHeader
     private static final String CSV_MEAN_BED_HEIGHT_HEADER_SHORT = "sinfo.export.flow_depth.csv.header.mean_bed_height.short";
 
     private static final String JASPER_FILE = "/jasper/sinfo.flowdepth.jasper";
@@ -75,20 +70,19 @@
 
         final Collection<String> header = new ArrayList<>(11);
 
-        header.add(msg(SInfoI18NStrings.CSV_KM_HEADER));
-        header.add(msgUnit(CSV_TKH_HEADER, SInfoI18NStrings.UNIT_CM));
-        header.add(msg(CSV_TKHKIND_HEADER));
-        header.add(msgUnit(SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER, river.getWstUnit()));
-
-        header.add(msgUnit(SInfoI18NStrings.CSV_WATERLEVEL_HEADER, river.getWstUnit()));
-        header.add(msgUnit(SInfoI18NStrings.CSV_DISCHARGE_HEADER, SInfoI18NStrings.UNIT_CUBIC_M));
+        header.add(msg(SInfoResultType.station.getCsvHeader()));
+        header.add(msgUnit(SInfoResultType.tkh.getCsvHeader(), SInfoResultType.tkh.getUnit()));
+        header.add(msg(SInfoResultType.soilkind.getCsvHeader()));
+        header.add(msgUnit(SInfoResultType.meanBedHeight.getCsvHeader(), river.getWstUnit()));
+        header.add(msgUnit(SInfoResultType.waterlevel.getCsvHeader(), river.getWstUnit()));
+        header.add(msgUnit(SInfoResultType.discharge.getCsvHeader(), SInfoResultType.discharge.getUnit()));
 
         final String descriptionHeader = results.getDescriptionHeader();
         if (descriptionHeader != null)
             header.add(msg(descriptionHeader));
 
-        header.add(msg(SInfoI18NStrings.CSV_GAUGE_HEADER));
-        header.add(msg(SInfoI18NStrings.CSV_LOCATION_HEADER));
+        header.add(msg(SInfoResultType.gaugeLabel.getCsvHeader()));
+        header.add(msg(SInfoResultType.location.getCsvHeader()));
 
         writer.writeNext(header.toArray(new String[header.size()]));
     }
@@ -100,13 +94,13 @@
         final WstInfo wst = result.getWst();
         super.writeCSVWaterlevelMetadata(writer, wst);
 
-        // TODO:
+        // FIXME:
         // "# W/Pegel [cm]: " (nur bei Eingabe des Wasserstands am Pegel)
         // "# Q (m³/s): " (nur bei Eingabe des Durchflusses)
     }
 
     @Override
-    protected String[] formatCSVRow(final TkhCalculationResults results, final TkhResultRow row) {
+    protected String[] formatCSVRow(final TkhCalculationResults results, final TkhCalculationResult result, final SInfoResultRow row) {
         return formatRow(results, row, ExportMode.csv);
     }
 
@@ -117,40 +111,23 @@
      *
      * @param useTkh
      */
-    private String[] formatRow(final TkhCalculationResults results, final TkhResultRow row, final ExportMode mode) {
+    private String[] formatRow(final TkhCalculationResults results, final SInfoResultRow row, final ExportMode mode) {
 
         final Collection<String> lines = new ArrayList<>(11);
 
-        // Fluss-km
-        lines.add(getKmFormatter().format(row.getStation()));
-
-        // TKH [cm]
-        lines.add(getTkhFormatter().format(row.getTkh()));
-
-        // Einteilung der Gewässersohle (starr/mobil)
-        lines.add(msg(PREFIX_TKH_KIND + row.getTkhKind().name()));
+        lines.add(row.exportValue(this.context, SInfoResultType.station));
+        lines.add(row.exportValue(this.context, SInfoResultType.tkh));
+        lines.add(row.exportValue(this.context, SInfoResultType.soilkind));
+        lines.add(row.exportValue(this.context, SInfoResultType.meanBedHeight));
+        lines.add(row.exportValue(this.context, SInfoResultType.waterlevel));
+        lines.add(row.exportValue(this.context, SInfoResultType.discharge));
 
-        // Mittlere Sohlhöhe [NN + m]
-        lines.add(getMeanBedHeighFormatter().format(row.getMeanBedHeight()));
-
-        // Wasserstand [NN + m]
-        lines.add(getW2Formatter().format(row.getWaterlevel()));
-
-        // Q [m³/s]
-        final double discharge = row.getDischarge();
-        final double roundedDischarge = RiverUtils.roundQ(discharge);
-        lines.add(getQFormatter().format(roundedDischarge));
-
-        // Bezeichnung
         // REMARK: always export this column in pdf-mode, because WInfo also does it (no need for two jasper-templates).
         if (results.getDescriptionHeader() != null || mode == ExportMode.pdf)
-            lines.add(row.getWaterlevelLabel());
+            lines.add(row.exportValue(this.context, SInfoResultType.waterlevelLabel));
 
-        // Bezugspegel
-        lines.add(row.getGauge());
-
-        // Lage
-        lines.add(row.getLocation());
+        lines.add(row.exportValue(this.context, SInfoResultType.gaugeLabel));
+        lines.add(row.exportValue(this.context, SInfoResultType.location));
 
         return lines.toArray(new String[lines.size()]);
     }
@@ -167,24 +144,24 @@
         super.addJRMetaDataDefaults(source, results);
 
         /* column headings */
-        source.addMetaData("station_header", msg(SInfoI18NStrings.CSV_KM_HEADER));
-        source.addMetaData("tkh_header", msg(CSV_TKH_HEADER));
-        source.addMetaData("bedheight_header", msg(CSV_MEAN_BED_HEIGHT_HEADER_SHORT));
-        source.addMetaData("waterlevel_header", msg(SInfoI18NStrings.CSV_WATERLEVEL_HEADER));
-        source.addMetaData("discharge_header", msg(SInfoI18NStrings.CSV_DISCHARGE_HEADER));
+        source.addMetaData("station_header", msg( SInfoResultType.station.getCsvHeader()));
+        source.addMetaData("tkh_header", msg(SInfoResultType.tkh.getCsvHeader()));
+        source.addMetaData("bedheight_header", msg(SInfoResultType.meanBedHeight.getCsvHeader()));
+        source.addMetaData("waterlevel_header", msg(SInfoResultType.waterlevel.getCsvHeader()));
+        source.addMetaData("discharge_header", msg(SInfoResultType.discharge.getCsvHeader()));
 
         // REMARK: actually the column makes no sense if description header is null. But (software symmetry...) WINFO also
         // writes an empty column into the pdf in that case (most probably to avoid the need for two jasper templates).
         final String descriptionHeader = results.getDescriptionHeader();
-        final String waterlevelNameHeader = descriptionHeader == null ? msg(SInfoI18NStrings.CSV_LABEL_HEADER) : descriptionHeader;
+        final String waterlevelNameHeader = descriptionHeader == null ? msg(SInfoResultType.waterlevelLabel.getCsvHeader()) : descriptionHeader;
         source.addMetaData("waterlevel_name_header", waterlevelNameHeader);
 
-        source.addMetaData("gauge_header", msg(SInfoI18NStrings.CSV_GAUGE_HEADER));
-        source.addMetaData("location_header", msg(SInfoI18NStrings.CSV_LOCATION_HEADER));
+        source.addMetaData("gauge_header", msg(SInfoResultType.gaugeLabel.getCsvHeader()));
+        source.addMetaData("location_header", msg(SInfoResultType.location.getCsvHeader()));
     }
 
     @Override
-    protected String[] formatPDFRow(final TkhCalculationResults results, final TkhResultRow row) {
+    protected String[] formatPDFRow(final TkhCalculationResults results, final SInfoResultRow row) {
         return formatRow(results, row, ExportMode.pdf);
     }
 }
\ No newline at end of file

http://dive4elements.wald.intevation.org