diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/WQSelect.java @ 9130:f61bc0c63188

WQSelect can now handle distance-only data
author gernotbelger
date Wed, 06 Jun 2018 14:16:28 +0200
parents e3519c3e7a0a
children 2323d005f9a5
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/WQSelect.java	Wed Jun 06 14:15:58 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/WQSelect.java	Wed Jun 06 14:16:28 2018 +0200
@@ -32,6 +32,7 @@
 import org.dive4elements.river.artifacts.D4EArtifact;
 
 import org.dive4elements.river.artifacts.access.RangeAccess;
+import org.dive4elements.river.artifacts.access.RangeAccess.KM_MODE;
 import org.dive4elements.river.artifacts.access.ComputationRangeAccess;
 import org.dive4elements.river.artifacts.model.WstFactory;
 import org.dive4elements.river.artifacts.model.WstValueTable;
@@ -432,16 +433,10 @@
         
         double[] minmaxW = null;
         if(valueTable != null) {
-            double[] km = null;
-            if(access.isRange()) {
-                km = access.getFromToStep();
-                // Use the start km to determine the min max values.
-                minmaxW = valueTable.getMinMaxW(km[0]);
-            }
-            else {
-                km = access.getKms();
-                minmaxW = valueTable.getMinMaxW(km[0]);
-            }
+
+            final double startKm = access.getStartKm();
+            // Use the start km to determine the min max values.
+            minmaxW = valueTable.getMinMaxW(startKm);
         }
         return minmaxW != null
             ? minmaxW
@@ -490,20 +485,28 @@
     protected double[] determineMinMaxQ(D4EArtifact winfo) {
         log.debug("WQSelect.determineMinMaxQ");
 
-        WstValueTable valueTable = WstValueTableFactory.getTable(
-                RiverUtils.getRiver(winfo));
+        final WstValueTable valueTable = WstValueTableFactory.getTable(RiverUtils.getRiver(winfo));
 
-        ComputationRangeAccess access = new ComputationRangeAccess(winfo);
+        final ComputationRangeAccess access = new ComputationRangeAccess(winfo);
         
         double[] minmaxQ = null;
         if(valueTable != null) {
-            double[] km = null;
-            if(access.isRange()) {
-                km =  new ComputationRangeAccess(winfo).getFromToStep();
+            
+            final KM_MODE mode = access.getKmRangeMode();
+            switch (mode) {
+            case RANGE: {
+                final double[] km =  access.getFromToStep();
                 minmaxQ = valueTable.getMinMaxQ(km[0], km[1], km[2]);
+                break;
             }
-            else {
-                km = access.getKms();
+            
+            case DISTANCE_ONLY: {
+                minmaxQ = valueTable.getMinMaxQ(access.getFrom(), access.getTo(), 0.1);
+                break;
+            }
+
+            default: {
+                final double[] km = access.getKms();
                 minmaxQ = valueTable.getMinMaxQ(km[0]);
                 for (int i = 1; i < km.length; i++) {
                     double[] tmp = valueTable.getMinMaxQ(km[i]);
@@ -514,6 +517,8 @@
                         minmaxQ[1] = tmp[1];
                     }
                 }
+                break;
+            }
             }
         }
         return minmaxQ != null

http://dive4elements.wald.intevation.org