Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedDifferenceExporter.java @ 6234:02ea1c3fba8c
Fix export at river km's for issue1275
Rrenkert explained that the intention was to scale the
Waterlevels because they should be in centimeters at a gauge
and in meters otherwise.
This appears very strange to me and should be clarified.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 07 Jun 2013 17:09:26 +0200 |
parents | e213b538f78c |
children | 34f393434913 |
line wrap: on
line source
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<String> header = new LinkedList<String>(); 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()])); } }