gernotbelger@8996: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9150: * Software engineering by gernotbelger@9150: * Björnsen Beratende Ingenieure GmbH gernotbelger@8996: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8996: * gernotbelger@8996: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8996: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8996: * documentation coming with Dive4Elements River for details. gernotbelger@8996: */ gernotbelger@8996: package org.dive4elements.river.artifacts.uinfo.inundationduration; gernotbelger@8996: gernotbelger@9150: import java.util.ArrayList; gernotbelger@8996: import java.util.Collection; gernotbelger@8996: gernotbelger@9150: import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult; gernotbelger@9150: import org.dive4elements.river.artifacts.common.ExportContextCSV; gernotbelger@9150: import org.dive4elements.river.artifacts.common.GeneralResultType; gernotbelger@9150: import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource; gernotbelger@8996: 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@8996: import org.dive4elements.river.artifacts.sinfo.util.WstInfo; gernotbelger@8996: gernotbelger@8996: /** gernotbelger@8996: * @author Domenico Nardi Tironi gernotbelger@8996: */ gernotbelger@9150: final class InundationDurationCalculationResult extends AbstractCalculationExportableResult { gernotbelger@8996: gernotbelger@8996: private static final long serialVersionUID = 1L; gernotbelger@9150: private static final String JASPER_FILE = "/jasper/templates/uinfo.inundationduration.jrxml"; gernotbelger@8996: gernotbelger@9150: public InundationDurationCalculationResult(final String label, final WstInfo wst, final Collection rows) { gernotbelger@9150: super(label, rows); gernotbelger@8996: } gernotbelger@9150: gernotbelger@9150: @Override gernotbelger@9150: public void writeCSVHeader(final ExportContextCSV exportContextCSV, final InundationDurationCalculationResults results, final RiverInfo river) { gernotbelger@9150: gernotbelger@9150: final Collection header = new ArrayList<>(11); gernotbelger@9150: gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(GeneralResultType.station)); gernotbelger@9150: header.add(exportContextCSV.msgUnitCSV(SInfoResultType.flowdepth)); gernotbelger@9150: gernotbelger@9150: header.add(exportContextCSV.msgUnitCSV(SInfoResultType.waterlevel, river.getWstUnit())); gernotbelger@9150: header.add(exportContextCSV.msgUnitCSV(SInfoResultType.discharge)); gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(SInfoResultType.waterlevelLabel)); gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(SInfoResultType.gaugeLabel)); gernotbelger@9150: header.add(exportContextCSV.msgUnitCSV(SInfoResultType.meanBedHeight, river.getWstUnit())); gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(SInfoResultType.soundingLabel)); gernotbelger@9150: header.add(exportContextCSV.formatCsvHeader(SInfoResultType.location)); gernotbelger@9150: gernotbelger@9150: exportContextCSV.writeCSVLine(header.toArray(new String[header.size()])); gernotbelger@9150: gernotbelger@9150: } gernotbelger@9150: gernotbelger@9150: @Override gernotbelger@9150: protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV, final InundationDurationCalculationResults results) { gernotbelger@9150: // no Result metadata so far gernotbelger@9150: } gernotbelger@9150: gernotbelger@9150: @Override gernotbelger@9150: protected String[] formatCSVRow(final ExportContextCSV exportContextCSV, final InundationDurationCalculationResults results, final ResultRow row) { gernotbelger@9150: return formatRow(exportContextCSV, results, row); gernotbelger@9150: } gernotbelger@9150: gernotbelger@9150: @Override gernotbelger@9150: protected String[] formatPDFRow(final ExportContextCSV exportContextPDF, final InundationDurationCalculationResults results, final ResultRow row) { gernotbelger@9150: gernotbelger@9150: return formatRow(exportContextPDF, results, row); gernotbelger@9150: } gernotbelger@9150: gernotbelger@9150: @Override gernotbelger@9150: protected String getJasperFile() { gernotbelger@9150: gernotbelger@9150: return JASPER_FILE; gernotbelger@9150: } gernotbelger@9150: gernotbelger@9150: @Override gernotbelger@9150: protected void addJRTableHeader(final ExportContextCSV exportContextPDF, final MetaAndTableJRDataSource source, gernotbelger@9150: final InundationDurationCalculationResults results) { gernotbelger@9150: gernotbelger@9150: exportContextPDF.addJRMetadata(source, "station_header", GeneralResultType.station); gernotbelger@9150: } gernotbelger@9150: gernotbelger@9150: protected String[] formatRow(final ExportContextCSV context, final InundationDurationCalculationResults results, final ResultRow row) { gernotbelger@9150: gernotbelger@9150: final Collection lines = new ArrayList<>(11); gernotbelger@9150: gernotbelger@9150: lines.add(context.formatRowValue(row, GeneralResultType.station)); gernotbelger@9150: lines.add(context.formatRowValue(row, SInfoResultType.flowdepth)); gernotbelger@9150: gernotbelger@9150: lines.add(context.formatRowValue(row, SInfoResultType.waterlevel)); gernotbelger@9150: lines.add(context.formatRowValue(row, SInfoResultType.discharge)); gernotbelger@9150: lines.add(context.formatRowValue(row, SInfoResultType.waterlevelLabel)); gernotbelger@9150: lines.add(context.formatRowValue(row, SInfoResultType.gaugeLabel)); gernotbelger@9150: lines.add(context.formatRowValue(row, SInfoResultType.meanBedHeight)); gernotbelger@9150: lines.add(context.formatRowValue(row, SInfoResultType.soundingLabel)); gernotbelger@9150: lines.add(context.formatRowValue(row, SInfoResultType.location)); gernotbelger@9150: gernotbelger@9150: return lines.toArray(new String[lines.size()]); gernotbelger@9150: } gernotbelger@9150: gernotbelger@8996: }