raimund@3599: package de.intevation.flys.exports.fixings; raimund@3599: 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; raimund@3599: import org.w3c.dom.Document; raimund@3599: import org.w3c.dom.NodeList; raimund@3599: raimund@3599: import au.com.bytecode.opencsv.CSVWriter; raimund@3599: raimund@3599: import de.intevation.artifactdatabase.state.ArtifactAndFacet; raimund@3599: import de.intevation.artifactdatabase.state.Settings; raimund@3599: import de.intevation.artifacts.Artifact; raimund@3599: import de.intevation.artifacts.CallContext; raimund@3599: import de.intevation.artifacts.common.utils.XMLUtils; raimund@3599: import de.intevation.flys.artifacts.FLYSArtifact; raimund@3599: import de.intevation.flys.artifacts.access.FixAccess; raimund@3599: import de.intevation.flys.artifacts.math.fitting.Function; raimund@3599: import de.intevation.flys.artifacts.math.fitting.FunctionFactory; raimund@3599: import de.intevation.flys.artifacts.model.CalculationResult; raimund@3599: import de.intevation.flys.artifacts.model.Parameters; raimund@3599: import de.intevation.flys.artifacts.model.fixings.FixAnalysisResult; raimund@3599: import de.intevation.flys.collections.FLYSArtifactCollection; raimund@3599: import de.intevation.flys.exports.AbstractExporter; raimund@3599: import de.intevation.flys.exports.OutGenerator; raimund@3599: import de.intevation.flys.utils.FLYSUtils; raimund@3599: raimund@3599: public class FixATExport extends AbstractExporter { raimund@3599: 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(); raimund@3599: if (resData instanceof FixAnalysisResult) { raimund@3599: this.parameters = ((FixAnalysisResult)resData).getParameters(); raimund@3599: } raimund@3599: } raimund@3599: else { raimund@3599: logger.debug("No CalculationResult found for AT export."); raimund@3599: return; raimund@3599: } raimund@3599: FixAccess access = new FixAccess((FLYSArtifact)this.master); 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: raimund@3599: FixATWriter atWriter = new FixATWriter(this.function, this.parameters); raimund@3599: logger.debug("the request: " + XMLUtils.toString(request)); raimund@3599: NodeList nodes = request.getElementsByTagName("km"); raimund@3599: String km = nodes.item(0).getTextContent(); raimund@3599: logger.debug("the km: " + km); raimund@3599: double dkm = Double.valueOf(km); raimund@3599: String river = FLYSUtils.getRivername((FLYSArtifact)master); 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: raimund@3599: }