changeset 9559:ba0561906f81

Uinfo inundation duration workflow (vegetation zones, scenario), wms-config changed
author gernotbelger
date Wed, 24 Oct 2018 18:40:38 +0200
parents 709a73badd48
children a39ae474f8d5
files artifacts/doc/conf/artifacts/uinfo.xml artifacts/doc/conf/modules/wms_uedauern_jahre_Beispielfluss.tsv artifacts/doc/conf/modules/wms_uedauern_mittel_Beispielfluss.tsv artifacts/doc/conf/modules/wms_uedauern_szenario_Beispielfluss.tsv artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/BedQualityD50TimeRangeConfig.java artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TsvHelper.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/AbstractYearEpochUrlState.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationAccess.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/LoadScenarioSelect.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/UedauernConfiguration.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/WMSEpochSelectState.java artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/WMSYearSelectState.java artifacts/src/main/resources/messages.properties artifacts/src/main/resources/messages_de.properties gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractSingleItemPanel.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/MultiBehaviour.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/InundationWMSInputPanel.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/Limit5SalixBehaviour.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/SingleBehaviour.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/UinfoInundationSingleYearEpochBehaviour.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/ValidationBehaviourSingleMultiInputItem.java
diffstat 26 files changed, 343 insertions(+), 245 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts/doc/conf/artifacts/uinfo.xml	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/doc/conf/artifacts/uinfo.xml	Wed Oct 24 18:40:38 2018 +0200
@@ -256,7 +256,7 @@
     </transition>
 
     <state id="state.uinfo.inundation.load.scenario" description="state.uinfo.inundation.load.scenario" state="org.dive4elements.river.artifacts.uinfo.inundationduration.LoadScenarioSelect" helpText="help.state.uinfo.inundation.scenario">
-      <data name="sedimentheight" type="String" /> <!-- mittelwasserlage in cm! -->
+      <data name="inundation_scenario" type="String" />  
     </state>
   
   <!-- this state is unused and can be deleted: -->
--- a/artifacts/doc/conf/modules/wms_uedauern_jahre_Beispielfluss.tsv	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_jahre_Beispielfluss.tsv	Wed Oct 24 18:40:38 2018 +0200
@@ -1,38 +1,38 @@
-# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs		
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!			
- 
-# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.		
-# Pro Layer ist eine Zeile folgender Form anzulegen:			
-#<Layer-Name><Tab><Label><Tab><WMS-URL>			
- 
-# Änderungen werden erst nach einem Neustart des Servers wirksam.			
-
-1990	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1991	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1992	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1993	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1994	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1995	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!				
+ 				
+# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
+# Pro Layer ist eine Zeile folgender Form anzulegen:				
+#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>				
+ 				
+# Änderungen werden erst nach einem Neustart des Servers wirksam.				
+				
+1990	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+1991	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+1992	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+1993	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+1994	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+1995	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
 1996	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1997	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1998	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-1999	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
-
-2000	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2001	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2002	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2003	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2004	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2005	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2006	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2007	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2008	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-2009	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
-
-2010	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2011	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2012	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2013	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2014	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2015	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
-2016	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
\ No newline at end of file
+1997	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+1998	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+1999	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+		 
+2000	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+2001	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+2002	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+2003	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+2004	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+2005	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+2006	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+2007	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+2008	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+2009	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+		 
+2010	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+2011	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+2012	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+2013	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+2014	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+2015	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+2016	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
--- a/artifacts/doc/conf/modules/wms_uedauern_mittel_Beispielfluss.tsv	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/doc/conf/modules/wms_uedauern_mittel_Beispielfluss.tsv	Wed Oct 24 18:40:38 2018 +0200
@@ -1,14 +1,14 @@
-# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs		
-# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_mittel_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!			
- 
-# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.		
-# Pro Layer ist eine Zeile folgender Form anzulegen:			
-#<Layer-Name><Tab><Label><Tab><WMS-URL>			
- 
-# Änderungen werden erst nach einem Neustart des Servers wirksam.			
-
-Mittelwert (1990-2016)	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Median (1990-2016)	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Minimum (1990-2016)	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Maximum (1990-2016)	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
-Standardabweichung (1990-2016)	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
+# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_mittel_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!				
+ 				
+# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
+# Pro Layer ist eine Zeile folgender Form anzulegen:				
+#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>				
+ 				
+# Änderungen werden erst nach einem Neustart des Servers wirksam.				
+				
+Mittelwert (1990-2016)	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
+Median (1990-2016)	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
+Minimum (1990-2016)	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
+Maximum (1990-2016)	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
+Standardabweichung (1990-2016)	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_Statistik_1990_2016/MapServer/WMSServer
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/doc/conf/modules/wms_uedauern_szenario_Beispielfluss.tsv	Wed Oct 24 18:40:38 2018 +0200
@@ -0,0 +1,50 @@
+# Konfigurationsdatei für die in der Berechnungsart UINFO-Überflutungsdauern auszugebenden URLs				
+# Je Gewässer ist zwingend eine Datei mit Namen 'wms_uedauern_jahre_<Gewässername>.tsv' anzulegen. Groß-/Kleinschriebung beim Gewässernamen ist zu beachten!				
+ 				
+# Die Datei definiert für beliebig viele Layer individuell konfigurierbare Bezeichnungen und URLs.				
+# Pro Layer ist eine Zeile folgender Form anzulegen:				
+#<Themen-Bezeichnung><Tab><WMS-Layer-Nummer (Standard-WMS-URL)><Tab><WMS-URL_Standard><Tab><WMS-Layer-Nummer (Vegetationszonen-WMS-URL)><Tab><WMS-URL (Vegetationszonen)>				
+ 				
+# Änderungen werden erst nach einem Neustart des Servers wirksam.				
+				
+-200	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-190	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-180	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-170	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-160	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-150	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-140	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-130	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-120	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-110	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-100	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_1990_1999/MapServer/WMSServer
+-90	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+-80	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+-70	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+-60	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+-50	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+-40	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+-30	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+-20	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+-10	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+0	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+10	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2000_2009/MapServer/WMSServer
+20	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+30	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+40	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+50	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+60	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+70	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+80	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+90	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+100	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+110	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	1	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+120	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	2	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+130	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	3	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+140	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	4	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+150	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	5	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+160	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	6	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+170	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	7	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+180	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	8	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+190	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	9	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
+200	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer	0	https://geoportal.bafg.de/arcgis3/services/Flut3/Elbe_2010_2019/MapServer/WMSServer
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/BedQualityD50TimeRangeConfig.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/BedQualityD50TimeRangeConfig.java	Wed Oct 24 18:40:38 2018 +0200
@@ -98,9 +98,10 @@
 
             final Collection<CalRange> ranges = new ArrayList<>(results.size());
 
-            for (final String[] line : results)
-                ranges.add(new CalRange(parseInput(line[0]), parseInput(line[1]), parseInput(line[2]), parseInput(line[3])));
-
+            for (final String[] line : results) {
+                if (line != null && line.length == 4)
+                    ranges.add(new CalRange(parseInput(line[0]), parseInput(line[1]), parseInput(line[2]), parseInput(line[3])));
+            }
             return ranges.toArray(new CalRange[ranges.size()]);
         }
         catch (final TsvReaderException | IOException | BedQualityParseException e) {
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TsvHelper.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/TsvHelper.java	Wed Oct 24 18:40:38 2018 +0200
@@ -34,7 +34,7 @@
         }
     }
 
-    public static List<String[]> readTsv(final File inputFile, final int requiredLength) throws IOException, TsvReaderException {
+    public static List<String[]> readTsv(final File inputFile, final int maxLength) throws IOException, TsvReaderException {
 
         final List<String[]> result = new ArrayList<>();
 
@@ -50,9 +50,9 @@
                         continue;
                     }
 
-                    if (line.length != requiredLength) {
+                    if (line.length > maxLength) {
                         reader.close();
-                        throw new TsvReaderException("Invalid number of Tokens; should be " + requiredLength + "!");
+                        throw new TsvReaderException("Invalid number of Tokens; should not be more than" + maxLength + "!");
                     }
                     result.add(line);
                 }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/AbstractYearEpochUrlState.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/AbstractYearEpochUrlState.java	Wed Oct 24 18:40:38 2018 +0200
@@ -40,9 +40,11 @@
         this.type = type;
     }
 
+    protected abstract String getDatakey();
+
     @Override
     protected void appendItems(final Artifact artifact, final ElementCreator creator, final String name, final CallContext context, final Element select) {
-        final String dataKey = "year_epoch_select";
+        final String dataKey = getDatakey();
         try {
             if (dataKey.equals(name)) {
 
@@ -54,7 +56,7 @@
                 final AddTableDataHelper helper = new AddTableDataHelper(creator, select, "select_key", context.getMeta()); // pinKeycolum; nicht zu
 
                 helper.addColumn(0, "pinfrom", "60", "common.client.ui.selection", "ICON", "CENTER", "from");
-                helper.addColumn(1, "select_key", "240", yearOrEpoch(), columnType, "LEFT", null);
+                helper.addColumn(1, "select_key", "240", getColumnHeader(), columnType, "LEFT", null);
 
                 for (final String year : items) {
                     final Map<String, String> row = new HashMap<>();
@@ -76,7 +78,18 @@
         }
     }
 
-    private String yearOrEpoch() {
+    private String getColumnHeader() {
+        switch (this.type) {
+        case szenario:
+            return "state.uinfo.inundation.scenario.table_header";
+        default:
+            return getTypeString();
+
+        }
+
+    }
+
+    private String getTypeString() {
         switch (this.type) {
         case jahre:
             return "year";
@@ -84,6 +97,9 @@
         case mittel:
             return "state.uinfo.epoch";
 
+        case szenario:
+            return "state.uinfo.inundation.scenario";
+
         default:
             throw new IllegalStateException();
         }
@@ -91,6 +107,6 @@
 
     @Override
     protected Element createData(final XMLUtils.ElementCreator cr, final Artifact artifact, final StateData data, final CallContext context) {
-        return ScenarioTypeState.changeHeaderForCurrentState(yearOrEpoch(), data.getName(), cr, context);
+        return ScenarioTypeState.changeHeaderForCurrentState(getTypeString(), data.getName(), cr, context);
     }
 }
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationAccess.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationAccess.java	Wed Oct 24 18:40:38 2018 +0200
@@ -11,8 +11,6 @@
 package org.dive4elements.river.artifacts.uinfo.inundationduration;
 
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
 
 import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.river.artifacts.access.RangeAccess;
@@ -22,7 +20,7 @@
 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
 import org.dive4elements.river.artifacts.uinfo.UinfoCalcMode;
 import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer;
-import org.dive4elements.river.artifacts.uinfo.inundationduration.UedauernConfiguration.YearType;
+import org.dive4elements.river.artifacts.uinfo.inundationduration.UedauernConfiguration.WmsConfig;
 
 /**
  * Access to the flow depth calculation type specific SInfo artifact data.
@@ -34,39 +32,37 @@
  */
 final class InundationDurationAccess extends RangeAccess {
 
-    // IMMER ABGLEICHEN MIT SuperVegZonesTablePanel.TABLE_CELL_SEPARATOR
-    public static final String TABLE_CELL_SEPARATOR = "TABLE_CELL_SEPARATOR";
-    public static final String TABLE_ROW_SEPARATOR = "TABLE_ROW_SEPARATOR";
-
     private final EpochYearAccessHelper helper;
 
-    public static enum WmsClassification {
-        asIs {
-            @Override
-            public String configureAddress(final String serverAddress, final String url, final String vegetationZoneId) {
-                return url;
-            }
-        },
-        vegetationZone {
-            @Override
-            public String configureAddress(final String serverAddress, final String url, final String vegetationZoneId) {
-
-                try {
-                    final String urlEncoded = URLEncoder.encode(url, "UTF-8");
-                    final String vegZoneIdEncoded = URLEncoder.encode(vegetationZoneId, "UTF-8");
-
-                    return String.format("%s/%s/%s/%s", serverAddress, VegetationWmsResource.BASE_PATH, vegZoneIdEncoded, urlEncoded);
-                }
-                catch (final UnsupportedEncodingException e) {
-                    /* should never happen */
-                    e.printStackTrace();
-                    return null;
-                }
-            }
-        };
-
-        public abstract String configureAddress(String serverAddress, String url, String vegetationZoneId);
-    }
+    // public static enum WmsClassification {
+    // asIs {
+    // @Override
+    // public String configureAddress(final WmsConfig config) {
+    // return config.getUrl();
+    // }
+    // }
+    // // ,
+    // // vegetationZone {
+    // // @Override
+    // // public String configureAddress(final String serverAddress, final String url, final String vegetationZoneId) {
+    // //
+    // // try {
+    // // final String urlEncoded = URLEncoder.encode(url, "UTF-8");
+    // // final String vegZoneIdEncoded = URLEncoder.encode(vegetationZoneId, "UTF-8");
+    // //
+    // // return String.format("%s/%s/%s/%s", serverAddress, VegetationWmsResource.BASE_PATH, vegZoneIdEncoded, urlEncoded);
+    // // }
+    // // catch (final UnsupportedEncodingException e) {
+    // // /* should never happen */
+    // // e.printStackTrace();
+    // // return null;
+    // // }
+    // // }
+    // // }
+    // ;
+    //
+    // public abstract String configureAddress(final WmsConfig config);
+    // }
 
     // Fields from state:
     //
@@ -94,60 +90,59 @@
         return false;
     }
 
-    public WmsLayer createWMSLayer(final CallContext context, final String i10nKey, final WmsClassification classification, final String vegZoneId)
-            throws IOException, TsvReaderException {
+    // public WmsLayer createWMSLayer(final CallContext context, final String i10nKey, final WmsConfig classification)
+    // throws IOException, TsvReaderException {
+    //
+    // final YearType type = isUseYear() ? YearType.jahre : YearType.mittel;
+    // final String selectedElement = getSelectedLabel();
+    //
+    // final String layerLabel = Resources.getMsg(context.getMeta(), i10nKey, new Object[] { selectedElement });
+    //
+    // return createWMSLayer(context, layerLabel, type, selectedElement, classification);
+    // }
 
-        final YearType type = isUseYear() ? YearType.jahre : YearType.mittel;
-        final String selectedElement = getSelectedLabel();
+    // public WmsLayer createScenarioWMSLayer(final CallContext context, final String i10nKey, final WmsConfig
+    // classification, final String vegZoneId)
+    // throws IOException, TsvReaderException {
+    //
+    // // FIXME: use scenario-cm as label, and scenario-type
+    // final YearType type = YearType.jahre;
+    //
+    // final String selectedElement = Integer.toString(getDwspl());
+    // final String layerLabel = Resources.getMsg(context.getMeta(), i10nKey, new Object[] { selectedElement });
+    //
+    // return createWMSLayer(context, layerLabel, type, selectedElement, classification);
+    // }
 
-        final String layerLabel = Resources.getMsg(context.getMeta(), i10nKey, new Object[] { selectedElement });
+    public WmsLayer createWMSLayer(final CallContext context, final String layerLabel, final String selectedItem, final WmsConfig config,
+            final boolean showLayerLink) throws IOException, TsvReaderException {
 
-        return createWMSLayer(context, layerLabel, type, selectedElement, classification, vegZoneId);
+        // final String serverAddress = context.getDatabase().getServerAddress();
+        // final UedauernConfiguration config = UedauernConfiguration.getInstance(getRiverName(), type);
+
+        final String layerLabelFinal = Resources.getMsg(context.getMeta(), layerLabel, new Object[] { selectedItem });
+        final String url = config.getUrl();
+        final String layer = config.getLayer();
+
+        if (url != null && layer != null) {
+            // final String realUrl = classification.configureAddress(serverAddress, url, vegZoneId);
+
+            return new WmsLayer(layerLabelFinal, url, layer, showLayerLink);
+        }
+        return null;
     }
 
-    public WmsLayer createScenarioWMSLayer(final CallContext context, final String i10nKey, final WmsClassification classification, final String vegZoneId)
-            throws IOException, TsvReaderException {
-
-        // FIXME: use scenario-cm as label, and scenario-type
-        final YearType type = YearType.jahre;
-
-        final String selectedElement = Integer.toString(getDwspl());
-        final String layerLabel = Resources.getMsg(context.getMeta(), i10nKey, new Object[] { selectedElement });
-
-        return createWMSLayer(context, layerLabel, type, selectedElement, classification, vegZoneId);
-    }
-
-    private WmsLayer createWMSLayer(final CallContext context, final String layerLabel, final YearType type, final String selectedElement,
-            final WmsClassification classification, final String vegZoneId)
-                    throws IOException, TsvReaderException {
-
-        final String serverAddress = context.getDatabase().getServerAddress();
-
-        final UedauernConfiguration config = UedauernConfiguration.getInstance(getRiverName(), type);
-        final String url = config.getUrl(selectedElement);
-        final String layer = config.getLayer(selectedElement);
-
-        final String realUrl = classification.configureAddress(serverAddress, url, vegZoneId);
-
-        return new WmsLayer(layerLabel, realUrl, layer, classification == WmsClassification.asIs);
-    }
-
-    private String getSelectedLabel() {
+    public String getSelectedLabel() {
         return this.getString("year_epoch_select");
     }
 
-    private Integer getDwspl() {
+    public String getSelectedSzenario() {
         if (getIsUseScenario())
-            return super.getInteger("sedimentheight");
+            return super.getString("inundation_scenario");
 
         return null;
     }
 
-    public String getVegZones() {
-        // mit VegetationzonesAccess zusammenlegen (eine Zeile sparen...)
-        return super.getString("vegzones");
-    }
-
     public boolean getIsUseScenario() {
         return super.getBoolean("use_scenario");
     }
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/InundationDurationCalculation.java	Wed Oct 24 18:40:38 2018 +0200
@@ -16,8 +16,8 @@
 import org.dive4elements.river.artifacts.model.CalculationResult;
 import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper.TsvReaderException;
 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
-import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationAccess.WmsClassification;
 import org.dive4elements.river.artifacts.uinfo.inundationduration.InundationDurationCalculationResult.WmsLayer;
+import org.dive4elements.river.artifacts.uinfo.inundationduration.UedauernConfiguration.YearType;
 
 /**
  * @author Domenico Nardi Tironi
@@ -42,27 +42,31 @@
             // final List<VegetationZoneServerClientXChange> zones = VegetationZoneServerClientXChange.parse(zonesRaw);
             // FIXME: instead find out a-uuid of referenced vegetations
             // FIXME:
-            final String vegZoneId = "unknown";
+            // final String vegZoneId = "unknown";
 
             final boolean isUseScenario = indurax.getIsUseScenario();
 
             final InundationDurationCalculationResult result = new InundationDurationCalculationResult();
 
-            final WmsLayer inundationDurationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.inundationduration",
-                    WmsClassification.asIs, vegZoneId);
-            result.addLayer(inundationDurationLayer);
+            final String selectedItem = indurax.getSelectedLabel();
+            final YearType type = indurax.isUseYear() ? YearType.jahre : YearType.mittel;
+            final UedauernConfiguration config = UedauernConfiguration.getInstance(indurax.getRiverName(), type);
 
-            final WmsLayer vegetationLayer = indurax.createWMSLayer(this.context, "uinfo.export.url.inundationduration.vegetation",
-                    WmsClassification.vegetationZone, vegZoneId);
-            result.addLayer(vegetationLayer);
+            addLayer(indurax, "uinfo.export.url.inundationduration.inundationduration", selectedItem, config.getDefaultWmsConfig(selectedItem), result, true);
+            addLayer(indurax, "uinfo.export.url.inundationduration.vegetation", selectedItem, config.getVegWmsConfig(selectedItem), result, false);
 
             if (isUseScenario) {
-                // TODO: wieder einkommentieren, sobald die URL-Definition für Szenarien geklärt ist (und hoffentlich analog zu "mittel"
-                // und "jahre" funktioniert)
-                // final WmsLayer scenarioInundationDurationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(),
-                // "uinfo.export.url.inundationduration.scenario");
-                // result.addLayer(scenarioInundationDurationLayer);
-                //
+
+                final UedauernConfiguration configSzenario = UedauernConfiguration.getInstance(indurax.getRiverName(), YearType.szenario);
+
+                final String selectedScenario = indurax.getSelectedSzenario();
+
+                addLayer(indurax, "uinfo.export.url.inundationduration.scenario", selectedScenario, configSzenario.getDefaultWmsConfig(selectedScenario),
+                        result, true);
+
+                addLayer(indurax, "uinfo.export.url.inundationduration.vegetation_scenario", selectedScenario, configSzenario.getVegWmsConfig(selectedScenario),
+                        result, false);
+
                 // // TODO: add vegetationzone-values as styles to layer
                 // final WmsLayer scenarioVegetationLayer = indurax.createScenarioWMSLayer(this.context.getMeta(),
                 // "uinfo.export.url.inundationduration.vegetation_scenario");
@@ -77,4 +81,13 @@
             return new CalculationResult(null, problems);
         }
     }
+
+    private void addLayer(final InundationDurationAccess indurax, final String label, final String selectedItem, final UedauernConfiguration.WmsConfig config,
+            final InundationDurationCalculationResult result, final boolean show) throws IOException, TsvReaderException {
+        if (config != null) {
+            final WmsLayer layer = indurax.createWMSLayer(this.context, label, selectedItem, config, show);
+            if (layer != null)
+                result.addLayer(layer);
+        }
+    }
 }
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/LoadScenarioSelect.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/LoadScenarioSelect.java	Wed Oct 24 18:40:38 2018 +0200
@@ -8,69 +8,30 @@
 
 package org.dive4elements.river.artifacts.uinfo.inundationduration;
 
-import java.util.HashMap;
-import java.util.Map;
-
-import org.dive4elements.artifactdatabase.data.StateData;
-import org.dive4elements.artifacts.Artifact;
-import org.dive4elements.artifacts.CallContext;
-import org.dive4elements.artifacts.common.utils.XMLUtils;
-import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
-import org.dive4elements.river.artifacts.states.AddTableDataHelper;
-import org.dive4elements.river.artifacts.states.DefaultState;
-import org.dive4elements.river.artifacts.uinfo.salix.ScenarioTypeState;
-import org.w3c.dom.Element;
+import org.dive4elements.river.artifacts.uinfo.inundationduration.UedauernConfiguration.YearType;
 
 /** State in which to fetch years for sedminent load calculation. */
-public class LoadScenarioSelect extends DefaultState {
+public class LoadScenarioSelect extends AbstractYearEpochUrlState {
 
     private static final long serialVersionUID = 1L;
 
     /**
      * The default constructor that initializes an empty State object.
+     *
+     * @return
      */
     public LoadScenarioSelect() {
-    }
-
-    /** Year Select Widget. */
-    @Override
-    protected String getUIProvider() {
-        return "uinfo.sedimentheight_select";
+        super(YearType.szenario);
     }
 
     @Override
-    protected void appendItems(final Artifact artifact, final ElementCreator creator, final String name, final CallContext context, final Element select) {
-        final String datakey = "sedimentheight";
-        try {
-            if (datakey.equals(name)) {
-
-                final AddTableDataHelper helper = new AddTableDataHelper(creator, select, "cm", context.getMeta());
-
-                helper.addColumn(0, "pinfrom", "60", "common.client.ui.selection", "ICON", "CENTER", "from");
-                helper.addColumn(1, "cm", "60", "uinfo_select_delta_w_column", "INTEGER", "RIGHT", null);
-
-                for (int i = -200; i < 210; i = i + 10) {
-                    final Map<String, String> row = new HashMap<>();
-                    row.put("cm", Integer.toString(i));
-                    helper.addRow(row);
-
-                }
-                helper.submitMapToXml();
-            }
-        }
-        catch (final IllegalArgumentException iae) {
-            iae.printStackTrace();
-        }
+    protected String getUIProvider() {
+        return "uinfo.inundation.szenario";
     }
 
     @Override
-    public boolean validate(final Artifact artifact) throws IllegalArgumentException {
-        return true;
+    protected String getDatakey() {
+        return "inundation_scenario";
     }
 
-    @Override
-    protected Element createData(final XMLUtils.ElementCreator cr, final Artifact artifact, final StateData data, final CallContext context) {
-        return ScenarioTypeState.changeHeaderForCurrentState("state.uinfo.inundation.scenario", data.getName(), cr, context);
-    }
-}
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :
+}
\ No newline at end of file
--- 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;
     }
 
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/WMSEpochSelectState.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/WMSEpochSelectState.java	Wed Oct 24 18:40:38 2018 +0200
@@ -25,4 +25,9 @@
     protected String getUIProvider() {
         return "uinfo.inundation.wms_epoch";
     }
+
+    @Override
+    protected String getDatakey() {
+        return "year_epoch_select";
+    }
 }
\ No newline at end of file
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/WMSYearSelectState.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/WMSYearSelectState.java	Wed Oct 24 18:40:38 2018 +0200
@@ -25,4 +25,10 @@
     protected String getUIProvider() {
         return "uinfo.inundation.wms_year";
     }
+
+    @Override
+    protected String getDatakey() {
+        return "year_epoch_select";
+    }
+
 }
\ No newline at end of file
--- a/artifacts/src/main/resources/messages.properties	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/resources/messages.properties	Wed Oct 24 18:40:38 2018 +0200
@@ -83,6 +83,7 @@
 state.uinfo.vegetation_zones.table = Classification of Vegetation Zones and Flooding Durations (FD)
 state.uinfo.salix.supraregional = Supraregional Effects
 
+state.uinfo.inundation.scenario.table_header  = Change [cm]
 state.uinfo.inundation.year_totalepoch  = Year/Epoch
 state.uinfo.salix.year_epoch = Year/Epoch
 state.uinfo.load.year_with_soundings = Year
@@ -1184,8 +1185,8 @@
 uinfo.export.csv.meta.header.veg.color = Color
 uinfo.export.url.inundationduration.inundationduration = Flooding Duration ({0})
 uinfo.export.url.inundationduration.vegetation = Vegetation Zones ({0})
-uinfo.export.url.inundationduration.vegetation_scenario= Vegetation Zones Scenario ({0}, {1}cm)
-uinfo.export.url.inundationduration.scenario = Flooding Duration Scenario ({0}, {1}cm)
+uinfo.export.url.inundationduration.vegetation_scenario= Vegetation Zones Scenario ({0} cm)
+uinfo.export.url.inundationduration.scenario = Flooding Duration Scenario ({0} cm)
 uinfo.chart.salix_line.section.title = Iota (River/Floodplain Connectivity) - Longitudinal Section
 uinfo.chart.salix_line.section.yaxis.label = [m]
 uinfo_facet_salix_line = Iota
--- a/artifacts/src/main/resources/messages_de.properties	Wed Oct 24 12:00:49 2018 +0200
+++ b/artifacts/src/main/resources/messages_de.properties	Wed Oct 24 18:40:38 2018 +0200
@@ -83,6 +83,7 @@
 state.uinfo.vegetation_zones.table = Einteilung der Vegetationszonen und \u00dcberflutungsdauern (\u00dcFD)
 state.uinfo.salix.supraregional = \u00dcberregional wirkende Eingriffe
 
+state.uinfo.inundation.scenario.table_header  = \u00c4nderung [cm]
 state.uinfo.inundation.year_totalepoch  = Jahr/Epoche
 state.uinfo.salix.year_epoch = Jahr/Epoche
 state.uinfo.load.year_with_soundings = Jahr
@@ -1184,8 +1185,8 @@
 uinfo.export.csv.meta.header.veg.color = Farbe
 uinfo.export.url.inundationduration.inundationduration = \u00dcberflutungsdauer ({0})
 uinfo.export.url.inundationduration.vegetation = Vegetationszonen ({0})
-uinfo.export.url.inundationduration.vegetation_scenario= Vegetationszonen Szenario ({0}, {1}cm)
-uinfo.export.url.inundationduration.scenario = \u00dcberflutungsdauer Szenario ({0}, {1}cm)
+uinfo.export.url.inundationduration.vegetation_scenario= Vegetationszonen Szenario ({0} cm)
+uinfo.export.url.inundationduration.scenario = \u00dcberflutungsdauer Szenario ({0} cm)
 uinfo.chart.salix_line.section.title = Iota (Fluss/Aue-Konnektivit\u00e4t) - L\u00e4ngsschnitt
 uinfo.chart.salix_line.section.yaxis.label=[m]
 uinfo_facet_salix_line = Iota
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java	Wed Oct 24 18:40:38 2018 +0200
@@ -1620,4 +1620,6 @@
     String bundu_bezugswsts();
 
     String vegetation_zones(); // Order für Datenkorb
+
+    String uinfo_inundation_scenario_old_msg();
 }
\ No newline at end of file
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties	Wed Oct 24 18:40:38 2018 +0200
@@ -828,6 +828,7 @@
 uinfo_inundation_duration_export = Flooding Durations Export
 uinfo_inundation_duration_report= Flooding Durations Report
 uinfo_inundation_duration_set_vegetation_zone = Set Vegetation Zone Table
+uinfo_inundation_scenario_old_msg = Sounding or Waterlevel Change
 uinfo_salix_line_export = Iota Export
 uinfo_vegetation_zones_export = Vegetation Zones Export
 uinfo_vegetation_zones_report = Vegetation  Zones Report
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties	Wed Oct 24 18:40:38 2018 +0200
@@ -828,6 +828,7 @@
 uinfo_inundation_duration_export = \u00dcberflutungsdauern Export
 uinfo_inundation_duration_export = \u00dcberflutungsdauern Bericht
 uinfo_inundation_duration_set_vegetation_zone = Vegetationstabelle \u00fcbernehmen
+uinfo_inundation_scenario_old_msg = \u00c4nderung der Sohl- bzw. Mittelwasserlage
 uinfo_salix_line_export = Iota Export
 uinfo_vegetation_zones_export = Vegetationszonen Export
 uinfo_vegetation_zones_report = Vegetationszonen Bericht
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractSingleItemPanel.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractSingleItemPanel.java	Wed Oct 24 18:40:38 2018 +0200
@@ -45,6 +45,8 @@
         boolean isMultipleInputsAllowed();
 
         String titleForCreateOld();
+
+        String appendStringForCreateOld();
     }
 
     private TextItem inputItem;
@@ -99,8 +101,8 @@
         final DataItem[] yearsItems = years.getItems();
 
         final String v1 = this.behaviour.isMultipleInputsAllowed() ? yearsItems[0].getStringValue().replace(" ", ", ") : yearsItems[0].getStringValue();
-
-        final Label old = new Label(v1);
+        final String append = this.behaviour.appendStringForCreateOld() != null ? this.behaviour.appendStringForCreateOld() : "";
+        final Label old = new Label(new StringBuilder().append(v1).append(" ").append(append).toString());
         final HLayout layout = new HLayout();
         layout.setWidth("400px");
 
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java	Wed Oct 24 18:40:38 2018 +0200
@@ -38,7 +38,6 @@
 import org.dive4elements.river.client.client.ui.uinfo.LoadSedimentHeightPanel;
 import org.dive4elements.river.client.client.ui.uinfo.LoadSingleYearPanel;
 import org.dive4elements.river.client.client.ui.uinfo.LoadSingleYearPseudoEpochPanel;
-import org.dive4elements.river.client.client.ui.uinfo.SingleBehaviour;
 import org.dive4elements.river.client.client.ui.uinfo.SupraRegionalTablePanel;
 import org.dive4elements.river.client.client.ui.uinfo.VegetationzonesTableEditPanel;
 import org.dive4elements.river.client.client.ui.uinfo.VegetationzonesTablePanel;
@@ -221,17 +220,17 @@
         } else if (uiProvider.equals("common.state.load_single_year_select")) {
             return new LoadSingleYearPanel(getMSG());
         } else if (uiProvider.equals("uinfo.inundation.wms_year")) {
-            return new InundationWMSInputPanel(getMSG(), getMSG().year(), true);
+            return new InundationWMSInputPanel(getMSG(), "year_epoch_select", getMSG().year(), null, true);
         } else if (uiProvider.equals("uinfo.inundation.wms_epoch")) {
-            return new InundationWMSInputPanel(getMSG(), getMSG().epoch(), false);
+            return new InundationWMSInputPanel(getMSG(), "year_epoch_select", getMSG().epoch(), null, false);
         } else if (uiProvider.equals("common.state.load_single_year_select.show_hint")) {
             return new LoadSingleYearPanel(getMSG(), true);
         } else if (uiProvider.equals("uinfo.salix.load_single_year_pseudo_epoch_select")) {
             return new LoadSingleYearPseudoEpochPanel(getMSG());
         } else if (uiProvider.equals("minfo.sedimentload_sqti_select")) {
             return new SedLoadSQTiPanel();
-        } else if (uiProvider.equals("uinfo.sedimentheight_select")) {
-            return new LoadSedimentHeightPanel(new SingleBehaviour(getMSG()));// Type.single);
+        } else if (uiProvider.equals("uinfo.inundation.szenario")) {
+            return new InundationWMSInputPanel(getMSG(), "inundation_scenario", getMSG().uinfo_inundation_scenario_old_msg(), "cm", false);
         } else if (uiProvider.equals("uinfo.sedimentheight_select.limit5")) {
             return new LoadSedimentHeightPanel(new Limit5SalixBehaviour(getMSG()));
         } else if (uiProvider.equals("hws_datacage_panel")) {
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/MultiBehaviour.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/sinfo/MultiBehaviour.java	Wed Oct 24 18:40:38 2018 +0200
@@ -28,7 +28,7 @@
     }
 
     public MultiBehaviour(final FLYSConstants msg) {
-        super(msg);
+        super("", msg);
     }
 
     @Override
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/InundationWMSInputPanel.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/InundationWMSInputPanel.java	Wed Oct 24 18:40:38 2018 +0200
@@ -15,6 +15,7 @@
 import com.smartgwt.client.widgets.Canvas;
 import com.smartgwt.client.widgets.Label;
 import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.StaticTextItem;
 import com.smartgwt.client.widgets.form.fields.TextItem;
 import com.smartgwt.client.widgets.layout.VLayout;
 
@@ -22,15 +23,20 @@
 
     private static final long serialVersionUID = 1L;
     private final boolean isEditable;
+    private final String dataKey;
+    private final String appendString;
 
-    public InundationWMSInputPanel(final FLYSConstants msg, final String titleForCreateOld, final boolean isEditable) {
-        super(new UinfoInundationSingleYearEpochBehaviour(msg, titleForCreateOld));
+    public InundationWMSInputPanel(final FLYSConstants msg, final String dataKey, final String titleForCreateOld, final String appendString,
+            final boolean isEditable) {
+        super(new UinfoInundationSingleYearEpochBehaviour(appendString, msg, titleForCreateOld));
         this.isEditable = isEditable;
+        this.dataKey = dataKey;
+        this.appendString = appendString;
     }
 
     @Override
     protected String getDatakey() {
-        return "year_epoch_select";
+        return this.dataKey;
     }
 
     @Override
@@ -51,8 +57,18 @@
         final TextItem inputItem = createInputItem("INPUT");
         inputItem.setWidth(250);
         inputItem.setCanEdit(this.isEditable);
+
         inputItem.setShowTitle(false);
-        form.setFields(inputItem);
+
+        if (this.appendString != null) {
+
+            final StaticTextItem fromText = new StaticTextItem("staticAppend");
+            fromText.setValue(this.appendString);
+            fromText.setShowTitle(false);
+            form.setFields(inputItem, fromText);
+        } else {
+            form.setFields(inputItem);
+        }
 
         layout.addMember(title);
         layout.addMember(form);
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/Limit5SalixBehaviour.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/Limit5SalixBehaviour.java	Wed Oct 24 18:40:38 2018 +0200
@@ -28,7 +28,7 @@
     }
 
     public Limit5SalixBehaviour(final FLYSConstants msg) {
-        super(msg);
+        super("", msg);
     }
 
     @Override
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/SingleBehaviour.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/SingleBehaviour.java	Wed Oct 24 18:40:38 2018 +0200
@@ -26,7 +26,7 @@
     }
 
     public SingleBehaviour(final FLYSConstants msg) {
-        super(msg);
+        super("", msg);
     }
 
     @Override
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/UinfoInundationSingleYearEpochBehaviour.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/UinfoInundationSingleYearEpochBehaviour.java	Wed Oct 24 18:40:38 2018 +0200
@@ -23,8 +23,8 @@
 
     private final String titleForCreateOld;
 
-    public UinfoInundationSingleYearEpochBehaviour(final FLYSConstants msg, final String titleForCreateOld) {
-        super(msg);
+    public UinfoInundationSingleYearEpochBehaviour(final String appendString, final FLYSConstants msg, final String titleForCreateOld) {
+        super(appendString, msg);
         this.titleForCreateOld = titleForCreateOld;
     }
 
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/ValidationBehaviourSingleMultiInputItem.java	Wed Oct 24 12:00:49 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/uinfo/ValidationBehaviourSingleMultiInputItem.java	Wed Oct 24 18:40:38 2018 +0200
@@ -24,14 +24,17 @@
     private List<String> validInputs = null;
     protected String errorForItemMsg = null;
     protected final FLYSConstants MSG;
+    private final String appendStringForCreateOld;
 
     public ValidationBehaviourSingleMultiInputItem(final List<String> validInputs, final String errorForItemMsg, final FLYSConstants MSG) {
         this.validInputs = validInputs;
         this.errorForItemMsg = errorForItemMsg;
         this.MSG = MSG; // etwas unglücklich...
+        this.appendStringForCreateOld = "";
     }
 
-    public ValidationBehaviourSingleMultiInputItem(final FLYSConstants MSG) {
+    public ValidationBehaviourSingleMultiInputItem(final String appendStringForCreateOld, final FLYSConstants MSG) {
+        this.appendStringForCreateOld = appendStringForCreateOld;
         this.MSG = MSG;
     }
 
@@ -87,4 +90,9 @@
         return this.validInputs;
     }
 
+    @Override
+    public String appendStringForCreateOld() {
+        return this.appendStringForCreateOld;
+    }
+
 }

http://dive4elements.wald.intevation.org