diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java @ 9316:72b3270e1568

U-Info salix line with regional and supraregional scenario calculation and chart display
author mschaefer
date Thu, 26 Jul 2018 17:28:32 +0200
parents 9a9f076d5716
children 7b2b086e45f0
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java	Thu Jul 26 17:23:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/SalixLineCalculation.java	Thu Jul 26 17:28:32 2018 +0200
@@ -10,13 +10,10 @@
 package org.dive4elements.river.artifacts.uinfo.salix;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.NavigableMap;
 import java.util.TreeMap;
 
-import org.apache.commons.lang.math.DoubleRange;
 import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.river.artifacts.access.RangeAccess;
 import org.dive4elements.river.artifacts.model.Calculation;
@@ -74,7 +71,7 @@
         final SalixLineCalculator calculator = new SalixLineCalculator(this.context, riverInfoProvider);
         final NavigableMap<Double, List<Double>> rangeScenarios = buildRangeScenarios(accessSalix);
 
-        calculator.execute(problems, uinfo, rangeScenarios, accessSalix.getScenario(), results);
+        calculator.execute(problems, uinfo, rangeScenarios, accessSalix.getScenario(), buildScenarioLabels(accessSalix), results);
 
         // final Collection<ResultRow> rows = new ArrayList<>();
         // SalixLineCalculationNoScenarioResult result = null; // verzweigung etwas ungünstig. möglicherweise auch die
@@ -153,6 +150,17 @@
         return new CalculationResult(results, problems);
     }
 
+    // private SalixScenario findScenarioByKm(final double km, final Map<DoubleRange, SalixScenario> rangeScenarioMap) {
+    // final Iterator<DoubleRange> rangeIterator = rangeScenarioMap.keySet().iterator();
+    // while (rangeIterator.hasNext()) {
+    // final DoubleRange range = rangeIterator.next();
+    // if (range.containsDouble(km + 0.0001)) {
+    // return rangeScenarioMap.get(range);
+    // }
+    // }
+    // return null;
+    // }
+
     /**
      * Build a map of delta-Ws by km-range for the selected scenario
      */
@@ -208,14 +216,17 @@
         }
     }
 
-    private SalixScenario findScenarioByKm(final double km, final Map<DoubleRange, SalixScenario> rangeScenarioMap) {
-        final Iterator<DoubleRange> rangeIterator = rangeScenarioMap.keySet().iterator();
-        while (rangeIterator.hasNext()) {
-            final DoubleRange range = rangeIterator.next();
-            if (range.containsDouble(km + 0.0001)) {
-                return rangeScenarioMap.get(range);
-            }
+    /**
+     * Build the list of delta-w labels for the scenario type
+     */
+    private String[] buildScenarioLabels(final SalixLineAccess access) {
+        final List<String> labels = new ArrayList<>();
+        if (access.getScenario() == ScenarioType.REGIONAL) {
+            final int[] deltaws = access.getRegionalScenarioIntegers();
+            for (int i = 0; i <= deltaws.length - 1; i++)
+                if (deltaws[i] != 0)
+                    labels.add(Integer.toString(deltaws[i]) + " cm");
         }
-        return null;
+        return labels.toArray(new String[labels.size()]);
     }
 }
\ No newline at end of file

http://dive4elements.wald.intevation.org