Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhExporter.java @ 8948:a4f1ac81f26d
Work on SINFO-FlowDepthMinMax.
Also rework of result row stuff, in order to reduce abstraction, using result type concept
author | gernotbelger |
---|---|
date | Wed, 14 Mar 2018 14:10:32 +0100 |
parents | 5d5d482da3e9 |
children | 09e4a4909814 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhExporter.java Wed Mar 14 14:09:33 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TkhExporter.java Wed Mar 14 14:10:32 2018 +0100 @@ -12,12 +12,12 @@ import java.util.Collection; import org.apache.log4j.Logger; -import org.dive4elements.river.artifacts.sinfo.SInfoI18NStrings; import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter; +import org.dive4elements.river.artifacts.sinfo.common.SInfoResultRow; +import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource; import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; import org.dive4elements.river.artifacts.sinfo.util.WstInfo; -import org.dive4elements.river.utils.RiverUtils; import au.com.bytecode.opencsv.CSVWriter; @@ -27,7 +27,7 @@ * @author Gernot Belger */ // REMARK: must be public because its registered in generators.xml -public class TkhExporter extends AbstractSInfoExporter<TkhResultRow, TkhCalculationResult, TkhCalculationResults> { +public class TkhExporter extends AbstractSInfoExporter<TkhCalculationResult, TkhCalculationResults> { private static enum ExportMode { pdf, csv @@ -38,12 +38,7 @@ private static final String CSV_META_CALCULATION_FORMULA = "sinfo.export.tkh.calculation.formula"; - private static final String CSV_TKH_HEADER = "sinfo.export.tkh.csv.header.tkh"; - - private static final String CSV_TKHKIND_HEADER = "sinfo.export.tkh.csv.header.tkhkind"; - - private static final String PREFIX_TKH_KIND = "sinfo.export.tkh.soilkind."; - + // FIXME: use pgetPdfHeader instead of getCsvHeader private static final String CSV_MEAN_BED_HEIGHT_HEADER_SHORT = "sinfo.export.flow_depth.csv.header.mean_bed_height.short"; private static final String JASPER_FILE = "/jasper/sinfo.flowdepth.jasper"; @@ -75,20 +70,19 @@ final Collection<String> header = new ArrayList<>(11); - header.add(msg(SInfoI18NStrings.CSV_KM_HEADER)); - header.add(msgUnit(CSV_TKH_HEADER, SInfoI18NStrings.UNIT_CM)); - header.add(msg(CSV_TKHKIND_HEADER)); - header.add(msgUnit(SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER, river.getWstUnit())); - - header.add(msgUnit(SInfoI18NStrings.CSV_WATERLEVEL_HEADER, river.getWstUnit())); - header.add(msgUnit(SInfoI18NStrings.CSV_DISCHARGE_HEADER, SInfoI18NStrings.UNIT_CUBIC_M)); + header.add(msg(SInfoResultType.station.getCsvHeader())); + header.add(msgUnit(SInfoResultType.tkh.getCsvHeader(), SInfoResultType.tkh.getUnit())); + header.add(msg(SInfoResultType.soilkind.getCsvHeader())); + header.add(msgUnit(SInfoResultType.meanBedHeight.getCsvHeader(), river.getWstUnit())); + header.add(msgUnit(SInfoResultType.waterlevel.getCsvHeader(), river.getWstUnit())); + header.add(msgUnit(SInfoResultType.discharge.getCsvHeader(), SInfoResultType.discharge.getUnit())); final String descriptionHeader = results.getDescriptionHeader(); if (descriptionHeader != null) header.add(msg(descriptionHeader)); - header.add(msg(SInfoI18NStrings.CSV_GAUGE_HEADER)); - header.add(msg(SInfoI18NStrings.CSV_LOCATION_HEADER)); + header.add(msg(SInfoResultType.gaugeLabel.getCsvHeader())); + header.add(msg(SInfoResultType.location.getCsvHeader())); writer.writeNext(header.toArray(new String[header.size()])); } @@ -100,13 +94,13 @@ final WstInfo wst = result.getWst(); super.writeCSVWaterlevelMetadata(writer, wst); - // TODO: + // FIXME: // "# W/Pegel [cm]: " (nur bei Eingabe des Wasserstands am Pegel) // "# Q (m³/s): " (nur bei Eingabe des Durchflusses) } @Override - protected String[] formatCSVRow(final TkhCalculationResults results, final TkhResultRow row) { + protected String[] formatCSVRow(final TkhCalculationResults results, final TkhCalculationResult result, final SInfoResultRow row) { return formatRow(results, row, ExportMode.csv); } @@ -117,40 +111,23 @@ * * @param useTkh */ - private String[] formatRow(final TkhCalculationResults results, final TkhResultRow row, final ExportMode mode) { + private String[] formatRow(final TkhCalculationResults results, final SInfoResultRow row, final ExportMode mode) { final Collection<String> lines = new ArrayList<>(11); - // Fluss-km - lines.add(getKmFormatter().format(row.getStation())); - - // TKH [cm] - lines.add(getTkhFormatter().format(row.getTkh())); - - // Einteilung der Gewässersohle (starr/mobil) - lines.add(msg(PREFIX_TKH_KIND + row.getTkhKind().name())); + lines.add(row.exportValue(this.context, SInfoResultType.station)); + lines.add(row.exportValue(this.context, SInfoResultType.tkh)); + lines.add(row.exportValue(this.context, SInfoResultType.soilkind)); + lines.add(row.exportValue(this.context, SInfoResultType.meanBedHeight)); + lines.add(row.exportValue(this.context, SInfoResultType.waterlevel)); + lines.add(row.exportValue(this.context, SInfoResultType.discharge)); - // Mittlere Sohlhöhe [NN + m] - lines.add(getMeanBedHeighFormatter().format(row.getMeanBedHeight())); - - // Wasserstand [NN + m] - lines.add(getW2Formatter().format(row.getWaterlevel())); - - // Q [m³/s] - final double discharge = row.getDischarge(); - final double roundedDischarge = RiverUtils.roundQ(discharge); - lines.add(getQFormatter().format(roundedDischarge)); - - // Bezeichnung // REMARK: always export this column in pdf-mode, because WInfo also does it (no need for two jasper-templates). if (results.getDescriptionHeader() != null || mode == ExportMode.pdf) - lines.add(row.getWaterlevelLabel()); + lines.add(row.exportValue(this.context, SInfoResultType.waterlevelLabel)); - // Bezugspegel - lines.add(row.getGauge()); - - // Lage - lines.add(row.getLocation()); + lines.add(row.exportValue(this.context, SInfoResultType.gaugeLabel)); + lines.add(row.exportValue(this.context, SInfoResultType.location)); return lines.toArray(new String[lines.size()]); } @@ -167,24 +144,24 @@ super.addJRMetaDataDefaults(source, results); /* column headings */ - source.addMetaData("station_header", msg(SInfoI18NStrings.CSV_KM_HEADER)); - source.addMetaData("tkh_header", msg(CSV_TKH_HEADER)); - source.addMetaData("bedheight_header", msg(CSV_MEAN_BED_HEIGHT_HEADER_SHORT)); - source.addMetaData("waterlevel_header", msg(SInfoI18NStrings.CSV_WATERLEVEL_HEADER)); - source.addMetaData("discharge_header", msg(SInfoI18NStrings.CSV_DISCHARGE_HEADER)); + source.addMetaData("station_header", msg( SInfoResultType.station.getCsvHeader())); + source.addMetaData("tkh_header", msg(SInfoResultType.tkh.getCsvHeader())); + source.addMetaData("bedheight_header", msg(SInfoResultType.meanBedHeight.getCsvHeader())); + source.addMetaData("waterlevel_header", msg(SInfoResultType.waterlevel.getCsvHeader())); + source.addMetaData("discharge_header", msg(SInfoResultType.discharge.getCsvHeader())); // REMARK: actually the column makes no sense if description header is null. But (software symmetry...) WINFO also // writes an empty column into the pdf in that case (most probably to avoid the need for two jasper templates). final String descriptionHeader = results.getDescriptionHeader(); - final String waterlevelNameHeader = descriptionHeader == null ? msg(SInfoI18NStrings.CSV_LABEL_HEADER) : descriptionHeader; + final String waterlevelNameHeader = descriptionHeader == null ? msg(SInfoResultType.waterlevelLabel.getCsvHeader()) : descriptionHeader; source.addMetaData("waterlevel_name_header", waterlevelNameHeader); - source.addMetaData("gauge_header", msg(SInfoI18NStrings.CSV_GAUGE_HEADER)); - source.addMetaData("location_header", msg(SInfoI18NStrings.CSV_LOCATION_HEADER)); + source.addMetaData("gauge_header", msg(SInfoResultType.gaugeLabel.getCsvHeader())); + source.addMetaData("location_header", msg(SInfoResultType.location.getCsvHeader())); } @Override - protected String[] formatPDFRow(final TkhCalculationResults results, final TkhResultRow row) { + protected String[] formatPDFRow(final TkhCalculationResults results, final SInfoResultRow row) { return formatRow(results, row, ExportMode.pdf); } } \ No newline at end of file