ingo@407: package de.intevation.flys.exports; ingo@407: ingo@418: import java.text.NumberFormat; ingo@418: ingo@407: import org.apache.log4j.Logger; ingo@407: ingo@407: import au.com.bytecode.opencsv.CSVWriter; ingo@407: ingo@407: import de.intevation.artifacts.Artifact; ingo@407: ingo@407: import de.intevation.flys.artifacts.WINFOArtifact; ingo@407: import de.intevation.flys.artifacts.model.WQCKms; ingo@407: import de.intevation.flys.artifacts.model.WQKms; ingo@407: ingo@407: /** ingo@407: * @author Ingo Weinzierl ingo@407: */ ingo@407: public class DischargeLongitudinalSectionExporter extends WaterlevelExporter { ingo@407: ingo@407: /** The logger used in this exporter.*/ ingo@407: private static Logger logger = ingo@407: Logger.getLogger(DischargeLongitudinalSectionExporter.class); ingo@407: ingo@407: ingo@416: public static final String CSV_KM_HEADER = ingo@416: "export.discharge.longitudinal.section.csv.header.km"; ingo@416: ingo@416: public static final String CSV_W_HEADER = ingo@416: "export.discharge.longitudinal.section.csv.header.w"; ingo@416: ingo@416: public static final String CSV_CW_HEADER = ingo@416: "export.discharge.longitudinal.section.csv.header.cw"; ingo@416: ingo@416: public static final String CSV_Q_HEADER = ingo@416: "export.discharge.longitudinal.section.csv.header.q"; ingo@416: ingo@416: public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km"; ingo@416: public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]"; ingo@416: public static final String DEFAULT_CSV_CW_HEADER = "W korr."; ingo@416: public static final String DEFAULT_CSV_Q_HEADER = "Q [m³/s]"; ingo@416: ingo@416: ingo@407: @Override ingo@407: protected void addData(Artifact artifact) { ingo@407: WINFOArtifact winfo = (WINFOArtifact) artifact; ingo@407: WQKms[] wqkms = winfo.getDischargeLongitudinalSectionData(); ingo@407: ingo@407: logger.debug("Got " + wqkms != null ? wqkms.length : 0 + " WQKms obj."); ingo@407: ingo@407: data.add(wqkms); ingo@407: } ingo@407: ingo@407: ingo@407: @Override ingo@416: protected void writeCSVHeader(CSVWriter writer) { ingo@416: logger.info("WaterlevelExporter.writeCSVHeader"); ingo@416: ingo@416: writer.writeNext(new String[] { ingo@416: msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER), ingo@416: msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER), ingo@416: msg(CSV_CW_HEADER, DEFAULT_CSV_CW_HEADER), ingo@416: msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER) ingo@416: }); ingo@416: } ingo@416: ingo@416: @Override ingo@407: protected void wQKms2CSV(CSVWriter writer, WQKms wqkms) { ingo@407: logger.debug("WaterlevelExporter.wQKms2CSV"); ingo@407: ingo@407: int size = wqkms.size(); ingo@407: double[] result = new double[4]; ingo@407: ingo@418: NumberFormat kmf = getKmFormatter(); ingo@418: NumberFormat wf = getWFormatter(); ingo@418: NumberFormat qf = getQFormatter(); ingo@418: ingo@407: for (int i = 0; i < size; i ++) { ingo@407: result = wqkms.get(i, result); ingo@407: ingo@407: String wc = ""; ingo@407: if (wqkms instanceof WQCKms) { ingo@418: wc = wf.format(result[3]); ingo@407: } ingo@407: ingo@407: writer.writeNext(new String[] { ingo@418: kmf.format(result[2]), ingo@418: wf.format(result[0]), ingo@407: wc, ingo@418: qf.format(result[1]) ingo@407: }); ingo@407: } ingo@407: } ingo@407: } ingo@407: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :