Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernPropertiesHelper.java @ 9178:2f5052835b76
uinfo inundationduration langjähr. Mittel, Uedauern.properties, Meldung
author | gernotbelger |
---|---|
date | Tue, 26 Jun 2018 19:48:35 +0200 |
parents | |
children | dace17e26d33 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernPropertiesHelper.java Tue Jun 26 19:48:35 2018 +0200 @@ -0,0 +1,122 @@ +/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde + * Software engineering by + * Björnsen Beratende Ingenieure GmbH + * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt + * + * This file is Free Software under the GNU AGPL (>=v3) + * and comes with ABSOLUTELY NO WARRANTY! Check out the + * documentation coming with Dive4Elements River for details. + */ +package org.dive4elements.river.artifacts.uinfo.inundationduration; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Properties; + +import org.apache.commons.lang.text.StrSubstitutor; +import org.dive4elements.artifacts.CallMeta; +import org.dive4elements.artifacts.common.utils.Config; +import org.dive4elements.river.artifacts.resources.Resources; + +/** + * @author Domenico Nardi Tironi + * + */ +public class UedauernPropertiesHelper { + + private static UedauernPropertiesHelper instance; + private final String CONFIG_FILE; + private final String rivername; + private Integer[] mittelStartEnde = null; + private String[] einzeljahre = null; + private String mittelUrl = null; + private Properties properties = null; + + public UedauernPropertiesHelper(final String rivername) { + this.rivername = rivername; + this.CONFIG_FILE = makeFileName(rivername); + } + + public static synchronized UedauernPropertiesHelper getInstance(final String rivername) { + if (UedauernPropertiesHelper.instance == null || !UedauernPropertiesHelper.instance.getRivername().equals(rivername)) { + + UedauernPropertiesHelper.instance = new UedauernPropertiesHelper(rivername); + } + return UedauernPropertiesHelper.instance; + } + + private String getRivername() { + return this.rivername; + } + + private static final String makeFileName(final String river) { + return "uinfo_uedauern_aue_" + river + ".properties"; + } + + public LinkedHashMap<String, String> getExtraLayers(final CallMeta meta) { + final LinkedHashMap<String, String> entries = new LinkedHashMap<>(); + + final Integer[] totalEpoch = getMittelStartEnd(); + final Object[] args = new Object[] { String.valueOf(totalEpoch[0]), String.valueOf(totalEpoch[1]) }; + + // final ResourceBundle rb = ResourceBundle.getBundle("Name"); + entries.put("state.uinfo.totalepoch", Resources.getMsg(meta, "state.uinfo.totalepoch", args)); // + // String.valueOf: avoid formatting + // (3.333,00 + + return entries; + } + + private Properties getProperties() { + if (this.properties == null) { + this.properties = Config.loadProperties(this.CONFIG_FILE); + } + return this.properties; + } + + private final Integer[] getMittelStartEnd() { + if (this.mittelStartEnde == null) { + final Integer mittel_start = Integer.valueOf(getProperties().get("mittel_start").toString()); + final Integer mittel_ende = Integer.valueOf(getProperties().get("mittel_ende").toString()); + this.mittelStartEnde = new Integer[] { mittel_start, mittel_ende }; // lazy + + } + return this.mittelStartEnde; + } + + public String[] getEinzeljahre() { + if (this.einzeljahre == null) { // lazy + final Object years = getProperties().get("jahre"); + if (years != null) { + this.einzeljahre = years.toString().split(","); + } + } + return this.einzeljahre; + } + + public final String getMittelUrl() { + if (this.mittelUrl == null) { // lazy + this.mittelUrl = getProperties().get("mittel_url").toString(); + } + return this.mittelUrl; + } + + public final String urlFromYear(final int year) { + // besser kein lazy-loading, da der user nochmal zurück gehen und das Jahr ändern könnte... + final String templateUrl = getProperties().get("url").toString(); + final Map<String, String> tokens = new HashMap<>(); + tokens.put("jahr", String.valueOf(year)); + final StrSubstitutor subst = new StrSubstitutor(tokens); + final String yearUrl = subst.replace(templateUrl); + return yearUrl; + } + + public static boolean fileExistsForRiver(final String river) { + final Properties properties = Config.loadProperties(makeFileName(river)); + if (properties.size() == 0) { + return false; + } + return true; + } +} \ No newline at end of file