diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoExporter.java @ 8938:9c02733a1b3c

Work on Sinfo-tkh - exports; using same logic for wst-description as winfo
author gernotbelger
date Tue, 06 Mar 2018 17:09:39 +0100
parents 791714b92b5c
children 5d5d482da3e9
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoExporter.java	Tue Mar 06 17:08:51 2018 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/AbstractSInfoExporter.java	Tue Mar 06 17:09:39 2018 +0100
@@ -52,8 +52,11 @@
         if (d instanceof CalculationResult) {
 
             final Object dat = ((CalculationResult) d).getData();
-            if (dat != null)
-                this.data = (RESULTS) dat;
+            if (dat != null) {
+                @SuppressWarnings("unchecked")
+                final RESULTS result = (RESULTS) dat;
+                this.data = result;
+            }
         }
     }
 
@@ -67,17 +70,20 @@
         final RiverInfo river = results.getRiver();
 
         /* write as csv */
-        writeCSVMeta(writer, results);
-        writeCSVHeader(writer, river);
+        writeCSVGlobalMetadata(writer, results);
+        writeCSVHeader(writer, results, river);
 
         for (final RESULT result : results.getResults()) {
-            writeCSVResult(writer, result);
+            writeCSVResult(writer, results, result);
         }
     }
 
-    protected abstract void writeCSVHeader(final CSVWriter writer, final RiverInfo river);
+    protected abstract void writeCSVHeader(final CSVWriter writer, final RESULTS results, final RiverInfo river);
 
-    protected abstract void writeCSVMeta(final CSVWriter writer, final RESULTS results);
+    /**
+     * Add metadata that is once written to the top of the file.
+     */
+    protected abstract void writeCSVGlobalMetadata(final CSVWriter writer, final RESULTS results);
 
     protected final void writeCSVMetaEntry(final CSVWriter writer, final String message, final Object... messageArgs) {
 
@@ -86,27 +92,30 @@
         writer.writeNext(new String[] { Resources.getMsg(meta, message, message, messageArgs) });
     }
 
-    protected final void writeCSVResult(final CSVWriter writer, final RESULT result) {
+    protected final void writeCSVResult(final CSVWriter writer, final RESULTS results, final RESULT result) {
 
-        writeCSVResultHeader(writer, result);
+        writeCSVResultMetadata(writer, results, result);
 
         /* nwo the value rows */
         final Collection<ROW> rows = result.getRows();
         for (final ROW row : rows) {
-            writeCSVRow(writer, row);
+            writeCSVRow(writer, results, row);
         }
     }
 
-    protected abstract void writeCSVResultHeader(CSVWriter writer, RESULT result);
+    /**
+     * Add metadata that is written once per result set.
+     */
+    protected abstract void writeCSVResultMetadata(CSVWriter writer, RESULTS results, RESULT result);
 
-    protected final void writeCSVRow(final CSVWriter writer, final ROW row) {
+    protected final void writeCSVRow(final CSVWriter writer, final RESULTS results, final ROW row) {
         getLog().debug("writeCSVFlowDepthRow");
 
-        final String[] formattedRow = formatCSVRow(row);
+        final String[] formattedRow = formatCSVRow(results, row);
         writer.writeNext(formattedRow);
     }
 
-    protected abstract String[] formatCSVRow(final ROW row);
+    protected abstract String[] formatCSVRow(RESULTS results, final ROW row);
 
     @Override
     protected final void writePDF(final OutputStream outStream) {
@@ -144,7 +153,7 @@
         addJRMetaData(source, results);
 
         for (final RESULT result : results.getResults()) {
-            addJRTableData(source, result);
+            addJRTableData(source, results, result);
         }
 
         return source;
@@ -152,16 +161,16 @@
 
     protected abstract void addJRMetaData(final MetaAndTableJRDataSource source, final RESULTS results);
 
-    protected final void addJRTableData(final MetaAndTableJRDataSource source, final RESULT result) {
+    protected final void addJRTableData(final MetaAndTableJRDataSource source, final RESULTS results, final RESULT result) {
 
         final Collection<ROW> rows = result.getRows();
 
         for (final ROW row : rows) {
 
-            final String[] formattedRow = formatPDFRow(row);
+            final String[] formattedRow = formatPDFRow(results, row);
             source.addData(formattedRow);
         }
     }
 
-    protected abstract String[] formatPDFRow(final ROW row);
+    protected abstract String[] formatPDFRow(RESULTS results, final ROW row);
 }
\ No newline at end of file

http://dive4elements.wald.intevation.org