gernotbelger@9145: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9145: * Software engineering by Intevation GmbH 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: gernotbelger@9145: package org.dive4elements.river.artifacts.sinfo.flood_duration; gernotbelger@9145: gernotbelger@9294: import java.util.List; gernotbelger@9294: gernotbelger@9150: import org.dive4elements.river.artifacts.common.AbstractCommonExporter; gernotbelger@9150: import org.dive4elements.river.artifacts.common.ExportContextCSV; gernotbelger@9195: import org.dive4elements.river.artifacts.common.ExportContextPDF; gernotbelger@9318: import org.dive4elements.river.artifacts.common.GeneralResultType; gernotbelger@9145: import org.dive4elements.river.artifacts.common.JasperDesigner; gernotbelger@9145: import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource; gernotbelger@9294: import org.dive4elements.river.artifacts.common.ResultRow; gernotbelger@9294: import org.dive4elements.river.artifacts.sinfo.common.SInfoI18NStrings; gernotbelger@9145: gernotbelger@9145: /** mschaefer@9202: * Generates different output formats (csv, pdf) of data that resulted from a flood duration computation. gernotbelger@9145: * gernotbelger@9145: * @author Ingo Weinzierl gernotbelger@9145: * @author Gernot Belger gernotbelger@9145: */ gernotbelger@9145: // REMARK: must be public because its registered in generators.xml gernotbelger@9195: gernotbelger@9195: public class FloodDurationExporter extends AbstractCommonExporter { gernotbelger@9145: gernotbelger@9145: @Override gernotbelger@9195: protected void writeCSVGlobalMetadata(final ExportContextCSV exportContext, final FloodDurationCalculationResults results) { gernotbelger@9195: exportContext.writeCSVGlobalMetadataDefaults(); gernotbelger@9294: gernotbelger@9294: exportContext.writeBlankLine(); gernotbelger@9294: gernotbelger@9294: final List resultList = results.getResults(); gernotbelger@9294: if (resultList.isEmpty()) gernotbelger@9294: return; gernotbelger@9294: gernotbelger@9294: final FloodDurationCalculationResult result = resultList.get(0); gernotbelger@9294: gernotbelger@9294: final int waterlevelCount = result.getWaterlevelCount(); gernotbelger@9294: if (waterlevelCount >= 1) { gernotbelger@9294: gernotbelger@9294: // "##METADATEN WASSERSPIEGELLAGE" gernotbelger@9294: exportContext.writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL); gernotbelger@9294: gernotbelger@9294: for (int i = 0; i < waterlevelCount; i++) { gernotbelger@9294: // "# Bezeichnung der Wasserspiegellage: " gernotbelger@9294: final String label = result.getWaterlevelLabel(i); gernotbelger@9294: exportContext.writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_NAME, String.format("%d: %s", i + 1, label)); gernotbelger@9294: } gernotbelger@9294: gernotbelger@9294: // "# Bezugspegel: " gernotbelger@9294: for (final ResultRow row : result.getRows()) { gernotbelger@9318: exportContext.writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_GAUGE, row.getValue(GeneralResultType.gaugeLabel)); gernotbelger@9294: break; gernotbelger@9294: } gernotbelger@9294: } gernotbelger@9145: } gernotbelger@9145: mschaefer@9176: @Override gernotbelger@9195: protected void writePDFGlobalMetadata(final ExportContextPDF exportContext, final MetaAndTableJRDataSource source) { gernotbelger@9195: exportContext.addJRMetaDataUSINFO(source); gernotbelger@9195: } mschaefer@9176: gernotbelger@9195: @Override gernotbelger@9195: protected void configureDesign(final FloodDurationCalculationResult result, final JasperDesigner design) { gernotbelger@9294: final int wlCount = result.getWaterlevelCount(); gernotbelger@9294: if (wlCount == 0 || wlCount == 2) { gernotbelger@9294: design.removeColumn("wOpt"); gernotbelger@9294: design.removeColumn("qOpt"); gernotbelger@9294: design.removeColumn("bezOpt"); gernotbelger@9294: design.removeColumn("durOpt"); mschaefer@9176: } mschaefer@9176: } gernotbelger@9145: }