Mercurial > dive4elements > river
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(); }