felix@6668: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde felix@6668: * Software engineering by Intevation GmbH felix@6668: * felix@6668: * This file is Free Software under the GNU AGPL (>=v3) felix@6668: * and comes with ABSOLUTELY NO WARRANTY! Check out the felix@6668: * documentation coming with Dive4Elements River for details. felix@6668: */ felix@6668: felix@6668: package org.dive4elements.river.exports.minfo; felix@6668: felix@6668: import java.util.LinkedList; felix@6668: import java.util.List; felix@6668: felix@6668: import java.io.OutputStream; felix@6668: import java.io.OutputStreamWriter; felix@6668: import java.io.IOException; felix@6668: felix@6668: import java.text.NumberFormat; felix@6668: felix@6668: import org.w3c.dom.Document; felix@6668: felix@6668: import org.apache.log4j.Logger; felix@6668: felix@6668: import org.dive4elements.artifacts.Artifact; felix@6668: import org.dive4elements.artifacts.CallContext; felix@6668: felix@6668: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; felix@6668: felix@6668: import org.dive4elements.river.artifacts.D4EArtifact; felix@6668: felix@6668: import org.dive4elements.river.artifacts.model.CalculationResult; felix@6668: import org.dive4elements.river.artifacts.model.minfo.SedimentLoadResult; felix@6668: felix@6668: import org.dive4elements.river.exports.AbstractExporter; felix@6668: felix@6668: import org.dive4elements.river.model.River; felix@6668: import org.dive4elements.river.utils.RiverUtils; felix@6668: import org.dive4elements.river.utils.Formatter; felix@6668: import org.dive4elements.river.artifacts.access.RangeAccess; felix@6668: felix@6668: import au.com.bytecode.opencsv.CSVWriter; felix@6668: felix@6668: public class SedimentLoadExporter felix@6668: extends AbstractExporter felix@6668: { felix@6668: /** Private logger. */ felix@6668: private static Logger logger = Logger.getLogger(SedimentLoadExporter.class); felix@6668: felix@6668: felix@6668: private SedimentLoadResult[] results; felix@6668: felix@6668: public SedimentLoadExporter() { felix@6668: } felix@6668: felix@6668: /** Trivial init. */ felix@6668: @Override felix@6668: public void init(Document request, OutputStream out, CallContext context) { felix@6668: super.init(request, out, context); felix@6668: logger.debug("init"); felix@6668: results = new SedimentLoadResult[0]; felix@6668: } felix@6668: felix@6668: felix@6668: /** Process all stored data and write csv. */ felix@6668: @Override felix@6668: protected void writeCSVData(CSVWriter writer) throws IOException { felix@6668: writeCSVHeader(writer); felix@6668: felix@6668: NumberFormat kmf = Formatter.getCalculationKm(context.getMeta()); felix@6668: /* writer.writeNext(new String[] { */ felix@6668: } felix@6668: felix@6668: /** Writes i18ned header for csv file/stream. */ felix@6668: protected void writeCSVHeader(CSVWriter writer) { felix@6668: logger.debug("writeCSVHeader()"); felix@6668: felix@6668: List header = new LinkedList(); felix@6668: if (results != null) { felix@6668: /*header.add(msg(CSV_HEADER_KM, "km")); felix@6668: header.add(msg(CSV_HEADER_VAL, "m"));*/ felix@6668: } felix@6668: writer.writeNext(header.toArray(new String[header.size()])); felix@6668: } felix@6668: felix@6668: /** Store data internally, accepting only SedimentLoadResults[] in felix@6668: * calculationresults data. */ felix@6668: @Override felix@6668: protected void addData(Object data) { felix@6668: if (!(data instanceof CalculationResult)) { felix@6668: logger.warn("Invalid data type."); felix@6668: return; felix@6668: } felix@6668: Object[] d = (Object[])((CalculationResult)data).getData(); felix@6668: felix@6668: if (!(d instanceof SedimentLoadResult[])) { felix@6668: logger.warn("Invalid result object."); felix@6668: return; felix@6668: } felix@6668: logger.debug("addData: Data added."); felix@6668: results = (SedimentLoadResult[])d; felix@6668: } felix@6668: felix@6668: @Override felix@6668: protected void writePDF(OutputStream out) { felix@6668: logger.warn("Not implemented."); felix@6668: } felix@6668: } felix@6668: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :