Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResult.java @ 9229:0dcd1cd41915
Different themes/facets for left bank and right bank infrastructures in S-Info flood durations, some fixmes done
author | mschaefer |
---|---|
date | Thu, 05 Jul 2018 16:49:42 +0200 |
parents | 4e6111f87dda |
children | b515ed950d39 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResult.java Thu Jul 05 13:46:36 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResult.java Thu Jul 05 16:49:42 2018 +0200 @@ -27,6 +27,7 @@ import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; import org.dive4elements.river.exports.DiagramGenerator; +import org.dive4elements.river.model.Attribute.AttributeKey; import gnu.trove.TDoubleArrayList; @@ -41,8 +42,8 @@ private final String[] mainvalueLabels; - private final int waterlevelCount; // private final WstInfo wstInfo; + private final int maxWaterlevelPdf = 3; public interface ValueGetter { @@ -56,20 +57,9 @@ public FloodDurationCalculationResult(final String label, final String[] mainvalueLabels, final Collection<ResultRow> rows) { super(label, rows); this.mainvalueLabels = mainvalueLabels; - this.waterlevelCount = mainvalueLabels.length; } /** - * The label of one of the optional main values, or null - */ - // public String getMainValueLabel(final int index) { - // if (index <= this.mainvalueLabels.length - 1) - // return this.mainvalueLabels[index]; - // else - // return null; - // } - - /** * Collection of the result rows containing only the rows describing an infrastructure */ @Override @@ -81,38 +71,6 @@ return Collections.unmodifiableCollection(infrasOnlyRows); } - /** - * Fetches the km-longitudinal section of the infrastructures and one of their result fields - */ - public final double[][] fetchInfrastructurePoints(final IResultType type) { - final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); - final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); - for (final ResultRow row : this.rows) { - if (row.getValue(SInfoResultType.infrastructuretype) != null) { - xPoints.add(row.getDoubleValue(GeneralResultType.station)); - yPoints.add(row.getDoubleValue(type)); - } - } - return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; - } - - /** - * Fetches the km-longitudinal section of a main value - */ - public final double[][] fetchMainValuePoints(final IResultType type) { - final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); - final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); - // final IResultType check = new IResultType[] { SInfoResultType.mainValue1Duration, SInfoResultType.mainValue2Duration, - // SInfoResultType.mainValue3Duration }[index]; - for (final ResultRow row : this.rows) { - // if (!Double.isNaN(row.getDoubleValue(check))) { - xPoints.add(row.getDoubleValue(GeneralResultType.station)); - yPoints.add(row.getDoubleValue(type)); - // } - } - return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; - } - @Override protected void writeCSVResultMetadata(final ExportContextCSV exportContextCSV) { if (this.mainvalueLabels.length >= 1) { @@ -125,14 +83,17 @@ exportContextCSV.writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_NAME, String.format("%d: %s", i, label)); } // "# Bezugspegel: " - exportContextCSV.writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_GAUGE, "TODO: gauge"); + for (final ResultRow row : this.rows) { + exportContextCSV.writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_GAUGE, row.getValue(SInfoResultType.gaugeLabel)); + break; + } } exportContextCSV.writeBlankLine(); } @Override protected String getJasperFile() { - if (this.waterlevelCount <= 1) + if (this.getWaterlevelCount() <= 1) return "/jasper/templates/sinfo.floodduration.jrxml"; else return "/jasper/templates/sinfo.floodduration2.jrxml"; @@ -189,14 +150,11 @@ final int waterlevelCount = // results. getWaterlevelCount(); for (int i = 0; i < waterlevelCount; i++) { - final int naturalIndex = i + 1; - final String appendIndex = new StringBuilder().append("_").append(naturalIndex).toString(); - final Object[] args = new Object[] { appendIndex }; - // new StringBuilder().append('\u2081').toString(); // schlechter UTF-8-Support für subscript ints - header.add(exportContextCSV.msg(DurationWaterlevel.getHeaderWCsv(), new Object[] { appendIndex, "results.getRiver().getWstUnit()" })); - header.add(exportContextCSV.msg(DurationWaterlevel.getHeaderFloodDurPerYearCsv(), args)); - header.add(exportContextCSV.msg(DurationWaterlevel.getHeaderQ(), args)); - header.add(exportContextCSV.msg(DurationWaterlevel.getHeaderBezeichnCsv(), args)); + final String appendIndex = "_" + Integer.toString(i + 1); + header.add(exportContextCSV.msg(DurationWaterlevel.getHeaderWCsv(), appendIndex, "results.getRiver().getWstUnit()")); + header.add(exportContextCSV.msg(DurationWaterlevel.getHeaderFloodDurPerYearCsv(), appendIndex)); + header.add(exportContextCSV.msg(DurationWaterlevel.getHeaderQ(), appendIndex)); + header.add(exportContextCSV.msg(DurationWaterlevel.getHeaderBezeichnCsv(), appendIndex)); } header.add(exportContextCSV.formatCsvHeader(SInfoResultType.gaugeLabel)); @@ -229,39 +187,61 @@ exportContextPDF.addJRMetadata(source, "infrastructure_height_header", SInfoResultType.infrastructureHeight); exportContextPDF.addJRMetadata(source, "infrastructure_type_header", SInfoResultType.infrastructuretype); - for (int i = 0; i < this.waterlevelCount; i++) { - final int naturalIndex = i + 1; + for (int i = 1; i <= this.getWaterlevelCount(); i++) { - final Object[] args = new String[] { new StringBuilder().append("_").append(naturalIndex).toString() }; - exportContextPDF.addJRMetadata(source, getPdfHeader("w", naturalIndex), exportContextPDF.msg(DurationWaterlevel.getHeaderWPdf(), args)); - exportContextPDF.addJRMetadata(source, getPdfHeader("duration", naturalIndex), - exportContextPDF.msg(DurationWaterlevel.getHeaderFloodDurPerYearPdf(), args)); - exportContextPDF.addJRMetadata(source, getPdfHeader("q", naturalIndex), exportContextPDF.msg(DurationWaterlevel.getHeaderQ(), args)); - exportContextPDF.addJRMetadata(source, getPdfHeader("bezeichnung", naturalIndex), - exportContextPDF.msg(DurationWaterlevel.getHeaderBezeichnPdf(), args)); + final String appendIndex = "_" + Integer.toString(i); + exportContextPDF.addJRMetadata(source, getPdfHeader("w", i), exportContextPDF.msg(DurationWaterlevel.getHeaderWPdf(), appendIndex)); + exportContextPDF.addJRMetadata(source, getPdfHeader("duration", i), + exportContextPDF.msg(DurationWaterlevel.getHeaderFloodDurPerYearPdf(), appendIndex)); + exportContextPDF.addJRMetadata(source, getPdfHeader("q", i), exportContextPDF.msg(DurationWaterlevel.getHeaderQ(), appendIndex)); + exportContextPDF.addJRMetadata(source, getPdfHeader("bezeichnung", i), + exportContextPDF.msg(DurationWaterlevel.getHeaderBezeichnPdf(), appendIndex)); } exportContextPDF.addJRMetadata(source, "gauge_header", SInfoResultType.gaugeLabel); exportContextPDF.addJRMetadata(source, "location_header", SInfoResultType.location); } - public final int getWaterlevelCount() { - return this.waterlevelCount; - } - private final String getPdfHeader(final String rootStr, final int index) { final String hd = "_header"; final StringBuilder builder = new StringBuilder(); return builder.append(rootStr).append("_").append(index).append(hd).toString(); } + public final int getWaterlevelCount() { + return (this.mainvalueLabels != null) ? this.mainvalueLabels.length : 0; + } + public String getMainValueLabel(final int j) { - if (this.mainvalueLabels != null && j < this.mainvalueLabels.length) return this.mainvalueLabels[j]; return ""; } + /** + * Gets the longitudinal section of a result value type for one river side + */ + public final double[][] getInfrastructurePoints(final IResultType type, final AttributeKey riverside) { + + final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size()); + final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size()); + + for (final ResultRow row : this.rows) { + + final double station = row.getDoubleValue(GeneralResultType.station); + final double value = row.getDoubleValue(type); + if (row.getValue(SInfoResultType.riverside) == riverside) { + xPoints.add(station); + yPoints.add(value); + } + } + + return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() }; + } + + /** + * Gets a longitudinal section of W, Q, or flood duration of one of the waterlevels + */ public final double[][] getMainValueDurationPoints(final DiagramGenerator generator, final ValueGetter valuegetter, final int dataIndex) { final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size());