diff flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java @ 446:c0bec245f608

Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those. flys-artifacts/trunk@1938 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 17 May 2011 16:31:07 +0000
parents a7947972fdeb
children 5606ba4139e0
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java	Tue May 17 14:22:27 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java	Tue May 17 16:31:07 2011 +0000
@@ -1,5 +1,6 @@
 package de.intevation.flys.exports;
 
+import java.io.IOException;
 import java.io.OutputStream;
 import java.text.NumberFormat;
 import java.util.ArrayList;
@@ -28,6 +29,9 @@
     private static Logger logger = Logger.getLogger(WaterlevelExporter.class);
 
 
+    public static final String FACET_WST = "wst";
+
+
     public static final String CSV_KM_HEADER =
         "export.waterlevel.csv.header.km";
 
@@ -55,6 +59,24 @@
     }
 
 
+    @Override
+    public void generate()
+    throws IOException
+    {
+        logger.debug("WaterlevelExporter.generate");
+
+        if (facet != null && facet.equals(AbstractExporter.FACET_CSV)) {
+            generateCSV();
+        }
+        else if (facet != null && facet.equals(FACET_WST)) {
+            generateWST();
+        }
+        else {
+            throw new IOException("invalid facet for exporter");
+        }
+    }
+
+
     protected void addData(Artifact artifact) {
         data.add(getWaterlevelData(artifact));
     }
@@ -124,6 +146,42 @@
 
 
     /**
+     * Generates the output in WST format.
+     */
+    protected void generateWST()
+    throws    IOException
+    {
+        logger.info("WaterlevelExporter.generateWST");
+
+        int cols = data.get(0).length;
+        WstWriter writer = new WstWriter(cols);
+
+        writeWSTData(writer);
+
+        writer.write(out);
+    }
+
+
+    protected void writeWSTData(WstWriter writer) {
+        logger.debug("WaterlevelExporter.writeWSTData");
+
+        double[] result = new double[3];
+
+        for (WQKms[] tmp: data) {
+            for (WQKms wqkms: tmp) {
+                int size = wqkms != null ? wqkms.size() : 0;
+
+                for (int i = 0; i < size; i++) {
+                    result = wqkms.get(i, result);
+
+                    writer.add(result);
+                }
+            }
+        }
+    }
+
+
+    /**
      * Returns the number formatter for kilometer values.
      *
      * @return the number formatter for kilometer values.

http://dive4elements.wald.intevation.org