teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.exports.fixings; sascha@3217: sascha@3217: import au.com.bytecode.opencsv.CSVWriter; sascha@3217: teichmann@5831: import org.dive4elements.artifacts.CallContext; sascha@3217: teichmann@5831: import org.dive4elements.river.artifacts.model.CalculationResult; teichmann@5831: import org.dive4elements.river.artifacts.model.Parameters; sascha@3217: teichmann@5831: import org.dive4elements.river.artifacts.model.fixings.FixAnalysisResult; sascha@3217: teichmann@5831: import org.dive4elements.river.artifacts.resources.Resources; teichmann@5831: teichmann@5831: import org.dive4elements.river.exports.AbstractExporter; sascha@3217: sascha@3217: import java.io.IOException; sascha@3217: import java.io.OutputStream; sascha@3217: sascha@3217: import java.text.NumberFormat; sascha@3217: sascha@3217: import java.util.ArrayList; sascha@3217: import java.util.List; sascha@3217: sascha@3217: import org.apache.log4j.Logger; sascha@3217: sascha@3217: import org.w3c.dom.Document; sascha@3217: sascha@3217: public class ParametersExporter sascha@3217: extends AbstractExporter sascha@3217: { sascha@3778: private static Logger log = Logger.getLogger(ParametersExporter.class); sascha@3217: sascha@3217: protected List parametersList; sascha@3217: teichmann@7077: public ParametersExporter() { sascha@3217: parametersList = new ArrayList(); sascha@3217: } sascha@3217: sascha@3217: @Override sascha@3217: protected void addData(Object d) { sascha@3217: log.debug("ParametersExporter.addData"); sascha@3217: if (!(d instanceof CalculationResult)) { sascha@3217: log.warn("Invalid data type"); sascha@3217: return; sascha@3217: } sascha@3217: sascha@3217: Object data = ((CalculationResult)d).getData(); sascha@3415: if (!(data instanceof FixAnalysisResult)) { sascha@3217: log.warn("Invalid data stored in result."); sascha@3417: return; sascha@3217: } sascha@3417: sascha@3415: FixAnalysisResult result = (FixAnalysisResult)data; sascha@3217: parametersList.add(result.getParameters()); sascha@3217: } sascha@3217: sascha@3217: @Override sascha@3223: public void generate() sascha@3223: throws IOException sascha@3223: { sascha@3223: log.debug("ParametersExporter.generate"); sascha@3223: sascha@3223: if (facet == null) { sascha@3223: throw new IOException("invalid (null) facet for exporter"); sascha@3223: } sascha@3223: sascha@3223: if (facet.equals(FIX_PARAMETERS)) { sascha@3223: generateCSV(); sascha@3223: } sascha@3223: else { sascha@3223: throw new IOException( sascha@3223: "invalid facet for exporter: '" + facet + "'"); sascha@3223: } sascha@3223: } sascha@3223: sascha@3223: @Override sascha@3217: protected void writeCSVData(final CSVWriter writer) throws IOException { sascha@3217: sascha@3217: if (parametersList.isEmpty()) { sascha@3217: return; sascha@3217: } sascha@3217: sascha@3217: Parameters parameters = parametersList.get(0); sascha@3217: writer.writeNext(parameters.getColumnNames()); sascha@3217: sascha@3217: final int numColumns = parameters.getNumberColumns(); sascha@3217: sascha@3217: parameters.visit(new Parameters.Visitor() { sascha@3217: sascha@3217: String [] row = new String[numColumns]; sascha@3217: sascha@3217: NumberFormat format = NumberFormat.getInstance( sascha@3217: Resources.getLocale(context.getMeta())); sascha@3217: sascha@3217: @Override sascha@3217: public void visit(double [] data) { sascha@3217: for (int i = 0; i < data.length; ++i) { sascha@3217: row[i] = format.format(data[i]); sascha@3217: } sascha@3217: writer.writeNext(row); sascha@3217: } sascha@3217: }, new double[numColumns]); sascha@3217: sascha@3217: writer.flush(); sascha@3217: } sascha@3217: sascha@3217: @Override sascha@3217: protected void writePDF(OutputStream out) { sascha@3217: // TODO: Implement me! sascha@3217: } sascha@3217: } sascha@3217: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :