ingo@391: package de.intevation.flys.exports;
ingo@391:
ingo@391: import java.io.OutputStream;
ingo@391: import java.util.ArrayList;
ingo@391: import java.util.List;
ingo@391:
ingo@391: import org.w3c.dom.Document;
ingo@391:
ingo@391: import org.apache.log4j.Logger;
ingo@391:
ingo@391: import au.com.bytecode.opencsv.CSVWriter;
ingo@391:
ingo@391: import de.intevation.artifacts.Artifact;
ingo@391: import de.intevation.artifacts.CallContext;
ingo@391:
ingo@391: import de.intevation.flys.artifacts.WINFOArtifact;
ingo@391: import de.intevation.flys.artifacts.model.WQDay;
ingo@391:
ingo@391:
ingo@391: /**
ingo@391: * @author Ingo Weinzierl
ingo@391: */
ingo@391: public class DurationCurveExporter extends AbstractExporter {
ingo@391:
ingo@391: /** The logger used in this exporter.*/
ingo@391: private static Logger logger = Logger.getLogger(WaterlevelExporter.class);
ingo@391:
ingo@391:
ingo@391: /** The storage that contains all WQKms objects for the different facets.*/
ingo@391: protected List data;
ingo@391:
ingo@391:
ingo@391: public void init(Document request, OutputStream out, CallContext context) {
ingo@391: logger.debug("DurationCurveExporter.init");
ingo@391:
ingo@391: super.init(request, out, context);
ingo@391:
ingo@391: this.data = new ArrayList();
ingo@391: }
ingo@391:
ingo@391:
ingo@391: protected void addData(Artifact artifact) {
ingo@391: WINFOArtifact winfoArtifact = (WINFOArtifact) artifact;
ingo@391: data.add(winfoArtifact.getDurationCurveData());
ingo@391: }
ingo@391:
ingo@391:
ingo@391: protected void writeCSVData(CSVWriter writer) {
ingo@391: logger.info("DurationCurveExporter.writeData");
ingo@391:
ingo@391: for (WQDay wqday: data) {
ingo@391: wQDay2CSV(writer, wqday);
ingo@391: }
ingo@391: }
ingo@391:
ingo@391:
ingo@391: protected void wQDay2CSV(CSVWriter writer, WQDay wqday) {
ingo@391: logger.debug("DurationCurveExporter.wQDay2CSV");
ingo@391:
ingo@391: int size = wqday.size();
ingo@391:
ingo@391: for (int i = 0; i < size; i ++) {
ingo@391: writer.writeNext(new String[] {
ingo@391: Double.toString(wqday.getW(i)),
ingo@391: Double.toString(wqday.getQ(i)),
ingo@391: Double.toString(wqday.getDay(i))
ingo@391: });
ingo@391: }
ingo@391: }
ingo@391: }