gernotbelger@8946: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
gernotbelger@8946: * Software engineering by Intevation GmbH
gernotbelger@8946: *
gernotbelger@8946: * This file is Free Software under the GNU AGPL (>=v3)
gernotbelger@8946: * and comes with ABSOLUTELY NO WARRANTY! Check out the
gernotbelger@8946: * documentation coming with Dive4Elements River for details.
gernotbelger@8946: */
gernotbelger@8946:
gernotbelger@8946: package org.dive4elements.river.artifacts.sinfo.flowdepthminmax;
gernotbelger@8946:
gernotbelger@9006: import java.io.OutputStream;
gernotbelger@8946:
gernotbelger@9150: import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult;
gernotbelger@9150: import org.dive4elements.river.artifacts.common.AbstractCommonExporter;
gernotbelger@9150: import org.dive4elements.river.artifacts.common.ExportContextCSV;
gernotbelger@9006: import org.dive4elements.river.artifacts.common.JasperReporter;
gernotbelger@9006: import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource;
gernotbelger@8946: import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
gernotbelger@8946:
gernotbelger@8946: import au.com.bytecode.opencsv.CSVWriter;
gernotbelger@9006: import net.sf.jasperreports.engine.JRException;
gernotbelger@8946:
gernotbelger@8946: /**
gernotbelger@8946: * Generates different output formats (csv, pdf) of data that resulted from a flow depths computation.
gernotbelger@8946: *
gernotbelger@8946: * @author Ingo Weinzierl
gernotbelger@8946: * @author Gernot Belger
gernotbelger@8946: */
gernotbelger@8946: // REMARK: must be public because its registered in generators.xml
gernotbelger@9150: public class FlowDepthMinMaxExporter extends AbstractCommonExporter {
gernotbelger@8946:
gernotbelger@8946: @Override
gernotbelger@9150: protected void doWritePdf(final OutputStream out, final FlowDepthMinMaxCalculationResults results) {
gernotbelger@9150: // TODO: Move to super
gernotbelger@9006: try {
gernotbelger@9150: final ExportContextCSV exportContextCSV = new ExportContextCSV(this.context, null);
gernotbelger@9006:
gernotbelger@9006: final JasperReporter reporter = new JasperReporter();
gernotbelger@9150:
gernotbelger@9150: for (final AbstractCalculationExportableResult result : results.getResults()) {
gernotbelger@9150: final MetaAndTableJRDataSource source = new MetaAndTableJRDataSource();
gernotbelger@9150: getHelper().addJRMetaDataUSINFO(source, results);
gernotbelger@9150:
gernotbelger@9150: result.addReport(exportContextCSV, results, reporter, source);
gernotbelger@9150: }
gernotbelger@9150:
gernotbelger@9006: reporter.exportPDF(out);
gernotbelger@9006: }
gernotbelger@9006: catch (final JRException je) {
gernotbelger@9006: getLog().warn("Error generating PDF Report!", je);
gernotbelger@9006: }
gernotbelger@9006: }
gernotbelger@9006:
gernotbelger@9150: @Override
gernotbelger@9150: protected void doWriteCSVData(final CSVWriter writer, final FlowDepthMinMaxCalculationResults results) {
gernotbelger@9150: // TODO: Diesen Ablauf in super?
gernotbelger@9150:
gernotbelger@9150: // TODO: move results into context?
gernotbelger@9150: final ExportContextCSV exportContextCSV = new ExportContextCSV(this.context, writer);
gernotbelger@9150:
gernotbelger@9150: getLog().info("writeCSVData");
gernotbelger@9150:
gernotbelger@9150: /* write as csv */
gernotbelger@9150: exportContextCSV.writeCSVGlobalMetadataDefaults(results); // ggf auslagern innerhalb dieser Klasse
gernotbelger@9150:
gernotbelger@9150: // writer.writeNext(new String[] { "" }); // break line HERE to avoid redundance
gernotbelger@9150:
gernotbelger@9150: final RiverInfo river = results.getRiver();
gernotbelger@9150:
gernotbelger@9150: final Class> lastResultType = null;
gernotbelger@9150:
gernotbelger@9150: for (final AbstractCalculationExportableResult result : results.getResults()) {
gernotbelger@9150:
gernotbelger@9150: final Class> resultType = result.getClass();
gernotbelger@9150: if (lastResultType == null || lastResultType != resultType) {
gernotbelger@9150: exportContextCSV.writeBlankLine();
gernotbelger@9150: result.writeCSVHeader(exportContextCSV, results, river);
gernotbelger@9150: exportContextCSV.writeBlankLine();
gernotbelger@9150: } else
gernotbelger@9150: exportContextCSV.writeCSVLine(new String[] { "#" });
gernotbelger@9150:
gernotbelger@9150: result.writeCsv(exportContextCSV, results);
gernotbelger@9150: }
gernotbelger@9150:
gernotbelger@9150: }
gernotbelger@8946: }