teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5863: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5863: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.exports.fixings; raimund@3599: sascha@3601: import au.com.bytecode.opencsv.CSVWriter; sascha@3601: teichmann@5831: import org.dive4elements.artifactdatabase.state.ArtifactAndFacet; sascha@3601: teichmann@5831: import org.dive4elements.river.artifacts.FLYSArtifact; sascha@3601: teichmann@5831: import org.dive4elements.river.artifacts.access.FixAccess; sascha@3601: teichmann@5831: import org.dive4elements.river.artifacts.math.fitting.Function; teichmann@5831: import org.dive4elements.river.artifacts.math.fitting.FunctionFactory; sascha@3601: teichmann@5831: import org.dive4elements.river.artifacts.model.CalculationResult; teichmann@5831: import org.dive4elements.river.artifacts.model.Parameters; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.model.fixings.FixResult; teichmann@5831: teichmann@5831: import org.dive4elements.river.exports.AbstractExporter; sascha@3601: raimund@3599: import java.io.IOException; raimund@3599: import java.io.OutputStream; raimund@3599: import java.io.OutputStreamWriter; raimund@3599: import java.io.Writer; raimund@3599: raimund@3599: import org.apache.log4j.Logger; sascha@3601: raimund@3599: import org.w3c.dom.Document; raimund@3599: import org.w3c.dom.NodeList; raimund@3599: ingo@3650: /** Export result of fixation analysis. */ raimund@3599: public class FixATExport extends AbstractExporter { raimund@3599: ingo@3650: /** Private logger. */ raimund@3599: private static Logger logger = raimund@3599: Logger.getLogger(FixATExport.class); raimund@3599: raimund@3599: protected Function function; raimund@3599: protected Parameters parameters; raimund@3599: raimund@3599: raimund@3599: @Override raimund@3599: public void doOut(ArtifactAndFacet bundle, Document attr, boolean visible) { raimund@3599: logger.debug("AT Export doOut()."); raimund@3599: Object data = bundle.getData(context); raimund@3599: if (data instanceof CalculationResult) { raimund@3599: CalculationResult cr = (CalculationResult)data; raimund@3599: Object resData = cr.getData(); rrenkert@5055: if (resData instanceof FixResult) { rrenkert@5055: this.parameters = ((FixResult)resData).getParameters(); raimund@3599: } raimund@3599: } raimund@3599: else { raimund@3599: logger.debug("No CalculationResult found for AT export."); raimund@3599: return; raimund@3599: } rrenkert@4866: FixAccess access = new FixAccess((FLYSArtifact)this.master, context); raimund@3599: String f = access.getFunction(); raimund@3599: if (f == null || f.length() == 0) { raimund@3599: logger.debug("No function found for AT export."); raimund@3599: return; raimund@3599: } raimund@3599: this.function = FunctionFactory.getInstance().getFunction(f); raimund@3599: } raimund@3599: raimund@3599: @Override raimund@3599: public void generate() throws IOException { raimund@3599: if (this.function == null || this.parameters == null) { raimund@3599: logger.debug("No function or paramters for AT export."); raimund@3599: return; raimund@3599: } raimund@3599: raimund@3599: Writer writer = new OutputStreamWriter(out, DEFAULT_CSV_CHARSET); raimund@3599: rrenkert@4866: FixAccess access = new FixAccess((FLYSArtifact)this.master, context); raimund@3599: FixATWriter atWriter = new FixATWriter(this.function, this.parameters); raimund@3599: NodeList nodes = request.getElementsByTagName("km"); raimund@3599: String km = nodes.item(0).getTextContent(); sascha@3601: double dkm = Double.parseDouble(km); rrenkert@4866: String river = access.getRiver(); raimund@3599: atWriter.write(writer, context.getMeta(), river, dkm); raimund@3599: writer.close(); raimund@3599: } raimund@3599: raimund@3599: @Override raimund@3599: protected void writeCSVData(CSVWriter writer) throws IOException { raimund@3599: // The concrete writer is used to write csv data. raimund@3599: } raimund@3599: raimund@3599: @Override raimund@3599: protected void writePDF(OutputStream out) { raimund@3599: // Implement me! raimund@3599: } raimund@3599: raimund@3599: @Override raimund@3599: protected void addData(Object data) { raimund@3599: // Nothing to do here. raimund@3599: } raimund@3599: } ingo@3650: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :