[PATCH 4 of 4] Small cleanup concerning getPoints
Wald Commits
scm-commit at wald.intevation.org
Tue Jul 17 19:48:37 CEST 2018
# HG changeset patch
# User gernotbelger
# Date 1531849708 -7200
# Node ID e5367900dd6d07d025eb3639303b1b046aa21685
# Parent baef46792354ad076e29e58ea3c11a622d6e178e
Small cleanup concerning getPoints
Adding validStations as dataItem to flood duration calculation
Flood duration now km aware
diff -r baef46792354 -r e5367900dd6d artifacts/doc/conf/artifacts/sinfo.xml
--- a/artifacts/doc/conf/artifacts/sinfo.xml Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/doc/conf/artifacts/sinfo.xml Tue Jul 17 19:48:28 2018 +0200
@@ -25,6 +25,12 @@
<state id="state.sinfo.distance_only" description="state.sinfo.distance_only" state="org.dive4elements.river.artifacts.states.DistanceOnlySelect" helpText="help.state.sinfo.distance_only">
<data name="ld_from" type="Double" />
<data name="ld_to" type="Double" />
+
+ <!-- This data will hold the valid stations, needed for the Duration-Chart for the flood duration calculation
+ It is ugly to put it here, but we cannot set the state-data of the current state inside the state calculation (only the data of the previous states is put into the collection description).
+ So this is the only way to safely transport this information to the client.
+ -->
+ <data name="validStations" type="String" />
</state>
<transition transition="org.dive4elements.river.artifacts.transitions.ValueCompareTransition">
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCalculationResult.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCalculationResult.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCalculationResult.java Tue Jul 17 19:48:28 2018 +0200
@@ -15,6 +15,9 @@
import java.util.Collections;
import java.util.List;
+import org.apache.commons.collections.Predicate;
+import org.apache.commons.collections.functors.TruePredicate;
+
import gnu.trove.TDoubleArrayList;
/**
@@ -24,7 +27,7 @@
private static final long serialVersionUID = 1L;
- protected final Collection<ResultRow> rows;
+ private final Collection<ResultRow> rows;
private final String label;
@@ -45,18 +48,24 @@
return Collections.unmodifiableCollection(this.rows);
}
- public final double[][] getStationPoints(final IResultType type) { // gehört die Methode hier rein? oder in erbende Klassen?
+ public final double[][] getStationPoints(final IResultType yType) {
+ return getPoints(GeneralResultType.station, yType, TruePredicate.INSTANCE);
+ }
+
+ public final double[][] getPoints(final IResultType typeX, final IResultType typeY, final Predicate rowFilter) {
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); // TODO: move "station" (and others) to common
- final double value = row.getDoubleValue(type);
+ if (rowFilter.evaluate(row)) {
+ final double station = row.getDoubleValue(typeX);
+ final double value = row.getDoubleValue(typeY);
- xPoints.add(station);
- yPoints.add(value);
+ xPoints.add(station);
+ yPoints.add(value);
+ }
}
return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() };
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalcOverviewResult.java Tue Jul 17 19:48:28 2018 +0200
@@ -12,6 +12,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import org.apache.commons.collections.Predicate;
import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult;
import org.dive4elements.river.artifacts.common.ExportContextCSV;
import org.dive4elements.river.artifacts.common.ExportContextPDF;
@@ -22,8 +23,6 @@
import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
-import gnu.trove.TDoubleArrayList;
-
/**
* Contains the results of a {@link CollisionCalculation}.
*
@@ -48,22 +47,15 @@
public double[][] getStationPointsByYear(final IResultType type, final int year) {
- final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size());
- final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size());
+ final Predicate filter = new Predicate() {
+ @Override
+ public boolean evaluate(final Object object) {
+ final ResultRow row = (ResultRow) object;
+ return getSingleYears() == null || Integer.valueOf(row.getValue(SInfoResultType.years).toString()) == year;
+ }
+ };
- for (final ResultRow row : this.rows) {
-
- if ((this.singleYears == null) || (Integer.valueOf(row.getValue(SInfoResultType.years).toString()) == year)) {
-
- final double station = row.getDoubleValue(GeneralResultType.station);
- final double value = row.getDoubleValue(type);
-
- xPoints.add(station);
- yPoints.add(value);
- }
- }
-
- return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() };
+ return getPoints(GeneralResultType.station, type, filter);
}
@Override
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResult.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResult.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResult.java Tue Jul 17 19:48:28 2018 +0200
@@ -15,6 +15,7 @@
import java.util.Collections;
import java.util.List;
+import org.apache.commons.collections.Predicate;
import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult;
import org.dive4elements.river.artifacts.common.AbstractExportContext;
import org.dive4elements.river.artifacts.common.ExportContextCSV;
@@ -26,7 +27,6 @@
import org.dive4elements.river.artifacts.sinfo.common.SInfoI18NStrings;
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;
@@ -38,6 +38,22 @@
*/
public final class FloodDurationCalculationResult extends AbstractCalculationExportableResult {
+ private final static class RiversidePredicate implements Predicate {
+
+ private final AttributeKey riverside;
+
+ public RiversidePredicate(final AttributeKey riverside) {
+ this.riverside = riverside;
+ }
+
+ @Override
+ public boolean evaluate(final Object object) {
+ final ResultRow row = (ResultRow) object;
+
+ return row.getValue(SInfoResultType.riverside) == this.riverside;
+ }
+ }
+
private static final long serialVersionUID = 1L;
private final String[] mainvalueLabels;
@@ -62,12 +78,17 @@
/**
* Collection of the result rows containing only the rows describing an infrastructure
*/
+ // FIXME: bad to override, instead make new method 'getInfrastructureRows' or similar?
@Override
public Collection<ResultRow> getRows() {
+
+ final Collection<ResultRow> rows = super.getRows();
+
final List<ResultRow> infrasOnlyRows = new ArrayList<>();
- for (final ResultRow row : this.rows)
+ for (final ResultRow row : rows) {
if (row.getValue(SInfoResultType.infrastructuretype) != null)
infrasOnlyRows.add(row);
+ }
return Collections.unmodifiableCollection(infrasOnlyRows);
}
@@ -82,7 +103,7 @@
exportContextCSV.writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_NAME, String.format("%d: %s", i, label));
}
// "# Bezugspegel: "
- for (final ResultRow row : this.rows) {
+ for (final ResultRow row : getRows()) {
exportContextCSV.writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_GAUGE, row.getValue(SInfoResultType.gaugeLabel));
break;
}
@@ -94,8 +115,8 @@
protected String getJasperFile() {
if (this.getWaterlevelCount() <= 1)
return "/jasper/templates/sinfo.floodduration.jrxml";
- else
- return "/jasper/templates/sinfo.floodduration2.jrxml";
+
+ return "/jasper/templates/sinfo.floodduration2.jrxml";
}
protected String[] formatRow(final AbstractExportContext exportContextCSV, final ResultRow row, final ExportMode mode) {
@@ -160,7 +181,10 @@
header.add(exportContextCSV.formatCsvHeader(SInfoResultType.location));
exportContextCSV.writeCSVLine(header.toArray(new String[header.size()]));
+ }
+ public List<Double> getValidDurationChartKilometers() {
+ return getValues(GeneralResultType.station);
}
@Override
@@ -221,32 +245,20 @@
* 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() };
+ return getPoints(GeneralResultType.station, type, new RiversidePredicate(riverside));
}
/**
* 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) {
+ public final double[][] getMainValueDurationPoints(final ValueGetter valuegetter, final int dataIndex) {
- final TDoubleArrayList xPoints = new TDoubleArrayList(this.rows.size());
- final TDoubleArrayList yPoints = new TDoubleArrayList(this.rows.size());
+ final Collection<ResultRow> rows = getRows();
- for (final ResultRow row : this.rows) {
+ final TDoubleArrayList xPoints = new TDoubleArrayList(rows.size());
+ final TDoubleArrayList yPoints = new TDoubleArrayList(rows.size());
+
+ for (final ResultRow row : rows) {
final double station = row.getDoubleValue(GeneralResultType.station);
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResults.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResults.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResults.java Tue Jul 17 19:48:28 2018 +0200
@@ -14,7 +14,7 @@
import org.apache.commons.lang.math.DoubleRange;
import org.dive4elements.river.artifacts.common.AbstractCalculationResults;
-import org.dive4elements.river.artifacts.model.CalculationResult;
+import org.dive4elements.river.artifacts.model.WQDay;
import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
import org.dive4elements.river.jfree.StickyAxisAnnotation;
@@ -31,13 +31,13 @@
this.mainValueQAnnotations = new ArrayList<>();
}
- private CalculationResult durationCurve;
+ private WQDay durationCurve;
- public CalculationResult getDurationCurve() {
+ public WQDay getDurationCurve() {
return this.durationCurve;
}
- public void setDurationCurve(final CalculationResult durationCurve) {
+ public void setDurationCurve(final WQDay durationCurve) {
this.durationCurve = durationCurve;
}
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculator.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculator.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculator.java Tue Jul 17 19:48:28 2018 +0200
@@ -144,8 +144,7 @@
ws[j] = underflow.getW(i);
qs[j] = underflow.getQ(i);
}
- res.setData(new WQDay(days, ws, qs));
- results.setDurationCurve(res);
+ results.setDurationCurve(new WQDay(days, ws, qs));
}
/**
@@ -162,12 +161,12 @@
final StickyAxisAnnotation qAnnotation = new StickyAxisAnnotation(qLabel, (float) wqkmsArray[i].getQ(stationIndex), SimpleAxis.Y_AXIS,
FloodDurationCurveGenerator.YAXIS.Q.idx);
qs.add(qAnnotation);
- FloodDurationMainValuesQFacet.setHitPoint((WQDay) results.getDurationCurve().getData(), qAnnotation);
+ FloodDurationMainValuesQFacet.setHitPoint(results.getDurationCurve(), qAnnotation);
final String wLabel = !wqkmsArray[i].getName().startsWith("W=") ? "W(" + wqkmsArray[i].getName() + ")" : wqkmsArray[i].getName();
final StickyAxisAnnotation wAnnotation = new StickyAxisAnnotation(wLabel, (float) wqkmsArray[i].getW(stationIndex), SimpleAxis.Y_AXIS,
FloodDurationCurveGenerator.YAXIS.W.idx);
ws.add(wAnnotation);
- FloodDurationMainValuesWFacet.setHitPoint((WQDay) results.getDurationCurve().getData(), wAnnotation);
+ FloodDurationMainValuesWFacet.setHitPoint(results.getDurationCurve(), wAnnotation);
}
results.getMainValueQAnnotations().clear();
results.getMainValueQAnnotations().addAll(qs);
@@ -194,10 +193,10 @@
+ ", " + SInfoResultType.riverside.exportValue(this.context, row.getValue(SInfoResultType.riverside)));
final StickyAxisAnnotation qAnnotation = new StickyAxisAnnotation(label, (float) row.getDoubleValue(SInfoResultType.floodDischarge),
SimpleAxis.Y_AXIS, FloodDurationCurveGenerator.YAXIS.Q.idx);
- FloodDurationMainValuesQFacet.setHitPoint((WQDay) results.getDurationCurve().getData(), qAnnotation);
+ FloodDurationMainValuesQFacet.setHitPoint(results.getDurationCurve(), qAnnotation);
final StickyAxisAnnotation wAnnotation = new StickyAxisAnnotation(label, (float) row.getDoubleValue(SInfoResultType.infrastructureHeight),
SimpleAxis.Y_AXIS, FloodDurationCurveGenerator.YAXIS.W.idx);
- FloodDurationMainValuesWFacet.setHitPoint((WQDay) results.getDurationCurve().getData(), wAnnotation);
+ FloodDurationMainValuesWFacet.setHitPoint(results.getDurationCurve(), wAnnotation);
results.setInfrastructureQAnnotation(qAnnotation);
results.setInfrastructureWAnnotation(wAnnotation);
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveFacet.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveFacet.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveFacet.java Tue Jul 17 19:48:28 2018 +0200
@@ -8,8 +8,7 @@
package org.dive4elements.river.artifacts.sinfo.flood_duration;
-//import java.util.ArrayList;
-//import java.util.List;
+import static org.dive4elements.river.exports.injector.InjectorConstants.CURRENT_KM;
import org.apache.log4j.Logger;
import org.dive4elements.artifactdatabase.state.DefaultFacet;
@@ -18,7 +17,6 @@
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.artifacts.D4EArtifact;
import org.dive4elements.river.artifacts.model.CalculationResult;
-//import org.dive4elements.river.artifacts.model.WQDay;
import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
@@ -57,8 +55,32 @@
final FloodDurationCalculationResults data = (FloodDurationCalculationResults) res.getData();
+ final double currentKm = getCurrentKm(context);
+ // TODO: entweder in data.getDurationCurve() reingeben, oder bei FloodDurationCalculationResults auswerten...
+ // TODO: was ist aus perfromanz/speicher-sicht besser?
+
return data.getDurationCurve();
- // return getTestData();
+ }
+
+ /**
+ * Returns the current km from the context.
+ * If the context is null or doesn't contain a currentKm
+ * then a double value of -1 will be returned.
+ *
+ * @param context
+ * The CallContext instance
+ * @return the current km as double
+ */
+ // FIXME: copied from org.dive4elements.river.artifacts.model.fixings.FixingsFacet
+ private double getCurrentKm(final CallContext context) {
+ if (context == null)
+ return Double.NaN;
+
+ final Double dkm = (Double) context.getContextValue(CURRENT_KM);
+ if (dkm == null)
+ return Double.NaN;
+
+ return dkm.doubleValue();
}
// private WQDay getTestData() {
@@ -74,7 +96,6 @@
// return new WQDay(days, ws, qs);
// }
-
// @Override
// public List getStaticDataProviderKeys(final Artifact art) {
// final List list = new ArrayList();
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveGenerator.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveGenerator.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCurveGenerator.java Tue Jul 17 19:48:28 2018 +0200
@@ -14,7 +14,6 @@
import org.apache.log4j.Logger;
import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
import org.dive4elements.artifacts.CallContext;
-import org.dive4elements.river.artifacts.model.CalculationResult;
import org.dive4elements.river.artifacts.model.FacetTypes;
import org.dive4elements.river.artifacts.model.WQDay;
import org.dive4elements.river.exports.IdentifiableNumberAxis;
@@ -29,57 +28,51 @@
import org.jfree.data.Range;
import org.jfree.data.xy.XYSeries;
-
/**
* An OutGenerator that generates duration curves.
*
* @author <a href="mailto:ingo.weinzierl at intevation.de">Ingo Weinzierl</a>
*/
-public class FloodDurationCurveGenerator
-extends XYChartGenerator
-implements FacetTypes
-{
+public class FloodDurationCurveGenerator extends XYChartGenerator implements FacetTypes {
public static enum YAXIS {
- W(0),
- Q(1);
+ W(0), Q(1);
public int idx;
+
private YAXIS(final int c) {
this.idx = c;
}
}
/** Local log. */
- private static Logger log =
- Logger.getLogger(FloodDurationCurveGenerator.class);
+ private static Logger log = Logger.getLogger(FloodDurationCurveGenerator.class);
- public static final String I18N_CHART_TITLE = "sinfo.chart.flood_duration.curve.section.title";
+ private static final String I18N_CHART_TITLE = "sinfo.chart.flood_duration.curve.section.title";
- public static final String I18N_CHART_SUBTITLE = "chart.duration.curve.subtitle";
+ private static final String I18N_CHART_SUBTITLE = "chart.duration.curve.subtitle";
- public static final String I18N_XAXIS_LABEL = "sinfo.chart.flood_duration.curve.xaxis.label";
+ private static final String I18N_XAXIS_LABEL = "sinfo.chart.flood_duration.curve.xaxis.label";
- public static final String I18N_YAXIS_LABEL_W = "chart.duration.curve.yaxis.label.w";
+ private static final String I18N_YAXIS_LABEL_W = "chart.duration.curve.yaxis.label.w";
- public static final String I18N_YAXIS_LABEL_Q = "chart.duration.curve.yaxis.label.q";
+ private static final String I18N_YAXIS_LABEL_Q = "chart.duration.curve.yaxis.label.q";
- public static final String I18N_CHART_TITLE_DEFAULT = "Dauerlinie";
+ private static final String I18N_CHART_TITLE_DEFAULT = "Dauerlinie";
- public static final String I18N_XAXIS_LABEL_DEFAULT = "Überflutungsdauer [d/a]";
-
+ private static final String I18N_XAXIS_LABEL_DEFAULT = "Überflutungsdauer [d/a]";
public FloodDurationCurveGenerator() {
super();
}
-
/**
* Create Axis for given index.
+ *
* @return axis with according internationalized label.
*/
@Override
protected NumberAxis createYAxis(final int index) {
final Font labelFont = new Font("Tahoma", Font.BOLD, 14);
- final String label = getYAxisLabel(index);
+ final String label = getYAxisLabel(index);
final NumberAxis axis = createNumberAxis(index, label);
if (index == YAXIS.W.idx) {
@@ -89,41 +82,35 @@
return axis;
}
-
@Override
protected String getDefaultChartTitle(final CallContext context) {
return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT);
}
-
@Override
protected String getDefaultChartSubtitle(final CallContext context) {
- final double[] dist = getRange();
+ final double[] dist = getRange();
return msg(I18N_CHART_SUBTITLE, "", getRiverName(), dist[0]);
}
-
@Override
protected String getDefaultXAxisLabel(final CallContext context) {
return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT);
}
-
@Override
protected String getDefaultYAxisLabel(final int index) {
String label = "default";
if (index == YAXIS.W.idx) {
label = msg(I18N_YAXIS_LABEL_W, I18N_YAXIS_LABEL_W, getRiverUnit());
- }
- else if (index == YAXIS.Q.idx) {
+ } else if (index == YAXIS.Q.idx) {
label = msg(I18N_YAXIS_LABEL_Q);
}
return label;
}
-
@Override
protected boolean zoomX(final XYPlot plot, final ValueAxis axis, final Bounds bounds, final Range x) {
@@ -134,7 +121,6 @@
return zoomin;
}
-
/**
* This method overrides the method in the parent class to set the lower
* bounds of the Q axis to 0. This axis should never display negative
@@ -152,7 +138,6 @@
return zoomin;
}
-
@Override
public void doOut(final ArtifactAndFacet artifactFacet, final ThemeDocument attr, final boolean visible) {
@@ -168,10 +153,10 @@
final CallContext context = getContext();
if (name.equals(DURATION_W)) {
- doWOut((WQDay) ((CalculationResult) artifactFacet.getData(context)).getData(), artifactFacet, attr, visible);
+ doWOut((WQDay) (artifactFacet.getData(context)), artifactFacet, attr, visible);
}
else if (name.equals(DURATION_Q)) {
- doQOut((WQDay) ((CalculationResult) artifactFacet.getData(context)).getData(), artifactFacet, attr, visible);
+ doQOut((WQDay) artifactFacet.getData(context), artifactFacet, attr, visible);
}
else if (name.equals(FloodDurationCurveProcessor.FACET_FLOOD_DURATION_MAINVALUES_Q)
|| name.equals(FloodDurationCurveProcessor.FACET_FLOOD_DURATION_MAINVALUES_W)) {
@@ -195,7 +180,8 @@
/**
* Creates the series for a duration curve's W facet.
*
- * @param wqdays The WQDay store that contains the Ws.
+ * @param wqdays
+ * The WQDay store that contains the Ws.
* @param theme
*/
protected void doWOut(final WQDay wqdays, final ArtifactAndFacet aaf, final ThemeDocument theme, final boolean visible) {
@@ -204,7 +190,7 @@
final XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme);
final int size = wqdays.size();
for (int i = 0; i < size; i++) {
- final int day = wqdays.getDay(i);
+ final int day = wqdays.getDay(i);
final double w = wqdays.getW(i);
series.add(day, w);
}
@@ -219,11 +205,11 @@
addAxisSeries(series, YAXIS.W.idx, visible);
}
-
/**
* Creates the series for a duration curve's Q facet.
*
- * @param wqdays The WQDay store that contains the Qs.
+ * @param wqdays
+ * The WQDay store that contains the Qs.
* @param theme
*/
protected void doQOut(final WQDay wqdays, final ArtifactAndFacet aaf, final ThemeDocument theme, final boolean visible) {
@@ -232,14 +218,13 @@
final XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme);
final int size = wqdays.size();
for (int i = 0; i < size; i++) {
- final int day = wqdays.getDay(i);
+ final int day = wqdays.getDay(i);
final double q = wqdays.getQ(i);
series.add(day, q);
}
addAxisSeries(series, YAXIS.Q.idx, visible);
}
-
@Override
protected YAxisWalker getYAxisWalker() {
return new YAxisWalker() {
@@ -258,5 +243,4 @@
// MainValue-Annotations should be visualized by
// a line that goes to the curve itself.
-}
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
+}
\ No newline at end of file
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationProcessor.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationProcessor.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationProcessor.java Tue Jul 17 19:48:28 2018 +0200
@@ -110,7 +110,7 @@
return waterlevel.getFloodDurDaysPerYear();
}
};
- final double[][] points = ((FloodDurationCalculationResult) data).getMainValueDurationPoints(generator, valuegetter, index);
+ final double[][] points = ((FloodDurationCalculationResult) data).getMainValueDurationPoints(valuegetter, index);
return buildStepLineSeriesForType(points, generator, bundle, theme, visible);
}
}
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationState.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationState.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationState.java Tue Jul 17 19:48:28 2018 +0200
@@ -12,6 +12,7 @@
import java.util.List;
+import org.apache.commons.lang.StringUtils;
import org.dive4elements.artifactdatabase.state.Facet;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.artifacts.ChartArtifact;
@@ -32,9 +33,6 @@
*/
public class FloodDurationState extends DefaultState {
- /// ** The log that is used in this state. */
- // private static Logger log = Logger.getLogger(FloodDurationState.class);
-
private static final long serialVersionUID = 1L;
/**
@@ -78,10 +76,20 @@
final FloodDurationCalculationResults results = (FloodDurationCalculationResults) res.getData();
final List<FloodDurationCalculationResult> resultList = results.getResults();
+
int resultIndex = 0;
int themeCount = 0;
for (final FloodDurationCalculationResult result : resultList) {
+ if (resultIndex == 0) {
+ /* we only have one result, but safety first... */
+
+ /* Setting the valid stations as data to the state, so the NaviChartOutputTab knows what are the valid stations */
+ final List<Double> validDurationChartKilometers = result.getValidDurationChartKilometers();
+ final String validKilometerString = StringUtils.join(validDurationChartKilometers, ',');
+ sinfo.addStringData("validStations", validKilometerString);
+ }
+
final FloodDurationAccess access = new FloodDurationAccess(sinfo);
if ((access.getRiverside() == RiversideChoiceKey.LEFT) || (access.getRiverside() == RiversideChoiceKey.BOTH))
facets.add(FloodDurationProcessor.createFloodDurationFacet(context, hash, this.id, result, 0, resultIndex));
diff -r baef46792354 -r e5367900dd6d artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodHeightProcessor.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodHeightProcessor.java Tue Jul 17 19:48:23 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodHeightProcessor.java Tue Jul 17 19:48:28 2018 +0200
@@ -109,7 +109,7 @@
return waterlevel.getWaterlevel();
}
};
- final double[][] points = ((FloodDurationCalculationResult) data).getMainValueDurationPoints(generator, valuegetter, index);
+ final double[][] points = ((FloodDurationCalculationResult) data).getMainValueDurationPoints(valuegetter, index);
return buildSeriesForType(points, generator, bundle, theme, visible, null);
}
}
More information about the Dive4Elements-commits
mailing list