diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhcalculation/TkhCalculator.java @ 9522:23d97d60b889

Selection range of D50 values for tkh calculation can now be configured with a river specific table.
author gernotbelger
date Mon, 01 Oct 2018 16:37:12 +0200
parents 83e6acdf8fc6
children 144a184a414d
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhcalculation/TkhCalculator.java	Mon Oct 01 16:35:03 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhcalculation/TkhCalculator.java	Mon Oct 01 16:37:12 2018 +0200
@@ -9,12 +9,16 @@
  */
 package org.dive4elements.river.artifacts.sinfo.tkhcalculation;
 
+import java.io.IOException;
+
 import org.apache.commons.lang.math.DoubleRange;
 import org.dive4elements.river.artifacts.common.GeneralResultType;
 import org.dive4elements.river.artifacts.common.ResultRow;
 import org.dive4elements.river.artifacts.model.Calculation;
 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
 import org.dive4elements.river.artifacts.sinfo.tkhstate.BedHeightsFinder;
+import org.dive4elements.river.artifacts.sinfo.tkhstate.BedQualityD50TimeRangeConfig.BedQualityParseException;
+import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper.TsvReaderException;
 import org.dive4elements.river.model.River;
 
 /**
@@ -30,8 +34,6 @@
         SUCCESS, NO_W, NO_BED_HEIGHT, NO_DISCHARGE, NO_SOILKIND, NO_D50, NO_VELOCITY, NO_TKH
     }
 
-    private static final int VALID_BED_MEASUREMENT_YEARS = 20;
-
     private final BedQualityD50KmValueFinder bedMeasurementsFinder;
 
     private final SoilKindKmValueFinder soilKindFinder;
@@ -58,14 +60,7 @@
 
         /* access bed quality data */
         final int soundingYear = bedHeightsProvider.getInfo().getYear();
-        BedQualityD50KmValueFinder bedMeasurementsFinder = null;
-        // try {
-        bedMeasurementsFinder = BedQualityD50KmValueFinder.loadBedMeasurements(problems, river, calcRange, soundingYear, VALID_BED_MEASUREMENT_YEARS);
-        // }
-        // catch (final BedQualityParseException | IOException | TsvReaderException e) {
-        // e.printStackTrace();
-        // }
-
+        final BedQualityD50KmValueFinder bedMeasurementsFinder = loadBedMeasurementsFinder(problems, river, calcRange, soundingYear);
         if (bedMeasurementsFinder == null)
             return new TkhCalculator(null, waterlevelProvider, dischargeProvider, bedHeightsProvider, null, null);
 
@@ -82,6 +77,18 @@
         return new TkhCalculator(bedMeasurementsFinder, waterlevelProvider, dischargeProvider, bedHeightsProvider, soilKindFinder, flowVelocitiesFinder);
     }
 
+    private static BedQualityD50KmValueFinder loadBedMeasurementsFinder(final Calculation problems, final River river, final DoubleRange calcRange,
+            final int soundingYear) {
+
+        try {
+            return BedQualityD50KmValueFinder.loadBedMeasurements(problems, river, calcRange, soundingYear);
+        }
+        catch (final BedQualityParseException | IOException | TsvReaderException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
     private TkhCalculator(final BedQualityD50KmValueFinder bedMeasurementsFinder, final WaterlevelValuesFinder waterlevelProvider,
             final DischargeValuesFinder dischargeProvider, final BedHeightsFinder bedHeightsProvider, final SoilKindKmValueFinder soilKindFinder,
             final FlowVelocityModelKmValueFinder flowVelocitiesFinder) {

http://dive4elements.wald.intevation.org