diff artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/DefaultBedHeights.java @ 9211:aca5a7a57a3a

SINFO-TKH: definition der standard sohlhöhen jetzt mit Gültigkeitsstrecke. Definitionsdateien aufgeteilt in eine pro Gewässer.
author gernotbelger
date Tue, 03 Jul 2018 13:09:46 +0200
parents ed4b14389667
children 439699ff9b2d
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/DefaultBedHeights.java	Tue Jul 03 13:00:56 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/DefaultBedHeights.java	Tue Jul 03 13:09:46 2018 +0200
@@ -10,17 +10,13 @@
 package org.dive4elements.river.artifacts.sinfo.tkhstate;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.Properties;
 
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.math.NumberRange;
-import org.dive4elements.artifacts.common.utils.Config;
 import org.dive4elements.river.artifacts.model.Calculation;
+import org.dive4elements.river.artifacts.sinfo.tkhstate.DefaultBedHeightsConfig.DefaultBedHeight;
 import org.dive4elements.river.model.BedHeight;
 import org.dive4elements.river.model.Range;
 import org.dive4elements.river.model.River;
@@ -31,7 +27,7 @@
  * @author Gernot Belger
  */
 final class DefaultBedHeights {
-    private static final String CONFIG_FILE = "sinfo_tkh_bedheights.properties";
+
     private final River river;
 
     public DefaultBedHeights(final River river) {
@@ -39,9 +35,9 @@
     }
 
     public List<BedHeight> getBedHeights(final Calculation problems) {
-        final Collection<String> bedHeightNames = loadBedHeightDefaultsForRiver(this.river, problems);
+        final Collection<DefaultBedHeight> defaults = DefaultBedHeightsConfig.getDefaults(this.river, problems);
 
-        final List<BedHeight> defaultBedHeights = loadBedHeightsByName(this.river, bedHeightNames, problems);
+        final List<BedHeight> defaultBedHeights = loadBedHeightsByName(this.river, defaults, problems);
         if (defaultBedHeights.isEmpty()) {
             problems.addProblem("sinfo.bedheightsfinder.nobedheightsforriver", this.river.getName());
             return Collections.emptyList();
@@ -56,9 +52,9 @@
             final Range range = bedHeight.getRange();
             final NumberRange bedRange = new NumberRange(range.getA(), range.getB());
 
-            if (overlapsRange(bedRange, defaultBedHeights, i + 1)) {
+            if (overlapsRange(bedRange, defaultBedHeights, i + 1))
                 problems.addProblem("sinfo.bedheightsfinder.overlappingrange", bedHeight.getDescription());
-            } else
+            else
                 result.add(bedHeight);
         }
 
@@ -78,41 +74,25 @@
         return result;
     }
 
-    private static Collection<String> loadBedHeightDefaultsForRiver(final River river, final Calculation problems) {
-
-        try {
-            final Properties properties = Config.loadProperties(CONFIG_FILE);
-            final String value = properties.getProperty(river.getName());
-            final String[] split = StringUtils.split(StringUtils.trim(value), ',');
-            if (ArrayUtils.isEmpty(split)) {
-                problems.addProblem("sinfo.bedheightsfinder.configfile.missingriver", CONFIG_FILE, river.getName());
-                return Collections.emptyList();
-            }
 
-            return Arrays.asList(split);
-        }
-        catch (final Exception e) {
-            e.printStackTrace();
-            problems.addProblem("sinfo.bedheightsfinder.configfile.loaderror", CONFIG_FILE, e.getMessage());
-            return Collections.emptyList();
-        }
-    }
+    private static List<BedHeight> loadBedHeightsByName(final River river, final Collection<DefaultBedHeight> defaults, final Calculation problems) {
 
-    private static List<BedHeight> loadBedHeightsByName(final River river, final Collection<String> bedHeightNames, final Calculation problems) {
-
-        final List<BedHeight> bedHeights = new ArrayList<>(bedHeightNames.size());
+        final List<BedHeight> bedHeights = new ArrayList<>(defaults.size());
 
-        for (final String name : bedHeightNames) {
+        for (final DefaultBedHeight heightDefault : defaults) {
+
+            final String description = heightDefault.description;
             try {
-                final BedHeight bedHeight = BedHeight.getBedHeightByDescription(river, name);
+
+                final BedHeight bedHeight = BedHeight.getBedHeightByDescription(river, description, heightDefault.startKm, heightDefault.endKm);
                 if (bedHeight == null)
-                    problems.addProblem("sinfo.bedheightsfinder.missingdescription", river.getName(), name);
+                    problems.addProblem("sinfo.bedheightsfinder.missingdescription", river.getName(), description);
                 else
                     bedHeights.add(bedHeight);
             }
             catch (final Exception e) {
                 e.printStackTrace();
-                problems.addProblem("sinfo.bedheightsfinder.missingdescription", river.getName(), name);
+                problems.addProblem("sinfo.bedheightsfinder.missingdescription", river.getName(), description);
             }
         }
 

http://dive4elements.wald.intevation.org