gernotbelger@9150: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9150: * Software engineering by gernotbelger@9150: * Björnsen Beratende Ingenieure GmbH gernotbelger@9150: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9150: * gernotbelger@9150: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9150: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9150: * documentation coming with Dive4Elements River for details. gernotbelger@9150: */ gernotbelger@9150: package org.dive4elements.river.artifacts.sinfo.collision; gernotbelger@9150: gernotbelger@9150: import java.io.OutputStream; gernotbelger@9150: 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@9150: import org.dive4elements.river.artifacts.common.JasperReporter; gernotbelger@9150: import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource; mschaefer@9157: import org.dive4elements.river.artifacts.sinfo.common.SInfoI18NStrings; gernotbelger@9150: import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; gernotbelger@9150: gernotbelger@9150: import au.com.bytecode.opencsv.CSVWriter; gernotbelger@9150: import net.sf.jasperreports.engine.JRException; gernotbelger@9150: gernotbelger@9150: /** gernotbelger@9150: * @author Gernot Belger gernotbelger@9150: */ gernotbelger@9150: public final class CollisionExporter extends AbstractCommonExporter { gernotbelger@9150: gernotbelger@9150: @Override gernotbelger@9150: protected void doWriteCSVData(final CSVWriter writer, final CollisionCalculationResults 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: mschaefer@9157: exportContextCSV.writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_YEARS, results.getYearsHeader()); 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@9150: @Override gernotbelger@9150: protected void doWritePdf(final OutputStream out, final CollisionCalculationResults results) { gernotbelger@9150: // TODO: Move to super gernotbelger@9150: try { gernotbelger@9150: final ExportContextCSV exportContextCSV = new ExportContextCSV(this.context, null); gernotbelger@9150: gernotbelger@9150: 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@9150: reporter.exportPDF(out); gernotbelger@9150: } gernotbelger@9150: catch (final JRException je) { gernotbelger@9150: getLog().warn("Error generating PDF Report!", je); gernotbelger@9150: } gernotbelger@9150: } gernotbelger@9150: }