diff artifacts/src/main/java/org/dive4elements/river/exports/fixings/DeltaWtExporter.java @ 9082:42c15e2f95fb

2.3.4.1.4 Wasserstand falsche Einheit FixAnalysis PDF start
author gernotbelger
date Fri, 25 May 2018 10:44:24 +0200
parents 5e38e2924c07
children 8024e51e828a
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/fixings/DeltaWtExporter.java	Fri May 25 09:10:19 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/fixings/DeltaWtExporter.java	Fri May 25 10:44:24 2018 +0200
@@ -8,63 +8,48 @@
 
 package org.dive4elements.river.exports.fixings;
 
-import au.com.bytecode.opencsv.CSVWriter;
-
-import org.dive4elements.artifacts.CallMeta;
-
-import org.dive4elements.river.artifacts.model.CalculationResult;
-
-import org.dive4elements.river.artifacts.model.fixings.AnalysisPeriod;
-import org.dive4elements.river.artifacts.model.fixings.FixAnalysisResult;
-import org.dive4elements.river.artifacts.model.fixings.QWD;
-
-import org.dive4elements.river.artifacts.resources.Resources;
-
-import org.dive4elements.river.exports.AbstractExporter;
-
-import org.dive4elements.river.utils.Formatter;
-import org.dive4elements.river.utils.KMIndex;
-
 import java.io.IOException;
 import java.io.OutputStream;
-
 import java.text.DateFormat;
 import java.text.MessageFormat;
 import java.text.NumberFormat;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.TreeMap;
 
 import org.apache.log4j.Logger;
+import org.dive4elements.artifacts.CallMeta;
+import org.dive4elements.river.artifacts.D4EArtifact;
+import org.dive4elements.river.artifacts.access.RiverAccess;
+import org.dive4elements.river.artifacts.model.CalculationResult;
+import org.dive4elements.river.artifacts.model.fixings.AnalysisPeriod;
+import org.dive4elements.river.artifacts.model.fixings.FixAnalysisResult;
+import org.dive4elements.river.artifacts.model.fixings.QWD;
+import org.dive4elements.river.artifacts.resources.Resources;
+import org.dive4elements.river.exports.AbstractExporter;
+import org.dive4elements.river.utils.Formatter;
+import org.dive4elements.river.utils.KMIndex;
+
+import au.com.bytecode.opencsv.CSVWriter;
 
 /** Exports fixation analysis deltaw(t) computation results to csv. */
-public class DeltaWtExporter
-extends      AbstractExporter
-{
+public class DeltaWtExporter extends AbstractExporter {
     /** Private log. */
     private static Logger log = Logger.getLogger(DeltaWtExporter.class);
 
-    public static final String CSV_KM_HEADER =
-        "export.fixings.deltawt.csv.header.km";
-
-    public static final String CSV_DELTA_W_HEADER =
-        "export.fixings.deltawt.csv.header.deltaw";
-
-    public static final String CSV_Q_HEADER =
-        "export.fixings.deltawt.csv.header.q";
+    public static final String CSV_KM_HEADER = "export.fixings.deltawt.csv.header.km";
 
-    public static final String CSV_W_HEADER =
-        "export.fixings.deltawt.csv.header.w";
+    public static final String CSV_DELTA_W_HEADER = "export.fixings.deltawt.csv.header.deltaw";
 
-    public static final String CSV_TRANGE_HEADER =
-        "export.fixings.deltawt.csv.header.time.range";
+    public static final String CSV_Q_HEADER = "export.fixings.deltawt.csv.header.q";
 
-    public static final String CSV_T_HEADER =
-        "export.fixings.deltawt.csv.header.t";
+    public static final String CSV_W_HEADER = "export.fixings.deltawt.csv.header.w";
 
-    public static final String CSV_T_FORMAT =
-        "export.fixings.deltawt.csv.t.format";
+    public static final String CSV_TRANGE_HEADER = "export.fixings.deltawt.csv.header.time.range";
+
+    public static final String CSV_T_HEADER = "export.fixings.deltawt.csv.header.t";
+
+    public static final String CSV_T_FORMAT = "export.fixings.deltawt.csv.t.format";
 
     public static final String DEFAULT_CSV_KM_HEADER = "km";
 
@@ -76,143 +61,122 @@
 
     public static final String DEFAULT_CSV_T_HEADER = "Datum";
 
-    public static final String DEFAULT_CSV_TRANGE_DESC_HEADER =
-        "Status";
-
-    public static final String CSV_REFERENCE =
-        "export.fixings.deltawt.csv.reference";
-
-    public static final String CSV_ANALYSIS =
-        "export.fixings.deltawt.csv.analysis";
+    public static final String DEFAULT_CSV_TRANGE_DESC_HEADER = "Status";
 
-    public static final String DEFAULT_CSV_REFERENCE =
-        "B";
+    public static final String CSV_REFERENCE = "export.fixings.deltawt.csv.reference";
 
-    public static final String DEFAULT_CSV_ANALYSIS =
-        "A{0,number,integer}";
+    public static final String CSV_ANALYSIS = "export.fixings.deltawt.csv.analysis";
 
-    public static final String DEFAULT_CSV_T_FORMAT =
-        "dd.MM.yyyy";
+    public static final String DEFAULT_CSV_REFERENCE = "B";
 
-    protected List<KMIndex<AnalysisPeriod []>> analysisPeriods;
+    public static final String DEFAULT_CSV_ANALYSIS = "A{0,number,integer}";
+
+    public static final String DEFAULT_CSV_T_FORMAT = "dd.MM.yyyy";
+
+    protected List<KMIndex<AnalysisPeriod[]>> analysisPeriods;
 
     protected List<KMIndex<QWD[]>> referenceEvents;
 
     public DeltaWtExporter() {
-        analysisPeriods = new ArrayList<KMIndex<AnalysisPeriod []>>();
-        referenceEvents = new ArrayList<KMIndex<QWD[]>>();
+        this.analysisPeriods = new ArrayList<>();
+        this.referenceEvents = new ArrayList<>();
     }
 
     @Override
-    protected void addData(Object d) {
+    protected void addData(final Object d) {
         log.debug("DeltaWtExporter.addData");
         if (!(d instanceof CalculationResult)) {
             log.warn("Invalid data type");
             return;
         }
 
-        Object data = ((CalculationResult)d).getData();
+        final Object data = ((CalculationResult) d).getData();
         if (!(data instanceof FixAnalysisResult)) {
             log.warn("Invalid data stored in result.");
         }
-        FixAnalysisResult result = (FixAnalysisResult)data;
-        analysisPeriods.add(result.getAnalysisPeriods());
-        referenceEvents.add(result.getReferenced());
+        final FixAnalysisResult result = (FixAnalysisResult) data;
+        this.analysisPeriods.add(result.getAnalysisPeriods());
+        this.referenceEvents.add(result.getReferenced());
     }
 
     @Override
-    protected void writeCSVData(CSVWriter writer) throws IOException {
+    protected void writeCSVData(final CSVWriter writer) throws IOException {
 
-        boolean debug = log.isDebugEnabled();
+        final boolean debug = log.isDebugEnabled();
 
         writeCSVHeader(writer);
 
-        NumberFormat kmF = getKMFormatter();
-        NumberFormat dwF = getDeltaWFormatter();
-        NumberFormat qF  = getQFormatter();
-        NumberFormat wF  = getWFormatter();
-
-        DateFormat dF = getDateFormatter();
+        final NumberFormat kmF = getKMFormatter();
+        final NumberFormat dwF = getDeltaWFormatter();
+        final NumberFormat qF = getQFormatter();
+        final NumberFormat wF = getWFormatter();
 
-        TreeMap<Double, ArrayList<String []>> sorted =
-            new TreeMap<Double, ArrayList<String []>>();
-
-        String referenceS = getReference();
+        final DateFormat dF = getDateFormatter();
 
-        for (KMIndex<QWD[]> reference: referenceEvents) {
+        final TreeMap<Double, ArrayList<String[]>> sorted = new TreeMap<>();
 
-            for (KMIndex.Entry<QWD[]> kmEntry: reference) {
+        final String referenceS = getReference();
 
-                Double km = kmEntry.getKm();
+        for (final KMIndex<QWD[]> reference : this.referenceEvents) {
 
-                ArrayList<String []> list = sorted.get(km);
+            for (final KMIndex.Entry<QWD[]> kmEntry : reference) {
+
+                final Double km = kmEntry.getKm();
+
+                ArrayList<String[]> list = sorted.get(km);
 
                 if (list == null) {
-                    list = new ArrayList<String []>();
+                    list = new ArrayList<>();
                     sorted.put(km, list);
                 }
 
-                String kmS = kmF.format(kmEntry.getKm());
-                for (QWD qwd: kmEntry.getValue()) {
-                    String deltaWS = dwF.format(qwd.getDeltaW());
-                    String qS      = qF.format(qwd.getQ());
-                    String wS      = wF.format(qwd.getW());
-                    String dateS   = dF.format(qwd.getDate());
+                final String kmS = kmF.format(kmEntry.getKm());
+                for (final QWD qwd : kmEntry.getValue()) {
+                    final String deltaWS = dwF.format(qwd.getDeltaW());
+                    final String qS = qF.format(qwd.getQ());
+                    final String wS = wF.format(qwd.getW());
+                    final String dateS = dF.format(qwd.getDate());
 
-                    list.add(new String[] {
-                        kmS,
-                        dateS,
-                        qS,
-                        wS,
-                        referenceS,
-                        deltaWS
-                        });
+                    list.add(new String[] { kmS, dateS, qS, wS, referenceS, deltaWS });
                 }
             }
         }
 
         if (debug) {
-            log.debug("AnalysisPeriods: " + analysisPeriods.size());
+            log.debug("AnalysisPeriods: " + this.analysisPeriods.size());
         }
 
-        String analysisTemplate = getAnalysisTemplate();
-
-        for (KMIndex<AnalysisPeriod []> periods: analysisPeriods) {
+        final String analysisTemplate = getAnalysisTemplate();
 
-            for (KMIndex.Entry<AnalysisPeriod []> kmEntry: periods) {
+        for (final KMIndex<AnalysisPeriod[]> periods : this.analysisPeriods) {
 
-                Double km = kmEntry.getKm();
+            for (final KMIndex.Entry<AnalysisPeriod[]> kmEntry : periods) {
 
-                ArrayList<String []> list = sorted.get(km);
+                final Double km = kmEntry.getKm();
+
+                ArrayList<String[]> list = sorted.get(km);
 
                 if (list == null) {
-                    list = new ArrayList<String []>();
+                    list = new ArrayList<>();
                     sorted.put(km, list);
                 }
 
-                String kmS = kmF.format(kmEntry.getKm());
+                final String kmS = kmF.format(kmEntry.getKm());
                 int analysisCount = 1;
 
-                for (AnalysisPeriod period: kmEntry.getValue()) {
+                for (final AnalysisPeriod period : kmEntry.getValue()) {
                     // Typically resulting in A1,A2...
-                    String analyisS = MessageFormat.format(analysisTemplate,
-                        analysisCount);
-                    QWD [] qwds = period.getQWDs();
+                    final String analyisS = MessageFormat.format(analysisTemplate, analysisCount);
+                    final QWD[] qwds = period.getQWDs();
 
                     if (qwds != null) {
-                        for (QWD qwd: qwds) {
-                            String deltaWS = dwF.format(qwd.getDeltaW());
-                            String qS      = qF.format(qwd.getQ());
-                            String wS      = wF.format(qwd.getW());
-                            String dateS   = dF.format(qwd.getDate());
+                        for (final QWD qwd : qwds) {
+                            final String deltaWS = dwF.format(qwd.getDeltaW());
+                            final String qS = qF.format(qwd.getQ());
+                            final String wS = wF.format(qwd.getW());
+                            final String dateS = dF.format(qwd.getDate());
 
-                            list.add(new String[] {
-                                kmS,
-                                dateS,
-                                qS,
-                                wS,
-                                analyisS,
-                                deltaWS });
+                            list.add(new String[] { kmS, dateS, qS, wS, analyisS, deltaWS });
                         }
                     }
                     ++analysisCount;
@@ -220,8 +184,8 @@
             }
         }
 
-        for (ArrayList<String []> list: sorted.values()) {
-            for (String [] row: list) {
+        for (final ArrayList<String[]> list : sorted.values()) {
+            for (final String[] row : list) {
                 writer.writeNext(row);
             }
         }
@@ -231,64 +195,56 @@
 
     /** Template to create "State" strings like A1,A2... */
     protected String getAnalysisTemplate() {
-        return Resources.getMsg(
-            context.getMeta(),
-            CSV_ANALYSIS, DEFAULT_CSV_ANALYSIS);
+        return Resources.getMsg(this.context.getMeta(), CSV_ANALYSIS, DEFAULT_CSV_ANALYSIS);
     }
 
     protected String getReference() {
-        return Resources.getMsg(
-            context.getMeta(),
-            CSV_REFERENCE, DEFAULT_CSV_REFERENCE);
+        return Resources.getMsg(this.context.getMeta(), CSV_REFERENCE, DEFAULT_CSV_REFERENCE);
     }
 
     protected NumberFormat getKMFormatter() {
-        return Formatter.getFixDeltaWKM(context);
+        return Formatter.getFixDeltaWKM(this.context);
     }
 
     protected NumberFormat getDeltaWFormatter() {
-        return Formatter.getFixDeltaWDeltaW(context);
+        return Formatter.getFixDeltaWDeltaW(this.context);
     }
 
+    @Override
     protected NumberFormat getQFormatter() {
-        return Formatter.getFixDeltaWQ(context);
+        return Formatter.getFixDeltaWQ(this.context);
     }
 
+    @Override
     protected NumberFormat getWFormatter() {
-        return Formatter.getFixDeltaWW(context);
+        return Formatter.getFixDeltaWW(this.context);
     }
 
     protected DateFormat getDateFormatter() {
-        CallMeta meta = context.getMeta();
-        return Formatter.getDateFormatter(
-            meta,
-            Resources.getMsg(
-                meta,
-                CSV_T_FORMAT,
-                DEFAULT_CSV_T_FORMAT));
+        final CallMeta meta = this.context.getMeta();
+        return Formatter.getDateFormatter(meta, Resources.getMsg(meta, CSV_T_FORMAT, DEFAULT_CSV_T_FORMAT));
     }
 
-    protected void writeCSVHeader(CSVWriter writer) {
+    protected void writeCSVHeader(final CSVWriter writer) {
         log.debug("DeltaWtExporter.writeCSVHeader");
 
-        /* issue825
-        km; Ereignis, Abfluss, GEMESSENER Wasserstand;
-        Status (RECHTSBÜNDIG), del W
-        */
+        /*
+         * issue825
+         * km; Ereignis, Abfluss, GEMESSENER Wasserstand;
+         * Status (RECHTSBÜNDIG), del W
+         */
+        final RiverAccess river = new RiverAccess((D4EArtifact) this.master);
+        final String unit = river.getRiver().getWstUnit().getName();
 
-        writer.writeNext(new String[] {
-            msg(CSV_KM_HEADER,      DEFAULT_CSV_KM_HEADER),
-            msg(CSV_T_HEADER,       DEFAULT_CSV_T_HEADER),
-            msg(CSV_Q_HEADER,       DEFAULT_CSV_Q_HEADER),
-            msg(CSV_W_HEADER,       DEFAULT_CSV_W_HEADER),
-            msg(CSV_TRANGE_HEADER,  DEFAULT_CSV_TRANGE_DESC_HEADER),
-            msg(CSV_DELTA_W_HEADER, DEFAULT_CSV_DELTA_W_HEADER)
-        });
+        writer.writeNext(new String[] { msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER), msg(CSV_T_HEADER, DEFAULT_CSV_T_HEADER),
+                msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER), msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { unit }),
+                msg(CSV_TRANGE_HEADER, DEFAULT_CSV_TRANGE_DESC_HEADER), msg(CSV_DELTA_W_HEADER, DEFAULT_CSV_DELTA_W_HEADER) });
     }
 
     @Override
-    protected void writePDF(OutputStream out) {
+    protected void writePDF(final OutputStream out) {
         // TODO: Implement me!
+        // wird doch NICHT erledigt vom WaterlevelExporter
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org