Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCalculationExportableResult.java @ 9150:23945061daec
gigantic refactoring: exporter, result, results
to support multiple jaspers -> collisions
author | gernotbelger |
---|---|
date | Thu, 14 Jun 2018 16:56:31 +0200 |
parents | |
children | 9b2e46090099 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCalculationExportableResult.java Thu Jun 14 16:56:31 2018 +0200 @@ -0,0 +1,79 @@ +/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde + * Software engineering by + * Björnsen Beratende Ingenieure GmbH + * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt + * + * This file is Free Software under the GNU AGPL (>=v3) + * and comes with ABSOLUTELY NO WARRANTY! Check out the + * documentation coming with Dive4Elements River for details. + */ +package org.dive4elements.river.artifacts.common; + +import java.util.Collection; + +import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; + +import net.sf.jasperreports.engine.JRException; + +/** + * @author Domenico Nardi Tironi + */ +public abstract class AbstractCalculationExportableResult<RESULTS extends AbstractCalculationResults> extends AbstractCalculationResult { + + private static final long serialVersionUID = 1L; + + public AbstractCalculationExportableResult(final String label, final Collection<ResultRow> rows) { + super(label, rows); + } + + public abstract void writeCSVHeader(ExportContextCSV exportContextCSV, final RESULTS results, final RiverInfo river); + + public final void writeCsv(final ExportContextCSV exportContextCSV, final RESULTS results) { + + writeCSVResultMetadata(exportContextCSV, results); + // wenn resultsmetadata null sind!? keine neue zeile + // writer.writeNext(new String[] { "" }); // break line in den Implementationen, + // weil es sein kann, dass KEINE ResultMetadata geschrieben werden; dann wäre eine Leerzeile überflüssig + + /* now the value rows */ + final Collection<ResultRow> rows = getRows(); + for (final ResultRow row : rows) + writeCSVRow(exportContextCSV, results, row); + } + + protected abstract void writeCSVResultMetadata(final ExportContextCSV exportContextCSV, final RESULTS results); + + protected void writeCSVRow(final ExportContextCSV exportContextCSV, final RESULTS results, final ResultRow row) { + final String[] formattedRow = formatCSVRow(exportContextCSV, results, row); + exportContextCSV.writeCSVLine(formattedRow); + + } + + protected abstract String[] formatCSVRow(ExportContextCSV exportContextCSV, final RESULTS results, final ResultRow row); + + protected abstract String[] formatPDFRow(ExportContextCSV exportContextPDF, RESULTS results, ResultRow row); + + public JasperDesigner addReport(final ExportContextCSV exportContextPDF, final RESULTS results, final JasperReporter reporter, + final MetaAndTableJRDataSource source) throws JRException { + + final JasperDesigner design = reporter.addReport(getJasperFile(), source); + addJRTableHeader(exportContextPDF, source, results); + addJRTableData(exportContextPDF, source, results); + return design; + } + + protected abstract String getJasperFile(); + + protected abstract void addJRTableHeader(ExportContextCSV exportContextPDF, MetaAndTableJRDataSource source, RESULTS results); + + private void addJRTableData(final ExportContextCSV exportContextPDF, final MetaAndTableJRDataSource source, final RESULTS results) { + + final Collection<ResultRow> rows = getRows(); + + for (final ResultRow row : rows) { + + final String[] formattedRow = formatPDFRow(exportContextPDF, results, row); + source.addData(formattedRow); + } + } +} \ No newline at end of file