diff artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java @ 9040:5294114b1df4

Fixed/changed some FIXMEs/TODOs
author gernotbelger
date Wed, 02 May 2018 12:19:31 +0200
parents 05b5588bdd94
children 86d2cbfe7f7f
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java	Wed May 02 12:16:47 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelDescriptionBuilder.java	Wed May 02 12:19:31 2018 +0200
@@ -29,6 +29,13 @@
  */
 public final class WaterlevelDescriptionBuilder {
 
+    private static final String CSV_META_Q = "export.waterlevel.csv.meta.q";
+
+    // FIXME: unit 'NN + m' is wrong:
+    // - use river-elevation system in case of absolute heights
+    // - use 'cm am Pegel' in other cases
+    private static final String CSV_META_W = "export.waterlevel.csv.meta.w";
+
     private static final String CSV_Q_DESC_HEADER = "export.waterlevel.csv.header.q.desc";
 
     // FIXME: missing in resource-files! hence always the default is used...
@@ -63,6 +70,64 @@
         return this.atGauge;
     }
 
+    public String getMetadata() {
+
+        switch (this.mode) {
+        case QFREE:
+        case QGAUGE: {
+            final String data = getMetadataQ();
+            if (data == null)
+                return null;
+
+            return Resources.getMsg(this.context.getMeta(), CSV_META_Q, CSV_META_Q, data);
+        }
+
+        // TODO: probably none, default is wrong here, but this how it was implemented in WaterlevelExporter.
+        case WFREE:
+        case WGAUGE:
+        case NONE:
+        default:
+            final double[] ws = RiverUtils.getWs(this.artifact);
+
+            if (ws == null || ws.length <= 0)
+                return null;
+
+            // FIXME: we also have here a case single?!
+
+            // FIXME: use correct wst unit!
+
+            // FIXME: bad formatting ofd values. Use the correct Formatter!
+            final String lower = String.valueOf(ws[0]);
+            final String upper = String.valueOf(ws[ws.length - 1]);
+
+            return Resources.getMsg(this.context.getMeta(), CSV_META_W, CSV_META_W, lower, upper);
+        }
+    }
+
+    private String getMetadataQ() {
+
+        final double[] qs = RiverUtils.getQs(this.artifact);
+        if (qs == null || qs.length == 0)
+            return null;
+
+        final RiverUtils.WQ_INPUT input = RiverUtils.getWQInputMode(this.artifact);
+
+        switch (input) {
+        case ADAPTED:
+        case RANGE:
+            return String.valueOf(qs[0]) + " - " + String.valueOf(qs[qs.length - 1]);
+
+        case SINGLE:
+            String data = String.valueOf(qs[0]);
+            for (int i = 1; i < qs.length; i++)
+                data += ", " + String.valueOf(qs[i]);
+            return data;
+
+        default:
+            return null;
+        }
+    }
+
     public String getColumnHeader() {
 
         if (!this.atGauge)

http://dive4elements.wald.intevation.org