diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResult.java @ 9208:53cc5b496692

funcion replaced by interface
author gernotbelger
date Tue, 03 Jul 2018 11:16:51 +0200
parents 3dae6b78e1da
children 0fc9c82e744e
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResult.java	Mon Jul 02 19:12:54 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationCalculationResult.java	Tue Jul 03 11:16:51 2018 +0200
@@ -15,6 +15,7 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
 import org.dive4elements.river.artifacts.common.AbstractCalculationExportableResult;
 import org.dive4elements.river.artifacts.common.AbstractExportContext;
 import org.dive4elements.river.artifacts.common.ExportContextCSV;
@@ -26,6 +27,7 @@
 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 gnu.trove.TDoubleArrayList;
 
@@ -44,6 +46,10 @@
     // private final WstInfo wstInfo;
     private final int maxWaterlevelPdf = 3;
 
+    public interface ValueGetter {
+        abstract double getValue(DurationWaterlevel waterlevel);
+    }
+
     private enum ExportMode {
         pdf, csv
     }
@@ -272,4 +278,27 @@
             return this.mainvalueLabels[j];
         return "";
     }
+
+    public final double[][] getMainValueDurationPoints(final DiagramGenerator generator, final ArtifactAndFacet bundle,
+            // final Function<DurationWaterlevel, Double> valueGetter
+            final ValueGetter valuegetter, final int dataIndex) {
+
+        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 List<DurationWaterlevel> waterlevels = (List<DurationWaterlevel>) row.getValue(SInfoResultType.customMultiRowColWaterlevel);
+            final DurationWaterlevel waterlevel = waterlevels.get(dataIndex);
+
+            final Double value = valuegetter.getValue(waterlevel);
+
+            xPoints.add(station);
+            yPoints.add(value);
+        }
+
+        return new double[][] { xPoints.toNativeArray(), yPoints.toNativeArray() };
+    }
 }
\ No newline at end of file

http://dive4elements.wald.intevation.org