diff flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java @ 391:5d6988836f01

Added an exporter to export the computed data of a duration curve. flys-artifacts/trunk@1814 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 03 May 2011 17:37:56 +0000
parents 69d05357c177
children 340dc41a7ea3
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java	Tue May 03 17:34:29 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java	Tue May 03 17:37:56 2011 +0000
@@ -1,8 +1,6 @@
 package de.intevation.flys.exports;
 
-import java.io.IOException;
 import java.io.OutputStream;
-import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -22,31 +20,12 @@
 /**
  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
  */
-public class WaterlevelExporter implements OutGenerator {
+public class WaterlevelExporter extends AbstractExporter {
 
     /** The logger used in this exporter.*/
     private static Logger logger = Logger.getLogger(WaterlevelExporter.class);
 
 
-    public static final String WATERLEVEL_FACET_CSV = "waterlevel_export.csv";
-
-    public static final String DEFAULT_CSV_CHARSET = "UTF-8";
-
-    public static final char DEFAULT_CSV_SEPARATOR = ',';
-
-
-    /** The document of the incoming out() request.*/
-    protected Document request;
-
-    /** The output stream where the data should be written to.*/
-    protected OutputStream out;
-
-    /** The CallContext object.*/
-    protected CallContext context;
-
-    /** The selected facet.*/
-    protected String facet;
-
     /** The storage that contains all WQKms objects for the different facets.*/
     protected List<WQKms[]> data;
 
@@ -54,70 +33,14 @@
     public void init(Document request, OutputStream out, CallContext context) {
         logger.debug("WaterlevelExporter.init");
 
-        this.request = request;
-        this.out     = out;
-        this.context = context;
-        this.data    = new ArrayList<WQKms[]>();
-    }
-
+        super.init(request, out, context);
 
-    /**
-     * This doOut() just collects the data of multiple artifacts. The real data
-     * generation takes place in the concrete generate() methods.
-     *
-     * @param artifact The artifact.
-     * @param facet The facet to add - NOTE: the facet needs to fit to the first
-     * facet inserted into this exporter. Otherwise this artifact/facet is
-     * skipped.
-     * @param attr The attr document.
-     */
-    public void doOut(Artifact artifact, String facet, Document attr) {
-        logger.debug("WaterlevelExporter.doOut: " + facet);
-
-        if (!isFacetValid(facet)) {
-            logger.warn("Facet '" + facet + "' not valid. No output created!");
-            return;
-        }
-
-        data.add(getWaterlevelData(artifact));
+        this.data = new ArrayList<WQKms[]>();
     }
 
 
-    public void generate()
-    throws IOException
-    {
-        if (facet != null && facet.equals(WATERLEVEL_FACET_CSV)) {
-            generateCSV();
-        }
-        else {
-            throw new IOException("invalid facet for exporter.");
-        }
-    }
-
-
-    /**
-     * Determines if the desired facet is valid for this exporter. If no facet
-     * is currently set, <i>facet</i> is set.
-     *
-     * @param facet The desired facet.
-     *
-     * @return true, if <i>facet</i> is valid, otherwise false.
-     */
-    protected boolean isFacetValid(String facet) {
-        logger.debug("WaterlevelExporter.isFacetValid");
-
-        if (facet == null || facet.length() == 0) {
-            return false;
-        }
-        else if (this.facet == null || this.facet.length() == 0) {
-            logger.debug("Set the facet of this export: " + facet);
-            this.facet = facet;
-
-            return true;
-        }
-        else {
-            return this.facet.equals(facet);
-        }
+    protected void addData(Artifact artifact) {
+        data.add(getWaterlevelData(artifact));
     }
 
 
@@ -138,24 +61,14 @@
     }
 
 
-    protected void generateCSV()
-    throws    IOException
-    {
-        logger.info("WaterlevelExporter.generateCSV");
-
-        CSVWriter writer = new CSVWriter(
-            new OutputStreamWriter(
-                out,
-                DEFAULT_CSV_CHARSET),
-            DEFAULT_CSV_SEPARATOR);
+    protected void writeCSVData(CSVWriter writer) {
+        logger.info("WaterlevelExporter.writeData");
 
         for (WQKms[] tmp: data) {
             for (WQKms wqkms: tmp) {
                 wQKms2CSV(writer, wqkms);
             }
         }
-
-        writer.close();
     }
 
 

http://dive4elements.wald.intevation.org