gernotbelger@9145: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9145: * Software engineering by gernotbelger@9145: * Björnsen Beratende Ingenieure GmbH gernotbelger@9145: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9145: * gernotbelger@9145: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9145: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9145: * documentation coming with Dive4Elements River for details. gernotbelger@9145: */ gernotbelger@9145: package org.dive4elements.river.artifacts.sinfo.flood_duration; gernotbelger@9145: gernotbelger@9150: import java.util.ArrayList; gernotbelger@9145: import java.util.Collection; gernotbelger@9145: mschaefer@9176: import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult; gernotbelger@9150: import org.dive4elements.river.artifacts.common.ExportContextCSV; gernotbelger@9195: import org.dive4elements.river.artifacts.common.ExportContextPDF; gernotbelger@9150: import org.dive4elements.river.artifacts.common.GeneralResultType; gernotbelger@9195: import org.dive4elements.river.artifacts.common.IExportContext; gernotbelger@9150: import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource; gernotbelger@9145: import org.dive4elements.river.artifacts.common.ResultRow; gernotbelger@9150: import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; gernotbelger@9150: import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; gernotbelger@9145: gernotbelger@9145: /** mschaefer@9176: * Contains the result of a {@link FloodDurationCalculation}. gernotbelger@9145: * gernotbelger@9145: * @author Gernot Belger gernotbelger@9145: */ gernotbelger@9195: final class FloodDurationCalculationResult extends AbstractCalculationExportableResult { gernotbelger@9145: gernotbelger@9145: private static final long serialVersionUID = 1L; gernotbelger@9150: mschaefer@9176: private static final String JASPER_FILE = "/jasper/templates/sinfo.floodduration.jrxml"; mschaefer@9176: mschaefer@9176: public FloodDurationCalculationResult(final String label, final Collection rows) { mschaefer@9176: super(label, rows); gernotbelger@9150: } gernotbelger@9145: mschaefer@9176: @Override gernotbelger@9195: protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV) { mschaefer@9176: // TODO Metadaten der Wasserspiegellage(n) falls gewählt mschaefer@9176: // exportContextCSV.writeCSVWaterlevelMetadata(this.wstInfo); mschaefer@9176: // exportContextCSV.writeBlankLine(); mschaefer@9176: // writer.writeNext(new String[] { "" }); // break line mschaefer@9176: } mschaefer@9176: mschaefer@9176: @Override mschaefer@9176: protected String getJasperFile() { mschaefer@9176: // TODO Variante mit Wasserspiegellage(n) mschaefer@9176: return JASPER_FILE; mschaefer@9176: } mschaefer@9176: gernotbelger@9195: protected String[] formatRow(final IExportContext exportContextCSV, final ResultRow row) { mschaefer@9176: mschaefer@9176: final Collection lines = new ArrayList<>(10); mschaefer@9176: mschaefer@9176: lines.add(exportContextCSV.formatRowValue(row, GeneralResultType.station)); mschaefer@9176: lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.riverside)); mschaefer@9176: lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.floodDuration)); mschaefer@9176: lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.floodDischarge)); mschaefer@9176: lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.infrastructureHeight)); mschaefer@9176: lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.infrastructuretype)); mschaefer@9176: mschaefer@9176: // TODO Wasserspiegellage(n) und Dauerzahlen falls gewählt mschaefer@9176: mschaefer@9176: lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.gaugeLabel)); mschaefer@9176: lines.add(exportContextCSV.formatRowValue(row, SInfoResultType.location)); mschaefer@9176: mschaefer@9176: return lines.toArray(new String[lines.size()]); gernotbelger@9150: } gernotbelger@9150: gernotbelger@9150: @Override gernotbelger@9195: public void writeCSVHeader(final ExportContextCSV exportContextCSV, final RiverInfo river) { gernotbelger@9150: mschaefer@9176: final Collection header = new ArrayList<>(20); gernotbelger@9150: gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(GeneralResultType.station)); gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(SInfoResultType.riverside)); mschaefer@9176: header.add(exportContextCSV.formatCsvHeader(SInfoResultType.floodDuration)); mschaefer@9176: header.add(exportContextCSV.msgUnitCSV(SInfoResultType.floodDischarge, SInfoResultType.floodDischarge.getUnit())); mschaefer@9176: header.add(exportContextCSV.msgUnitCSV(SInfoResultType.infrastructureHeight, SInfoResultType.infrastructureHeight.getUnit())); gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(SInfoResultType.infrastructuretype)); gernotbelger@9150: mschaefer@9176: // TODO Je vier Spalten der bis zu drei Wasserspiegellagen gernotbelger@9150: gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(SInfoResultType.gaugeLabel)); gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(SInfoResultType.location)); gernotbelger@9150: gernotbelger@9150: exportContextCSV.writeCSVLine(header.toArray(new String[header.size()])); gernotbelger@9145: gernotbelger@9145: } gernotbelger@9145: gernotbelger@9150: @Override gernotbelger@9195: protected String[] formatCSVRow(final ExportContextCSV exportContextCSV, final ResultRow row) { gernotbelger@9150: gernotbelger@9195: return this.formatRow(exportContextCSV, row); gernotbelger@9150: } gernotbelger@9150: gernotbelger@9150: @Override gernotbelger@9195: protected String[] formatPDFRow(final ExportContextPDF exportContextPDF, final ResultRow row) { gernotbelger@9150: gernotbelger@9195: return this.formatRow(exportContextPDF, row); gernotbelger@9145: } gernotbelger@9145: mschaefer@9176: @Override gernotbelger@9195: protected void addJRTableHeader(final ExportContextPDF exportContextPDF, final MetaAndTableJRDataSource source) { gernotbelger@9150: mschaefer@9176: /* column headings */ mschaefer@9176: exportContextPDF.addJRMetadata(source, "station_header", GeneralResultType.station); mschaefer@9176: exportContextPDF.addJRMetadata(source, "riverside_header", SInfoResultType.riverside); mschaefer@9176: exportContextPDF.addJRMetadata(source, "inundationduration_header", SInfoResultType.floodDuration); mschaefer@9176: exportContextPDF.addJRMetadata(source, "inundationduration_q_header", SInfoResultType.floodDischarge); mschaefer@9176: exportContextPDF.addJRMetadata(source, "infrastructure_height_header", SInfoResultType.infrastructureHeightFloodDur); mschaefer@9176: exportContextPDF.addJRMetadata(source, "infrastructure_type_header", SInfoResultType.infrastructuretype); gernotbelger@9150: mschaefer@9176: // TODO Je vier Spalten der bis zu drei Wasserspiegellagen gernotbelger@9150: mschaefer@9176: exportContextPDF.addJRMetadata(source, "gauge_header", SInfoResultType.gaugeLabel); mschaefer@9176: exportContextPDF.addJRMetadata(source, "location_header", SInfoResultType.location); gernotbelger@9150: } gernotbelger@9145: }