Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernConfiguration.java @ 9483:992c188b7330
wms uinfo.inundation
author | gernotbelger |
---|---|
date | Thu, 13 Sep 2018 18:22:05 +0200 |
parents | 787fc085459b |
children | ba0561906f81 |
line wrap: on
line source
/** 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.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Collection; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper; import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper.TsvReaderException; /** * @author Domenico Nardi Tironi * */ public class UedauernConfiguration { public final static class WmsConfig { private final String label; private final String url; private final String layer; public WmsConfig(final String label, final String url, final String layer) { this.label = label; this.url = url; this.layer = layer; } public String getLabel() { return this.label; } public String getUrl() { return this.url; } public String getLayer() { return this.layer; } } public static enum YearType { jahre, mittel } private static Map<String, UedauernConfiguration> cache = new HashMap<>(); private final Map<String, WmsConfig> wmsConfigs; public static synchronized UedauernConfiguration getInstance(final String rivername, final YearType type) throws IOException, TsvReaderException { final String cacheKey = type.name() + "#" + rivername; if (!cache.containsKey(cacheKey)) { final UedauernConfiguration instance = loadConfiguration(rivername, type); cache.put(cacheKey, instance); } return cache.get(cacheKey); } private UedauernConfiguration(final String rivername, final YearType type, final Map<String, WmsConfig> wmsConfigs) { this.wmsConfigs = wmsConfigs; } private static UedauernConfiguration loadConfiguration(final String rivername, final YearType type) throws IOException, TsvReaderException { final String configFile = makeFileName(rivername, type); final File file = TsvHelper.makeFile2(configFile, rivername); final List<String[]> tsv = TsvHelper.readTsv(file, 3); final Map<String, WmsConfig> wmsConfigs = new LinkedHashMap<>(tsv.size()); for (final String[] line : tsv) { final String label = line[0]; wmsConfigs.put(label, new WmsConfig(label, line[2], line[1])); } return new UedauernConfiguration(rivername, type, wmsConfigs); } private static final String makeFileName(final String river, final YearType type) { return "wms_uedauern_" + String.valueOf(type) + "_" + river + ".tsv"; } public Collection<String> getLabels() throws UnsupportedEncodingException { return this.wmsConfigs.keySet(); } public final String getUrl(final String label) throws UnsupportedEncodingException { final WmsConfig wmsConfig = this.wmsConfigs.get(label); return wmsConfig.getUrl(); } public String getLayer(final String label) { final WmsConfig wmsConfig = this.wmsConfigs.get(label); return wmsConfig.getLayer(); } public static boolean filesExistsForRiver(final String river) { final String configFileYears = makeFileName(river, YearType.jahre); final File fileJahre = TsvHelper.makeFile2(configFileYears, river); final String configFileMittel = makeFileName(river, YearType.mittel); final File fileMittel = TsvHelper.makeFile2(configFileMittel, river); if (TsvHelper.checkFile(fileJahre) == null || TsvHelper.checkFile(fileMittel) == null) return false; return true; } }