diff artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernConfiguration.java @ 9559:ba0561906f81

Uinfo inundation duration workflow (vegetation zones, scenario), wms-config changed
author gernotbelger
date Wed, 24 Oct 2018 18:40:38 +0200
parents 787fc085459b
children 63bbd5e45839
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernConfiguration.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernConfiguration.java	Wed Oct 24 18:40:38 2018 +0200
@@ -18,6 +18,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.lang.StringUtils;
 import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper;
 import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper.TsvReaderException;
 
@@ -30,12 +31,12 @@
     public final static class WmsConfig {
         private final String label;
         private final String url;
-        private final String layer;
+        private final String layer_default;
 
         public WmsConfig(final String label, final String url, final String layer) {
             this.label = label;
             this.url = url;
-            this.layer = layer;
+            this.layer_default = layer;
         }
 
         public String getLabel() {
@@ -47,17 +48,20 @@
         }
 
         public String getLayer() {
-            return this.layer;
+            return this.layer_default;
         }
     }
 
     public static enum YearType {
-        jahre, mittel
+        jahre, mittel, szenario
     }
 
+    private final int DEFAULT_WMS_INDEX = 0;
+    private final int VEGETATIONZONE_WMS_INDEX = 1;
+
     private static Map<String, UedauernConfiguration> cache = new HashMap<>();
 
-    private final Map<String, WmsConfig> wmsConfigs;
+    private final Map<String, WmsConfig[]> wmsConfigs;
 
     public static synchronized UedauernConfiguration getInstance(final String rivername, final YearType type) throws IOException, TsvReaderException {
 
@@ -70,7 +74,7 @@
         return cache.get(cacheKey);
     }
 
-    private UedauernConfiguration(final String rivername, final YearType type, final Map<String, WmsConfig> wmsConfigs) {
+    private UedauernConfiguration(final String rivername, final YearType type, final Map<String, WmsConfig[]> wmsConfigs) {
         this.wmsConfigs = wmsConfigs;
     }
 
@@ -78,15 +82,26 @@
 
         final String configFile = makeFileName(rivername, type);
         final File file = TsvHelper.makeFile2(configFile, rivername);
-        final List<String[]> tsv = TsvHelper.readTsv(file, 3);
+        final List<String[]> tsv = TsvHelper.readTsv(file, 5);
 
-        final Map<String, WmsConfig> wmsConfigs = new LinkedHashMap<>(tsv.size());
+        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]));
+            if (line != null && line.length > 0 && !StringUtils.isEmpty(line[0])) {
+                final String label = line[0];
+                WmsConfig defaultConfig = null;
+                WmsConfig vegZoneConfig = null;
+
+                if (line.length > 2 && !StringUtils.isEmpty(line[1]) && !StringUtils.isEmpty(line[2])) {
+                    defaultConfig = new WmsConfig(label, line[2], line[1]);
+
+                    if (line.length > 4 && !StringUtils.isEmpty(line[3]) && !StringUtils.isEmpty(line[4])) {
+                        vegZoneConfig = new WmsConfig(label, line[4], line[3]);
+                    }
+                }
+                wmsConfigs.put(label, new WmsConfig[] { defaultConfig, vegZoneConfig });
+            }
         }
-
         return new UedauernConfiguration(rivername, type, wmsConfigs);
     }
 
@@ -98,27 +113,32 @@
         return this.wmsConfigs.keySet();
     }
 
-    public final String getUrl(final String label) throws UnsupportedEncodingException {
-        final WmsConfig wmsConfig = this.wmsConfigs.get(label);
-        return wmsConfig.getUrl();
+    public WmsConfig getDefaultWmsConfig(final String label) {
+        return this.getConfig(label, this.DEFAULT_WMS_INDEX);
     }
 
-    public String getLayer(final String label) {
-        final WmsConfig wmsConfig = this.wmsConfigs.get(label);
-        return wmsConfig.getLayer();
+    public WmsConfig getVegWmsConfig(final String label) {
+        return this.getConfig(label, this.VEGETATIONZONE_WMS_INDEX);
+    }
+
+    private WmsConfig getConfig(final String label, final int index) {
+        if (this.wmsConfigs.containsKey(label))
+            if (this.wmsConfigs.get(label) != null && index < this.wmsConfigs.get(label).length)
+                return this.wmsConfigs.get(label)[index];
+
+        return null;
     }
 
     public static boolean filesExistsForRiver(final String river) {
 
-        final String configFileYears = makeFileName(river, YearType.jahre);
-
-        final File fileJahre = TsvHelper.makeFile2(configFileYears, river);
+        for (final YearType t : YearType.values()) {
+            final String configFile = makeFileName(river, t);
+            final File file = TsvHelper.makeFile2(configFile, river);
 
-        final String configFileMittel = makeFileName(river, YearType.mittel);
-        final File fileMittel = TsvHelper.makeFile2(configFileMittel, river);
+            if (TsvHelper.checkFile(file) == null)
+                return false;
+        }
 
-        if (TsvHelper.checkFile(fileJahre) == null || TsvHelper.checkFile(fileMittel) == null)
-            return false;
         return true;
     }
 

http://dive4elements.wald.intevation.org