Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.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/flowdepth/FlowDepthExporter.java Wed Mar 14 14:09:33 2018 +0100 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java Wed Mar 14 14:10:32 2018 +0100 @@ -11,15 +11,14 @@ import java.util.ArrayList; import java.util.Collection; -import org.apache.commons.lang.StringUtils; 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.BedHeightInfo; 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; @@ -30,18 +29,12 @@ * @author Gernot Belger */ // REMARK: must be public because its registered in generators.xml -public class FlowDepthExporter extends AbstractSInfoExporter<FlowDepthRow, FlowDepthCalculationResult, FlowDepthCalculationResults> { +public class FlowDepthExporter extends AbstractSInfoExporter<FlowDepthCalculationResult, FlowDepthCalculationResults> { /** The log used in this exporter. */ private static Logger log = Logger.getLogger(FlowDepthExporter.class); - private static final String CSV_FLOWDEPTHMINMAX_HEADER = "sinfo.export.flow_depth_minmax.csv.header.flowdepthminmax"; - - private static final String CSV_FLOWDEPTHTKHMINMAX_HEADER = "sinfo.export.flow_depth_minmax.csv.header.flowdepthTkh"; - - private static final String CSV_TKH_HEADER = "sinfo.export.flow_depth.csv.header.tkh"; - - private static final String JASPER_FILE = "/jasper/sinfo.flowdepthminmax.jasper"; + private static final String JASPER_FILE = "/jasper/sinfo.flowdepth.jasper"; @Override protected Logger getLog() { @@ -74,34 +67,34 @@ * @param river * @param useTkh */ - @Override protected void writeCSVHeader(final CSVWriter writer, final FlowDepthCalculationResults results, final RiverInfo river) { log.info("FlowDepthExporter.writeCSVHeader"); final Collection<String> header = new ArrayList<>(11); - header.add(msg(SInfoI18NStrings.CSV_KM_HEADER)); - header.add(msgUnit(CSV_FLOWDEPTHMINMAX_HEADER, SInfoI18NStrings.UNIT_M)); - if (getData().isUseTkh()) { - header.add(msgUnit(CSV_FLOWDEPTHTKHMINMAX_HEADER, SInfoI18NStrings.UNIT_M)); - header.add(msgUnit(CSV_TKH_HEADER, SInfoI18NStrings.UNIT_CM)); + header.add(msg(SInfoResultType.station.getCsvHeader())); + header.add(msgUnit(SInfoResultType.flowdepth.getCsvHeader(), SInfoResultType.flowdepth.getUnit())); + + if (results.isUseTkh()) { + header.add(msgUnit(SInfoResultType.flowdepthtkh.getCsvHeader(), SInfoResultType.flowdepthtkh.getUnit())); + header.add(msgUnit(SInfoResultType.tkh.getCsvHeader(), SInfoResultType.tkh.getUnit())); } - header.add(msgUnit(SInfoI18NStrings.CSV_WATERLEVEL_HEADER, river.getWstUnit())); - header.add(msgUnit(SInfoI18NStrings.CSV_DISCHARGE_HEADER, SInfoI18NStrings.UNIT_CUBIC_M)); - header.add(msg(SInfoI18NStrings.CSV_LABEL_HEADER)); - header.add(msg(SInfoI18NStrings.CSV_GAUGE_HEADER)); - header.add(msgUnit(SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER, river.getWstUnit())); - header.add(msg(SInfoI18NStrings.CSV_SOUNDING_HEADER)); - header.add(msg(SInfoI18NStrings.CSV_LOCATION_HEADER)); + header.add(msgUnit(SInfoResultType.waterlevel.getCsvHeader(), river.getWstUnit())); + header.add(msgUnit(SInfoResultType.discharge.getCsvHeader(), SInfoResultType.discharge.getUnit())); + header.add(msg(SInfoResultType.waterlevelLabel.getCsvHeader())); + header.add(msg(SInfoResultType.gaugeLabel.getCsvHeader())); + header.add(msgUnit(SInfoResultType.meanBedHeight.getCsvHeader(), river.getWstUnit())); + header.add(msg(SInfoResultType.soundingLabel.getCsvHeader())); + header.add(msg(SInfoResultType.location.getCsvHeader())); writer.writeNext(header.toArray(new String[header.size()])); } @Override - protected String[] formatCSVRow(final FlowDepthCalculationResults results, final FlowDepthRow row) { - return formatFlowDepthRow(row); + protected String[] formatCSVRow(final FlowDepthCalculationResults results, final FlowDepthCalculationResult result, final SInfoResultRow row) { + return formatRow(row); } /** @@ -109,50 +102,25 @@ * * @param useTkh */ - private String[] formatFlowDepthRow(final FlowDepthRow row) { + private String[] formatRow(final SInfoResultRow row) { final Collection<String> lines = new ArrayList<>(11); - // Fluss-km - lines.add(getKmFormatter().format(row.getStation())); - - // Fließtiefe [m] - lines.add(getFlowDepthFormatter().format(row.getFlowDepth())); + lines.add(row.exportValue(this.context, SInfoResultType.station)); + lines.add(row.exportValue(this.context, SInfoResultType.flowdepth)); if (getData().isUseTkh()) { - // Fließtiefe mit TKH [m] - lines.add(getFlowDepthFormatter().format(row.getFlowDepthWithTkh())); - - // TKH [cm] - lines.add(getTkhFormatter().format(row.getTkh())); + lines.add(row.exportValue(this.context, SInfoResultType.flowdepthtkh)); + lines.add(row.exportValue(this.context, SInfoResultType.tkh)); } - // Wasserstand [NN + m] - lines.add(getW2Formatter().format(row.getWaterlevel())); - - // Q [m³/s] - final double discharge = row.getDischarge(); - if (Double.isNaN(discharge)) - lines.add(StringUtils.EMPTY); - else { - final double roundedDischarge = RiverUtils.roundQ(discharge); - lines.add(getQFormatter().format(roundedDischarge)); - } - - // Bezeichnung - lines.add(row.getWaterlevelLabel()); - - // Bezugspegel - lines.add(row.getGauge()); - - // Mittlere Sohlhöhe [NN + m] - lines.add(getMeanBedHeighFormatter().format(row.getMeanBedHeight())); - - // Peilung/Epoche - lines.add(row.getSoundageLabel()); - - // Lage - lines.add(row.getLocation()); + lines.add(row.exportValue(this.context, SInfoResultType.waterlevel)); + lines.add(row.exportValue(this.context, SInfoResultType.discharge)); + lines.add(row.exportValue(this.context, SInfoResultType.waterlevelLabel)); + lines.add(row.exportValue(this.context, SInfoResultType.gaugeLabel)); + lines.add(row.exportValue(this.context, SInfoResultType.meanBedHeight)); + lines.add(row.exportValue(this.context, SInfoResultType.soundingLabel)); + lines.add(row.exportValue(this.context, SInfoResultType.location)); return lines.toArray(new String[lines.size()]); } @@ -169,21 +137,22 @@ super.addJRMetaDataDefaults(source, results); /* column headings */ - source.addMetaData("station_header", msg(SInfoI18NStrings.CSV_KM_HEADER)); - source.addMetaData("flowdepth_header", msg(CSV_FLOWDEPTHMINMAX_HEADER)); - source.addMetaData("flowdepth_tkh_header", msg(CSV_FLOWDEPTHTKHMINMAX_HEADER)); - source.addMetaData("tkh_header", msg(CSV_TKH_HEADER)); - source.addMetaData("waterlevel_header", msg(SInfoI18NStrings.CSV_WATERLEVEL_HEADER)); - source.addMetaData("discharge_header", msg(SInfoI18NStrings.CSV_DISCHARGE_HEADER)); - source.addMetaData("waterlevel_name_header", msg(SInfoI18NStrings.CSV_LABEL_HEADER)); - source.addMetaData("gauge_header", msg(SInfoI18NStrings.CSV_GAUGE_HEADER)); - source.addMetaData("bedheight_header", msg(SInfoI18NStrings.CSV_MEAN_BED_HEIGHT_HEADER_SHORT)); - source.addMetaData("sounding_name_header", msg(SInfoI18NStrings.CSV_SOUNDING_HEADER)); - source.addMetaData("location_header", msg(SInfoI18NStrings.CSV_LOCATION_HEADER)); + + source.addMetaData("station_header", msg(SInfoResultType.station.getCsvHeader())); + source.addMetaData("flowdepth_header", msg(SInfoResultType.flowdepth.getCsvHeader())); + source.addMetaData("flowdepth_tkh_header", msg(SInfoResultType.flowdepthtkh.getCsvHeader())); + source.addMetaData("tkh_header", msg(SInfoResultType.tkh.getCsvHeader())); + source.addMetaData("waterlevel_header", msg(SInfoResultType.waterlevel.getCsvHeader())); + source.addMetaData("discharge_header", msg(SInfoResultType.discharge.getCsvHeader())); + source.addMetaData("waterlevel_name_header", msg(SInfoResultType.waterlevelLabel.getCsvHeader())); + source.addMetaData("gauge_header", msg(SInfoResultType.gaugeLabel.getCsvHeader())); + source.addMetaData("bedheight_header", msg(SInfoResultType.meanBedHeight.getCsvHeader())); + source.addMetaData("sounding_name_header", msg(SInfoResultType.soundingLabel.getCsvHeader())); + source.addMetaData("location_header", msg(SInfoResultType.location.getCsvHeader())); } @Override - protected String[] formatPDFRow(final FlowDepthCalculationResults results, final FlowDepthRow row) { - return formatFlowDepthRow(row); + protected String[] formatPDFRow(final FlowDepthCalculationResults results, final SInfoResultRow row) { + return formatRow(row); } } \ No newline at end of file