sascha@2787: package de.intevation.flys.exports; sascha@2787: sascha@2787: import au.com.bytecode.opencsv.CSVWriter; sascha@2787: sascha@2787: import de.intevation.artifacts.CallContext; sascha@2787: import de.intevation.artifacts.CallMeta; sascha@2787: sascha@2787: import de.intevation.flys.artifacts.model.CalculationResult; sascha@2787: sascha@2787: import de.intevation.flys.artifacts.model.fixings.DeltaWT; sascha@2787: import de.intevation.flys.artifacts.model.fixings.DeltaWTsKM; sascha@2787: import de.intevation.flys.artifacts.model.fixings.FixResult; sascha@2787: sascha@2787: import de.intevation.flys.artifacts.resources.Resources; sascha@2787: sascha@2787: import de.intevation.flys.utils.Formatter; sascha@2787: sascha@2787: import java.io.IOException; sascha@2787: import java.io.OutputStream; sascha@2787: sascha@2787: import java.text.DateFormat; sascha@2787: import java.text.NumberFormat; sascha@2787: sascha@2787: import java.util.ArrayList; sascha@2787: import java.util.Date; sascha@2787: import java.util.List; sascha@2787: import java.util.Locale; sascha@2787: sascha@2787: import org.apache.log4j.Logger; sascha@2787: sascha@2787: import org.w3c.dom.Document; sascha@2787: sascha@2787: public class DeltaWtExporter sascha@2787: extends AbstractExporter sascha@2787: { sascha@2787: private static Logger log = Logger.getLogger(DeltaWtExporter.class); sascha@2787: sascha@2787: public static final String CSV_KM_HEADER = sascha@2787: "export.fixings.deltawt.csv.header.km"; sascha@2787: sascha@2787: public static final String CSV_DELTA_W_HEADER = sascha@2787: "export.fixings.deltawt.csv.header.deltaw"; sascha@2787: sascha@2787: public static final String CSV_T_HEADER = sascha@2787: "export.fixings.deltawt.csv.header.t"; sascha@2787: sascha@2787: public static final String CSV_T_DESC_HEADER = sascha@2787: "export.fixings.deltawt.csv.header.description"; sascha@2787: sascha@2787: public static final String DEFAULT_CSV_KM_HEADER = "km"; sascha@2787: sascha@2994: public static final String DEFAULT_CSV_DELTA_W_HEADER = "\u0394 W [cm]"; sascha@2787: sascha@2787: public static final String DEFAULT_CSV_T_HEADER = "Datum"; sascha@2787: sascha@2787: public static final String DEFAULT_CSV_T_DESC_HEADER = "Beschreibung"; sascha@2787: sascha@2787: protected List deltaWTsKMs; sascha@2787: sascha@2787: @Override sascha@2787: public void init(Document request, OutputStream out, CallContext context) { sascha@2787: log.debug("DeltaWtExporter.init"); sascha@2787: super.init(request, out, context); sascha@2787: deltaWTsKMs = new ArrayList(); sascha@2787: } sascha@2787: sascha@2787: @Override sascha@2787: public void generate() throws IOException { sascha@2787: log.debug("DeltaWtExporter.generate"); sascha@2787: if (facet == null) { sascha@2787: throw new IOException("invalid (null) facet for exporter"); sascha@2787: } sascha@2787: else if (facet.equals(FACET_CSV)) { sascha@2787: generateCSV(); sascha@2787: } sascha@2787: else if (facet.equals(FACET_PDF)) { sascha@2787: generatePDF(); sascha@2787: } sascha@2787: else { sascha@2787: throw new IOException("invalid facet (" + facet + ") for exporter"); sascha@2787: } sascha@2787: } sascha@2787: sascha@2787: @Override sascha@2787: protected void addData(Object d) { sascha@2787: log.debug("DeltaWtExporter.addData"); sascha@2787: if (!(d instanceof CalculationResult)) { sascha@2787: log.warn("Invalid data type"); sascha@2787: return; sascha@2787: } sascha@2787: sascha@2787: Object data = ((CalculationResult)d).getData(); sascha@2787: if (!(data instanceof FixResult)) { sascha@2787: log.warn("Invalid data stored in result."); sascha@2787: } sascha@2787: FixResult result = (FixResult)data; sascha@3020: // TODO: replace old code sascha@3020: //deltaWTsKMs.add(result.getDeltaWTsKM()); sascha@2787: } sascha@2787: sascha@2787: @Override sascha@2993: protected void writeCSVData(CSVWriter writer) throws IOException { sascha@2993: sascha@2993: boolean debug = log.isDebugEnabled(); sascha@2787: sascha@2787: writeCSVHeader(writer); sascha@2787: sascha@2787: NumberFormat kmF = getKMFormatter(); sascha@2787: NumberFormat dwF = getDeltaWFormatter(); sascha@2787: sascha@2787: CallMeta meta = context.getMeta(); sascha@2787: Locale locale = Resources.getLocale(meta); sascha@2787: DateFormat dF = DateFormat.getDateInstance(DateFormat.SHORT, locale); sascha@2787: sascha@2993: if (debug) { sascha@2993: log.debug("DeltaWTsKMs: " + deltaWTsKMs.size()); sascha@2993: } sascha@2993: sascha@2787: for (DeltaWTsKM deltaWTsKM: deltaWTsKMs) { sascha@2787: List dkms = deltaWTsKM.getKms(); sascha@2993: if (debug) { sascha@2993: log.debug("DeltaWTsKM.KM: " + dkms.size()); sascha@2993: } sascha@2787: for (DeltaWTsKM.KM dkm: dkms) { sascha@2787: double km = dkm.getKm(); sascha@2787: String kmS = kmF.format(km); sascha@2787: List deltaWTs = dkm.getDeltaWTs(); sascha@2993: if (debug) { sascha@2993: log.debug("deltaWTs: " + deltaWTs.size()); sascha@2993: } sascha@2787: for (DeltaWT dwt: deltaWTs) { sascha@2787: double deltaW = dwt.getDeltaW(); sascha@2787: Date date = dwt.getDate(); sascha@2787: String desc = dwt.getDescription(); sascha@2787: sascha@2787: String deltaWS = dwF.format(deltaW); sascha@2787: String dateS = dF.format(date); sascha@2787: sascha@2787: writer.writeNext(new String[] { sascha@2787: kmS, sascha@2787: deltaWS, sascha@2787: dateS, sascha@2787: desc != null ? desc : "" }); sascha@2787: } sascha@2787: } sascha@2787: } sascha@2993: writer.flush(); sascha@2787: } sascha@2787: sascha@2787: sascha@2787: protected NumberFormat getKMFormatter() { sascha@2787: return Formatter.getFixDeltaWKM(context); sascha@2787: } sascha@2787: sascha@2787: protected NumberFormat getDeltaWFormatter() { sascha@2787: return Formatter.getFixDeltaWDeltaW(context); sascha@2787: } sascha@2787: sascha@2787: protected void writeCSVHeader(CSVWriter writer) { sascha@2787: log.debug("DeltaWtExporter.writeCSVHeader"); sascha@2787: sascha@2787: writer.writeNext(new String[] { sascha@2787: msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER), sascha@2787: msg(CSV_DELTA_W_HEADER, DEFAULT_CSV_DELTA_W_HEADER), sascha@2787: msg(CSV_T_HEADER, DEFAULT_CSV_T_HEADER), sascha@2787: msg(CSV_T_DESC_HEADER, DEFAULT_CSV_T_DESC_HEADER) sascha@2787: }); sascha@2787: } sascha@2787: sascha@2787: @Override sascha@2787: protected void writePDF(OutputStream out) { sascha@2787: // TODO: Implement me! sascha@2787: } sascha@2787: } sascha@2787: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :