diff artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult2.java @ 9446:e60584f2a531

Added bundu bzws calculation for missing volumes (masses still not yet ready) and results1/2/3
author mschaefer
date Tue, 21 Aug 2018 18:19:35 +0200
parents ecadc9ed0ba0
children d32b11d585cd
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult2.java	Tue Aug 21 14:16:15 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstMissVolCalculationResult2.java	Tue Aug 21 18:19:35 2018 +0200
@@ -22,6 +22,7 @@
 import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource;
 import org.dive4elements.river.artifacts.common.ResultRow;
 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
+import org.dive4elements.river.model.BedHeightValueType;
 
 /**
  * Contains the results of a //TODO LINK{@link BezugswstCalculation}.
@@ -35,7 +36,6 @@
     private static final String JASPER_FILE = "/jasper/templates/bundu.bezugswst.result2.jrxml";
     private static final String fieldVolumeMsgKey = "bundu.export.bezugswst.csv.meta.miss.volume.field";
     private static final String fieldMassMsgKey = "bundu.export.bezugswst.csv.meta.miss.mass.field";
-    private static final int fieldSize = 10;
 
     public BezugswstMissVolCalculationResult2(final String label, final Collection<ResultRow> rows) {
         super(label, rows);
@@ -57,12 +57,14 @@
         final Collection<String> lines = new ArrayList<>(20);
 
         lines.add(exportContext.formatRowValue(row, GeneralResultType.station));
-        final List<String> vFields = (List<String>) row.getValue(BunduResultType.missVolumeFields);
-        assert (vFields.size() == fieldSize); // immer abgleichen mit der Calculation!
-        final List<String> mFields = (List<String>) row.getValue(BunduResultType.missMassFields);
+        @SuppressWarnings("unchecked")
+        final List<Double> vFields = (List<Double>) row.getValue(BunduResultType.missVolumeFields);
+        assert (vFields.size() == fieldSize()); // immer abgleichen mit der Calculation!
+        @SuppressWarnings("unchecked")
+        final List<Double> mFields = (List<Double>) row.getValue(BunduResultType.missMassFields);
         for (int i = 0; i <= vFields.size() - 1; i++) {
-            lines.add(vFields.get(i));
-            lines.add(mFields.get(i));
+            lines.add(BunduResultType.missVolumeFields.exportValue(exportContext.getContext(), vFields.get(i)));
+            lines.add(BunduResultType.missMassFields.exportValue(exportContext.getContext(), mFields.get(i)));
         }
         lines.add(exportContext.formatRowValue(row, BunduResultType.missVolumeMeanBed));
         lines.add(exportContext.formatRowValue(row, BunduResultType.missMassMeanBed));
@@ -73,13 +75,13 @@
     @Override
     public void writeCSVHeader(final ExportContextCSV exportContextCSV, final RiverInfo river) {
 
-        final int colSize = 2 * fieldSize + 2;
+        final int colSize = 2 * fieldSize() + 3;
         exportContextCSV.writeTitleForTabs("bundu.export.csv.title.bezugswst.result2", colSize); // Voraussetzung für Tabs ist, dass der Titel vor den Headern
         final Collection<String> header = new ArrayList<>(colSize);
 
         header.add(exportContextCSV.formatCsvHeader(GeneralResultType.station));
 
-        for (int i = 1; i <= fieldSize; i++) {
+        for (int i = 1; i <= fieldSize(); i++) {
             header.add(exportContextCSV.msg(fieldVolumeMsgKey, i));
             header.add(exportContextCSV.msg(fieldMassMsgKey, i));
         }
@@ -90,6 +92,13 @@
 
     }
 
+    /**
+     * Number of elements of the various field lists
+     */
+    private int fieldSize() {
+        return BedHeightValueType.FIELD_LAST_INDEX - BedHeightValueType.FIELD_FIRST_INDEX + 1;
+    }
+
     @Override
     protected String[] formatCSVRow(final ExportContextCSV exportContextCSV, final ResultRow row) {
 
@@ -106,8 +115,9 @@
     protected void addJRTableHeader(final ExportContextPDF exportContextPDF, final MetaAndTableJRDataSource source) {
         /* column headings */
 
+        // TODO Auftrennung jeder Volumen+Masse-Spalte in zwei getrennte Volumen- und Masse-Spalten
         exportContextPDF.addJRMetadata(source, "station_header", GeneralResultType.station);
-        for (int i = 1; i <= fieldSize; i++) {
+        for (int i = 1; i <= fieldSize(); i++) {
             exportContextPDF.addJRMetadata(source, "field_header" + String.valueOf(i), exportContextPDF.msg(fieldVolumeMsgKey, i));
             exportContextPDF.addJRMetadata(source, "field_header" + String.valueOf(i), exportContextPDF.msg(fieldMassMsgKey, i));
         }

http://dive4elements.wald.intevation.org