Mercurial > dive4elements > river
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); } }