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: }