Mercurial > dive4elements > river
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.