# HG changeset patch # User Raimund Renkert # Date 1370529687 -7200 # Node ID e213b538f78cbb5fae0832d4aa545e963ee35bd1 # Parent 9fdb2b59b9922f104b70454794e0e4f765fe0d8e Added exporter for bed height differences. diff -r 9fdb2b59b992 -r e213b538f78c artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedDifferenceExporter.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedDifferenceExporter.java Thu Jun 06 16:41:27 2013 +0200 @@ -0,0 +1,89 @@ +package org.dive4elements.river.exports.minfo; + +import gnu.trove.TDoubleArrayList; + +import java.io.IOException; +import java.io.OutputStream; +import java.text.NumberFormat; +import java.util.LinkedList; +import java.util.List; + +import org.apache.log4j.Logger; +import org.dive4elements.artifacts.CallContext; +import org.dive4elements.river.artifacts.model.CalculationResult; +import org.dive4elements.river.artifacts.model.minfo.BedDifferencesResult; +import org.dive4elements.river.exports.AbstractExporter; +import org.dive4elements.river.utils.Formatter; +import org.w3c.dom.Document; + +import au.com.bytecode.opencsv.CSVWriter; + + +public class BedDifferenceExporter +extends AbstractExporter +{ + + /** Private logger. */ + private static Logger logger = + Logger.getLogger(BedDifferenceExporter.class); + + private static final String CSV_HEADER_KM = "export.minfo.beddifference.km"; + private static final String CSV_HEADER_DIFF = + "export.minfo.beddifference.diff"; + + private BedDifferencesResult[] results; + + @Override + public void init(Document request, OutputStream out, CallContext context) { + logger.debug("BedQualityExporter.init"); + super.init(request, out, context); + results = new BedDifferencesResult[0]; + } + @Override + protected void writeCSVData(CSVWriter writer) throws IOException { + writeCSVHeader(writer); + + NumberFormat kmf = Formatter.getCalculationKm(context.getMeta()); + NumberFormat mf = Formatter.getMeterFormat(context); + for (int i = 0; i < results.length; i++) { + BedDifferencesResult result = results[i]; + double[][] kms = result.getDifferencesData(); + for (int j = 0; j < kms[0].length; j++) { + writer.writeNext(new String[] { + kmf.format(kms[0][j]), mf.format(kms[1][j])}); + } + } + } + + @Override + protected void writePDF(OutputStream out) { + // TODO implement me! + + } + + @Override + protected void addData(Object data) { + if (!(data instanceof CalculationResult)) { + logger.warn("Invalid data type."); + return; + } + Object[] d = (Object[])((CalculationResult)data).getData(); + + if (!(d instanceof BedDifferencesResult[])) { + logger.warn("Invalid result object."); + return; + } + results = (BedDifferencesResult[])d; + } + + protected void writeCSVHeader(CSVWriter writer) { + logger.debug("writeCSVHeader()"); + + List header = new LinkedList(); + if (results != null) { + header.add(msg(CSV_HEADER_KM, "km")); + header.add(msg(CSV_HEADER_DIFF, "m")); + } + writer.writeNext(header.toArray(new String[header.size()])); + } +}