changeset 4838:ac9a3d9576b4

merged.
author Raimund Renkert <rrenkert@intevation.de>
date Wed, 23 Jan 2013 11:15:35 +0100 (2013-01-23)
parents 9e25c7523485 (current diff) 01e82da3f919 (diff)
children 8cd2f20b1d8c
files flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/MeasurementFactory.java
diffstat 45 files changed, 633 insertions(+), 360 deletions(-) [+]
line wrap: on
line diff
--- a/flys-artifacts/doc/conf/artifacts/minfo.xml	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/doc/conf/artifacts/minfo.xml	Wed Jan 23 11:15:35 2013 +0100
@@ -2,7 +2,7 @@
 <artifact name="minfo">
 
     <states>
-        <state id="state.minfo.river" description="state.minfo.river" state="de.intevation.flys.artifacts.states.RiverSelect" helpText="help.index">
+        <state id="state.minfo.river" description="state.minfo.river" state="de.intevation.flys.artifacts.states.RiverSelect" helpText="help.state.minfo.river">
             <data name="river" type="String" />
         </state>
 
@@ -11,7 +11,7 @@
                 <to state="state.minfo.calculation_mode"/>
         </transition>
 
-        <state id="state.minfo.calculation_mode" description="state.minfo.calculation_mode" state="de.intevation.flys.artifacts.states.CalculationSelectMinfo" helpText="help.minfo">
+        <state id="state.minfo.calculation_mode" description="state.minfo.calculation_mode" state="de.intevation.flys.artifacts.states.CalculationSelectMinfo" helpText="help.state.minfo.calculation_mode">
             <data name="calculation_mode" type="String"/>
         </state>
 
@@ -46,20 +46,20 @@
         </transition>
 
 
-        <state id="state.minfo.distance_only" description="state.minfo.distance_only" state="de.intevation.flys.artifacts.states.DistanceOnlySelect" helpText="help.minfo.distance">
+        <state id="state.minfo.distance_only" description="state.minfo.distance_only" state="de.intevation.flys.artifacts.states.DistanceOnlySelect" helpText="help.state.minfo.distance_only">
             <data name="ld_from" type="Double" />
             <data name="ld_to"   type="Double" />
         </state>
 
-        <state id="state.minfo.bed.year_epoch" description="state.minfo.bed.year_epoch" state="de.intevation.flys.artifacts.states.minfo.YearEpochSelect" helpText="help.minfo.year_epoch">
+        <state id="state.minfo.bed.year_epoch" description="state.minfo.bed.year_epoch" state="de.intevation.flys.artifacts.states.minfo.YearEpochSelect" helpText="help.state.minfo.bed.year_epoch">
             <data name="ye_select" type="String" />
         </state>
 
-        <state id="state.minfo.sq.location" description="state.minfo.sq.location" state="de.intevation.flys.artifacts.states.LocationSelect" helpText="help.minfo.sq.loaction">
+        <state id="state.minfo.sq.location" description="state.minfo.sq.location" state="de.intevation.flys.artifacts.states.LocationSelect" helpText="help.state.minfo.sq.location">
             <data name="ld_locations" type="double"/>
         </state>
 
-        <state id="state.minfo.bed.location" description="state.minfo.bed.location" state="de.intevation.flys.artifacts.states.DistanceOnlySelect" helpText="help.minfo.bed.loaction">
+        <state id="state.minfo.bed.location" description="state.minfo.bed.location" state="de.intevation.flys.artifacts.states.DistanceOnlySelect" helpText="help.state.minfo.bed.location">
             <data name="ld_from" type="Double" />
             <data name="ld_to" type="Double" />
         </state>
@@ -91,25 +91,27 @@
             <to state="state.minfo.bed.periods"/>
         </transition>
 
-        <state id="state.minfo.dischargestate" description="state.minfo.dischargestate" state="de.intevation.flys.artifacts.states.DischargeState" helpText="help.minfo.dischargestate">
+        <state id="state.minfo.dischargestate" description="state.minfo.dischargestate" state="de.intevation.flys.artifacts.states.DischargeState" helpText="help.state.minfo.dischargestate">
             <data name="total_channel" type="intoptions"/>
             <data name="main_channel"  type="intoptions"/>
         </state>
 
-        <state id="state.minfo.soundings" description="state.minfo.soundingsstate" state="de.intevation.flys.artifacts.states.SoundingsSelect" helpText="help.minfo.soundingsstate">
+        <state id="state.minfo.soundings" description="state.minfo.soundingsstate" state="de.intevation.flys.artifacts.states.SoundingsSelect" helpText="help.state.minfo.soundings">
             <data name="soundings" type="options"/>
         </state>
 
-        <state id="state.minfo.sq.period" description="state.minfo.sq.period" state="de.intevation.flys.artifacts.states.sq.SQPeriodSelect">
+        <state id="state.minfo.sq.period" description="state.minfo.sq.period" state="de.intevation.flys.artifacts.states.sq.SQPeriodSelect"
+				helpText="help.state.minfo.sq.period">
             <data name="start" type="Long"/>
             <data name="end"   type="Long"/>
         </state>
 
-        <state id="state.minfo.bed.difference_select" description="state.minfo.bed.difference_select" state="de.intevation.flys.artifacts.states.minfo.DifferenceSelect" helpText="help.minfo.diff_select">
+        <state id="state.minfo.bed.difference_select" description="state.minfo.bed.difference_select" state="de.intevation.flys.artifacts.states.minfo.DifferenceSelect" helpText="help.state.minfo.bed.difference_select">
             <data name="diffids" type="String" />
         </state>
 
-        <state id="state.minfo.bed.periods" description="state.minfo.bed.periods" state="de.intevation.flys.artifacts.states.minfo.BedQualityPeriodsSelect">
+        <state id="state.minfo.bed.periods" description="state.minfo.bed.periods" state="de.intevation.flys.artifacts.states.minfo.BedQualityPeriodsSelect"
+				helpText="help.state.minfo.bed.periods">
             <data name="periods" type="String"/>
         </state>
 
@@ -138,7 +140,7 @@
             <to state="state.minfo.bed.char_diameter"/>
         </transition>
 
-        <state id="state.minfo.flow_velocity" description="state.minfo.flow_velocity" state="de.intevation.flys.artifacts.states.FlowVelocityState" helpText="help.minfo.flowvelocity">
+        <state id="state.minfo.flow_velocity" description="state.minfo.flow_velocity" state="de.intevation.flys.artifacts.states.FlowVelocityState" helpText="help.state.minfo.flow_velocity">
             <outputmodes>
                 <outputmode name="flow_velocity" description="output.flow_velocity" mime-type="image/png" type="chart">
                     <facets>
@@ -165,7 +167,7 @@
             </outputmodes>
         </state>
 
-        <state id="state.minfo.bedheight_middle" description="state.minfo.bedheight_middle" state="de.intevation.flys.artifacts.states.MiddleBedHeight" helpText="help.minfo.bedheight_middle">
+        <state id="state.minfo.bedheight_middle" description="state.minfo.bedheight_middle" state="de.intevation.flys.artifacts.states.MiddleBedHeight" helpText="help.state.minfo.bedheight_middle">
             <outputmodes>
                 <outputmode name="bedheight_middle" description="output.bedheight_middle" mime-type="image/png" type="chart">
                     <facets>
@@ -187,11 +189,11 @@
             </outputmodes>
         </state>
 
-        <state id="state.minfo.sq.outliers" description="state.minfo.sq.outliers" state="de.intevation.flys.artifacts.states.OutliersInput" helpText="help.minfo.sq.outliers">
+        <state id="state.minfo.sq.outliers" description="state.minfo.sq.outliers" state="de.intevation.flys.artifacts.states.OutliersInput" helpText="help.state.minfo.sq.outliers">
             <data name="outliers" type="Double"/>
         </state>
 
-        <state id="state.minfo.bed.differences" description="state.minfo.bed.differences" state="de.intevation.flys.artifacts.states.minfo.DifferencesState" helpText="help.minfo.bed.differences">
+        <state id="state.minfo.bed.differences" description="state.minfo.bed.differences" state="de.intevation.flys.artifacts.states.minfo.DifferencesState" helpText="help.state.minfo.bed.differences">
             <outputmodes>
                 <outputmode name="bed_difference_height_year" description="output.absolute_height" mime-type="image/png" type="chart">
                     <facets>
@@ -244,7 +246,8 @@
             </outputmodes>
         </state>
 
-        <state id="state.minfo.bed.char_diameter" description="state.minfo.bed.char_diameter" state="de.intevation.flys.artifacts.states.minfo.CharDiameter">
+        <state id="state.minfo.bed.char_diameter" description="state.minfo.bed.char_diameter" state="de.intevation.flys.artifacts.states.minfo.CharDiameter"
+				helpText="help.state.minfo.bed.char_diameter">
             <data name="bed_diameter" type="options"/>
             <data name="load_diameter" type="options"/>
         </state>
@@ -335,7 +338,7 @@
             </outputmodes>
         </state>
 
-        <state id="state.minfo.bed.bed_quality" description="state.minfo.bed.bed_quality" state="de.intevation.flys.artifacts.states.minfo.BedQualityState" helpText="help.minfo.bed.bed_quality">
+        <state id="state.minfo.bed.bed_quality" description="state.minfo.bed.bed_quality" state="de.intevation.flys.artifacts.states.minfo.BedQualityState" helpText="help.state.minfo.bed.bed_quality">
             <outputmodes>
                 <outputmode name="bed_longitudinal_section" description="output.bed_longitudinal_section" mime-type="image/png" type="chart">
                     <facets>
@@ -364,7 +367,7 @@
             <condition data="calculation_mode" value="calc.sediment.load" operator="equal"/>
         </transition>
 
-        <state id="state.minfo.sediment.load.year_epoch" description="state.minfo.sediment.load.year_epoch" state="de.intevation.flys.artifacts.states.minfo.YearEpochSelect" helpText="help.minfo.year_epoch">
+        <state id="state.minfo.sediment.load.year_epoch" description="state.minfo.sediment.load.year_epoch" state="de.intevation.flys.artifacts.states.minfo.YearEpochSelect" helpText="help.state.minfo.sediment.load.year_epoch">
             <data name="ye_select" type="String"/>
         </state>
 
@@ -373,7 +376,7 @@
             <to state="state.minfo.sediment.load.location"/>
         </transition>
 
-        <state id="state.minfo.sediment.load.location" description="state.minfo.distance_only" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadDistanceSelect" helpText="help.minfo.distance">
+        <state id="state.minfo.sediment.load.location" description="state.minfo.distance_only" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadDistanceSelect" helpText="help.state.minfo.sediment.load.location">
             <data name="ld_from" type="Double" />
             <data name="ld_to"   type="Double" />
         </state>
@@ -396,16 +399,19 @@
             <condition data="ye_select" value="epoch" operator="equal"/>
         </transition>
 
-        <state id="state.minfo.sediment.load.period" description="state.minfo.bed.period" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadYearSelect">
+        <state id="state.minfo.sediment.load.period" description="state.minfo.bed.period" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadYearSelect"
+				helpText="help.state.minfo.sediment.load.period">
             <data name="start" type="Integer"/>
             <data name="end" type="Integer"/>
         </state>
 
-        <state id="state.minfo.sediment.load.epochs" description="state.minfo.bed.epochs" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadEpochSelect">
+        <state id="state.minfo.sediment.load.epochs" description="state.minfo.bed.epochs" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadEpochSelect"
+				helpText="help.state.minfo.sediment.load.epochs">
             <data name="epochs" type="String"/>
         </state>
 
-        <state id="state.minfo.sediment.load.off_epochs" description="state.minfo.bed.off_epochs" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadOffEpochSelect">
+        <state id="state.minfo.sediment.load.off_epochs" description="state.minfo.bed.off_epochs" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadOffEpochSelect"
+				helpText="help.state.minfo.sediment.load.off_epochs">
             <data name="epochs" type="String"/>
         </state>
 
@@ -424,7 +430,8 @@
             <to state="state.minfo.sediment.load.unit"/>
         </transition>
 
-        <state id="state.minfo.sediment.load.unit" description="state.minfo.sediment.load.unit" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadUnit">
+        <state id="state.minfo.sediment.load.unit" description="state.minfo.sediment.load.unit" state="de.intevation.flys.artifacts.states.minfo.SedimentLoadUnit"
+				helpText="help.state.minfo.sediment.load.unit">
             <data name="unit" type="String"/>
         </state>
 
--- a/flys-artifacts/doc/conf/artifacts/winfo.xml	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/doc/conf/artifacts/winfo.xml	Wed Jan 23 11:15:35 2013 +0100
@@ -2,16 +2,16 @@
 <artifact name="winfo">
     <states>
 
-        <state id="state.winfo.river" description="state.winfo.river" state="de.intevation.flys.artifacts.states.RiverSelect" helpText="help.index">
+        <state id="state.winfo.river" description="state.winfo.river" state="de.intevation.flys.artifacts.states.RiverSelect" helpText="help.state.winfo.river">
             <data name="river" type="String" />
         </state>
 
-        <transition transition="de.intevation.flys.artifacts.transitions.DefaultTransition" helpText="https://flys-intern.intevation.de/Flys-3.0">
+        <transition transition="de.intevation.flys.artifacts.transitions.DefaultTransition">
             <from state="state.winfo.river"/>
             <to state="state.winfo.calculation_mode"/>
         </transition>
 
-        <state id="state.winfo.calculation_mode" description="state.winfo.calculation_mode" state="de.intevation.flys.artifacts.states.CalculationSelect" helpText="help.winfo">
+        <state id="state.winfo.calculation_mode" description="state.winfo.calculation_mode" state="de.intevation.flys.artifacts.states.CalculationSelect" helpText="help.state.winfo.calculation_mode">
             <data name="calculation_mode" type="String" />
         </state>
 
@@ -74,7 +74,7 @@
             <condition data="calculation_mode" value="calc.reference.curve" operator="equal"/>
         </transition>
 
-        <state id="state.winfo.location" description="state.winfo.location" state="de.intevation.flys.artifacts.states.LocationSelect" helpText="help.winfo.duration.locations">
+        <state id="state.winfo.location" description="state.winfo.location" state="de.intevation.flys.artifacts.states.LocationSelect" helpText="help.state.winfo.location">
             <data name="ld_locations" type="Double[]" />
 
             <!--
@@ -91,12 +91,12 @@
             -->
         </state>
 
-        <state id="state.winfo.distance_only" description="state.winfo.distance_only" state="de.intevation.flys.artifacts.states.DistanceOnlySelect" helpText="help.winfo.uesk.distance">
+        <state id="state.winfo.distance_only" description="state.winfo.distance_only" state="de.intevation.flys.artifacts.states.DistanceOnlySelect" helpText="help.state.winfo.distance_only">
             <data name="ld_from" type="Double" />
             <data name="ld_to"   type="Double" />
         </state>
 
-        <state id="state.winfo.distance" description="state.winfo.distance" state="de.intevation.flys.artifacts.states.DistanceSelect" helpText="help.winfo.discharge.longitudinal.distance">
+        <state id="state.winfo.distance" description="state.winfo.distance" state="de.intevation.flys.artifacts.states.DistanceSelect" helpText="help.state.winfo.distance">
             <data name="ld_from" type="Double" />
             <data name="ld_to"   type="Double" />
             <data name="ld_step" type="Double" />
@@ -120,7 +120,7 @@
             <to state="state.winfo.uesk.wsp"/>
         </transition>
 
-        <state id="state.winfo.location_distance" description="state.winfo.location_distance" state="de.intevation.flys.artifacts.states.LocationDistanceSelect" helpText="help.winfo.wsp.location_distance">
+        <state id="state.winfo.location_distance" description="state.winfo.location_distance" state="de.intevation.flys.artifacts.states.LocationDistanceSelect" helpText="help.state.winfo.location_distance">
             <data name="ld_mode" type="String" />
             <data name="ld_locations" type="Double[]" />
             <data name="ld_from" type="Double" />
@@ -187,7 +187,7 @@
         </transition>
 
 
-        <state id="state.winfo.wq" description="state.winfo.wq" state="de.intevation.flys.artifacts.states.WQSelect" helpText="help.winfo.wsp.wq">
+        <state id="state.winfo.wq" description="state.winfo.wq" state="de.intevation.flys.artifacts.states.WQSelect" helpText="help.state.winfo.wq">
             <data name="wq_isq" type="Boolean" />
             <data name="wq_isfree" type="Boolean" />
             <data name="wq_isrange" type="Boolean" />
@@ -198,17 +198,17 @@
         </state>
 
         <state id="state.winfo.wq_adapted" description="state.winfo.wq_adapted"
-               state="de.intevation.flys.artifacts.states.WQAdapted" helpText="help.winfo.discharge.longitudinal.wq">
+               state="de.intevation.flys.artifacts.states.WQAdapted" helpText="help.state.winfo.wq_adapted">
             <!-- TODO Add data objects -->
             <data name="wq_isq"   type="String" />
             <data name="wq_values" type="WQTriple" />
         </state>
 
-        <state id="state.winfo.waterlevel_pair_select" description="state.winfo.waterlevel_pair_select" state="de.intevation.flys.artifacts.states.WaterlevelPairSelectState" helpText="help.winfo.diff.diffs">
+        <state id="state.winfo.waterlevel_pair_select" description="state.winfo.waterlevel_pair_select" state="de.intevation.flys.artifacts.states.WaterlevelPairSelectState" helpText="help.state.winfo.waterlevel_pair_select">
             <data name="diffids" type="String" />
         </state>
 
-        <state id="state.winfo.reference.curve.input.start" description="state.winfo.reference.curve.input (start)" state="de.intevation.flys.artifacts.states.EnterLocationState" helpText="help.winfo.reference.curve.start">
+        <state id="state.winfo.reference.curve.input.start" description="state.winfo.reference.curve.input (start)" state="de.intevation.flys.artifacts.states.EnterLocationState" helpText="help.state.winfo.reference.curve.input.start">
             <data name="reference_startpoint" type="Double[]"/>
         </state>
 
@@ -217,7 +217,7 @@
             <to   state="state.winfo.reference.curve.input.end"/>
         </transition>
 
-        <state id="state.winfo.reference.curve.input.end" description="state.winfo.reference.curve.input (end)" state="de.intevation.flys.artifacts.states.EnterMultipleLocationsState" helpText="help.winfo.reference.curve.end">
+        <state id="state.winfo.reference.curve.input.end" description="state.winfo.reference.curve.input (end)" state="de.intevation.flys.artifacts.states.EnterMultipleLocationsState" helpText="help.state.winfo.reference.curve.input.end">
             <data name="reference_endpoint" type="Double[]"/>
         </state>
 
@@ -226,7 +226,7 @@
             <to state="state.winfo.reference.curve"/>
         </transition>
 
-        <state id="state.winfo.reference.curve" description="state.winfo.reference.curve" state="de.intevation.flys.artifacts.states.ReferenceCurveState" helpText="">
+        <state id="state.winfo.reference.curve" description="state.winfo.reference.curve" state="de.intevation.flys.artifacts.states.ReferenceCurveState" helpText="help.state.winfo.reference.curve">
             <outputmodes>
                 <outputmode name="reference_curve_normalized" mime-type="image/png" type="chart">
                     <facets>
@@ -256,7 +256,7 @@
             </outputmodes>
         </state>
 
-        <state id="state.winfo.w_differences" description="state.winfo.w_differences" state="de.intevation.flys.artifacts.states.WDifferencesState" helpText="https://flys-intern.intevation.de/Flys-3.0">
+        <state id="state.winfo.w_differences" description="state.winfo.w_differences" state="de.intevation.flys.artifacts.states.WDifferencesState" helpText="help.state.winfo.w_differences">
 
             <outputmodes>
                 <outputmode name="w_differences" description="output.w_differences" mime-type="image/png" type="chart">
@@ -280,7 +280,7 @@
             </outputmodes>
         </state>
 
-        <state id="state.winfo.durationcurve" description="state.winfo.durationcurve" state="de.intevation.flys.artifacts.states.DurationCurveState" helpText="https://flys-intern.intevation.de/Flys-3.0">
+        <state id="state.winfo.durationcurve" description="state.winfo.durationcurve" state="de.intevation.flys.artifacts.states.DurationCurveState" helpText="help.state.winfo.durationcurve">
             <outputmodes>
                 <outputmode name="duration_curve" description="output.duration_curve" mime-type="image/png" type="chart">
                     <facets>
@@ -307,7 +307,7 @@
             </outputmodes>
         </state>
 
-        <state id="state.winfo.computeddischargecurve" description="state.winfo.computeddischargecurve" state="de.intevation.flys.artifacts.states.ComputedDischargeCurveState" helpText="https://flys-intern.intevation.de/Flys-3.0">
+        <state id="state.winfo.computeddischargecurve" description="state.winfo.computeddischargecurve" state="de.intevation.flys.artifacts.states.ComputedDischargeCurveState" helpText="help.state.winfo.computeddischargecurve">
             <outputmodes>
                 <outputmode name="computed_discharge_curve" description="output.computed_discharge_curve" mime-type="image/png" type="chart">
                     <facets>
@@ -352,7 +352,7 @@
             <to state="state.winfo.discharge_longitudinal_section"/>
         </transition>
 
-        <state id="state.winfo.waterlevel" description="state.winfo.waterlevel" state="de.intevation.flys.artifacts.states.WaterlevelState" helpText="https://flys-intern.intevation.de/Flys-3.0">
+        <state id="state.winfo.waterlevel" description="state.winfo.waterlevel" state="de.intevation.flys.artifacts.states.WaterlevelState" helpText="help.state.winfo.waterlevel">
             <outputmodes>
                 <outputmode name="longitudinal_section" description="output.longitudinal_section" mime-type="image/png" type="chart">
                   <facets>
@@ -396,7 +396,7 @@
             </outputmodes>
         </state>
 
-        <state id="state.winfo.discharge_longitudinal_section" description="state.winfo.discharge_longitudinal_section" state="de.intevation.flys.artifacts.states.DischargeLongitudinalSection" helpText="https://flys-intern.intevation.de/Flys-3.0">
+        <state id="state.winfo.discharge_longitudinal_section" description="state.winfo.discharge_longitudinal_section" state="de.intevation.flys.artifacts.states.DischargeLongitudinalSection" helpText="help.state.winfo.discharge_longitudinal_section">
             <outputmodes>
                 <outputmode name="discharge_longitudinal_section" description="output.discharge_longitudinal_section" mime-type="image/png" type="chart">
                     <facets>
@@ -445,7 +445,7 @@
             <to state="state.winfo.uesk.dgm"/>
         </transition>
 
-        <state id="state.winfo.uesk.wsp" description="state.winfo.uesk.wsp" state="de.intevation.flys.artifacts.states.WaterlevelSelectState" helpText="help.winfo.uesk.wsp">
+        <state id="state.winfo.uesk.wsp" description="state.winfo.uesk.wsp" state="de.intevation.flys.artifacts.states.WaterlevelSelectState" helpText="help.state.winfo.uesk.wsp">
             <data name="wsp" type="String" />
         </state>
 
@@ -454,7 +454,7 @@
             <to state="state.winfo.uesk.dgm"/>
         </transition>
 
-        <state id="state.winfo.uesk.dgm" description="state.winfo.uesk.dgm" state="de.intevation.flys.artifacts.states.DGMSelect" helpText="help.winfo.uesk.dem">
+        <state id="state.winfo.uesk.dgm" description="state.winfo.uesk.dgm" state="de.intevation.flys.artifacts.states.DGMSelect" helpText="help.state.winfo.uesk.dgm">
             <data name="dgm" type="String" />
         </state>
 
@@ -463,7 +463,7 @@
             <to state="state.winfo.uesk.profiles"/>
         </transition>
 
-        <state id="state.winfo.uesk.profiles" description="state.winfo.uesk.profiles" state="de.intevation.flys.artifacts.states.ProfileDistanceSelect" helpText="help.winfo.uesk.profiles">
+        <state id="state.winfo.uesk.profiles" description="state.winfo.uesk.profiles" state="de.intevation.flys.artifacts.states.ProfileDistanceSelect" helpText="help.state.winfo.uesk.profiles">
             <data name="profile_distance" type="String" />
         </state>
 
@@ -472,7 +472,7 @@
             <to state="state.winfo.uesk.floodplain"/>
         </transition>
 
-        <state id="state.winfo.uesk.floodplain" description="state.winfo.uesk.floodplain.description" state="de.intevation.flys.artifacts.states.FloodplainChoice" helpText="help.winfo.uesk.floodplain">
+        <state id="state.winfo.uesk.floodplain" description="state.winfo.uesk.floodplain.description" state="de.intevation.flys.artifacts.states.FloodplainChoice" helpText="help.state.winfo.uesk.floodplain">
             <data name="use_floodplain" type="Boolean" />
         </state>
 
@@ -481,7 +481,7 @@
             <to state="state.winfo.uesk.differences"/>
         </transition>
 
-        <state id="state.winfo.uesk.differences" description="state.winfo.uesk.differences" state="de.intevation.flys.artifacts.states.WaterlevelGroundDifferences" helpText="help.winfo.uesk.differences">
+        <state id="state.winfo.uesk.differences" description="state.winfo.uesk.differences" state="de.intevation.flys.artifacts.states.WaterlevelGroundDifferences" helpText="help.state.winfo.uesk.differences">
             <data name="diff_from" type="Double" />
             <data name="diff_to"   type="Double" />
             <data name="diff_diff" type="Double" />
@@ -492,7 +492,7 @@
             <to state="state.winfo.uesk.scenario"/>
         </transition>
 
-        <state id="state.winfo.uesk.scenario" description="state.winfo.uesk.scenario" state="de.intevation.flys.artifacts.states.ScenarioSelect" helpText="help.winfo.uesk.scenario">
+        <state id="state.winfo.uesk.scenario" description="state.winfo.uesk.scenario" state="de.intevation.flys.artifacts.states.ScenarioSelect" helpText="help.state.winfo.uesk.scenario">
             <data name="scenario" type="String" />
             <data name="uesk.barriers" type="String" />
         </state>
@@ -502,7 +502,7 @@
             <to state="state.winfo.uesk.uesk"/>
         </transition>
 
-        <state id="state.winfo.uesk.uesk" description="state.winfo.uesk.uesk" state="de.intevation.flys.artifacts.states.FloodMapState" helpText="https://flys-intern.intevation.de/Flys-3.0">
+        <state id="state.winfo.uesk.uesk" description="state.winfo.uesk.uesk" state="de.intevation.flys.artifacts.states.FloodMapState" helpText="help.state.winfo.uesk.uesk">
             <outputmodes>
                 <outputmode name="floodmap" description="output.uesk.map.description" type="map">
                     <facets>
@@ -536,7 +536,7 @@
 
 
         <!-- path for historical discharge curves -->
-        <state id="state.winfo.historicalq.reference_gauge" description="state.winfo.historicalq.reference_gauge" state="de.intevation.flys.artifacts.states.ReferenceGaugeState" helpText="help.winfo.historical.discharge.reference_gauge">
+        <state id="state.winfo.historicalq.reference_gauge" description="state.winfo.historicalq.reference_gauge" state="de.intevation.flys.artifacts.states.ReferenceGaugeState" helpText="help.state.winfo.historicalq.reference_gauge">
             <data name="reference_gauge" type="Integer" />
         </state>
 
@@ -545,7 +545,7 @@
             <to state="state.winfo.historicalq.timerange"/>
         </transition>
 
-        <state id="state.winfo.historicalq.timerange" description="state.winfo.historicalq.timerange" state="de.intevation.flys.artifacts.states.GaugeTimerangeState" helpText="help.winfo.historical.discharge.timerange">
+        <state id="state.winfo.historicalq.timerange" description="state.winfo.historicalq.timerange" state="de.intevation.flys.artifacts.states.GaugeTimerangeState" helpText="help.state.winfo.historicalq.timerange">
             <data name="year_range" type="longrange"/>
         </state>
 
@@ -554,7 +554,7 @@
             <to state="state.winfo.historicalq.mode"/>
         </transition>
 
-        <state id="state.winfo.historicalq.mode" description="state.winfo.historicalq.mode" state="de.intevation.flys.artifacts.states.HistoricalDischargeState" helpText="help.winfo.historical.discharge.mode">
+        <state id="state.winfo.historicalq.mode" description="state.winfo.historicalq.mode" state="de.intevation.flys.artifacts.states.HistoricalDischargeState" helpText="help.state.winfo.historicalq.mode">
             <data name="historical_mode" type="intoptions" />
             <data name="historical_values" type="doublearray" />
         </state>
@@ -564,7 +564,7 @@
             <to state="state.winfo.historicalq.compute"/>
         </transition>
 
-        <state id="state.winfo.historicalq.compute" description="state.winfo.historicalq.compute" state="de.intevation.flys.artifacts.states.HistoricalDischargeComputeState" helpText="https://flys-intern.intevation.de/Flys-3.0">
+        <state id="state.winfo.historicalq.compute" description="state.winfo.historicalq.compute" state="de.intevation.flys.artifacts.states.HistoricalDischargeComputeState" helpText="help.state.winfo.historicalq.compute">
             <outputmodes>
                 <outputmode name="historical_discharge" description="output.historical_discharge.description" mime-type="image/png" type="chart">
                     <facets>
@@ -598,23 +598,26 @@
 
         <state id="state.winfo.function_select"
             description="state.winfo.function_select"
-            state="de.intevation.flys.artifacts.states.fixation.FunctionSelect">
+            state="de.intevation.flys.artifacts.states.fixation.FunctionSelect"
+			helpText="help.state.winfo.function_select">
             <data name="function" type="String"/>
         </state>
 
         <state id="state.winfo.extreme.percent"
             description="state.winfo.extreme.percent"
-            state="de.intevation.flys.artifacts.states.extreme.PercentInput">
+            state="de.intevation.flys.artifacts.states.extreme.PercentInput"
+			helpText="help.state.winfo.extreme.percent">
             <data name="percent" type="Double"/>
         </state>
 
         <state id="state.winfo.extreme.qinput"
             description="state.winfo.extreme.qinput"
-            state="de.intevation.flys.artifacts.states.extreme.ExtremeQInput">
+            state="de.intevation.flys.artifacts.states.extreme.ExtremeQInput"
+			helpText="help.state.winfo.extreme.qinput">
             <data name="ranges" type="Double[]"/>
         </state>
 
-        <state id="state.winfo.extreme.curve" description="state.winfo.extreme.curve" state="de.intevation.flys.artifacts.states.extreme.ExtremeCompute" helpText="https://flys-intern.intevation.de/Flys-3.0">
+        <state id="state.winfo.extreme.curve" description="state.winfo.extreme.curve" state="de.intevation.flys.artifacts.states.extreme.ExtremeCompute" helpText="help.state.winfo.extreme.curve">
             <outputmodes>
                 <outputmode name="longitudinal_section" description="output.longitudinal_section" mime-type="image/png" type="chart">
                   <facets>
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedHeightAccess.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedHeightAccess.java	Wed Jan 23 11:15:35 2013 +0100
@@ -2,6 +2,8 @@
 
 import java.util.List;
 
+import de.intevation.artifacts.CallContext;
+
 import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.model.minfo.BedHeight;
 import de.intevation.flys.artifacts.model.minfo.BedHeightFactory;
@@ -14,38 +16,31 @@
 import org.apache.log4j.Logger;
 
 
-public class BedHeightAccess extends Access {
+public class BedHeightAccess
+extends      RangeAccess
+{
 
     private static final Logger logger = Logger.getLogger(BedHeightAccess.class);
 
     private int[] singleIDs;
     private int[] epochIDs;
 
-    private Double lowerKM;
-    private Double upperKM;
-
     private String time;
 
-    public BedHeightAccess(FLYSArtifact artifact) {
-        super(artifact);
+    public BedHeightAccess(FLYSArtifact artifact, CallContext context) {
+        super(artifact, context);
     }
 
 
     public Double getLowerKM() {
-        if (lowerKM == null) {
-            lowerKM = getDouble("ld_from");
-        }
-
-        return lowerKM;
+        // TODO update callers
+        return getFrom();
     }
 
 
     public Double getUpperKM() {
-        if (upperKM == null) {
-            upperKM = getDouble("ld_to");
-        }
-
-        return upperKM;
+        // TODO update callers
+        return getTo();
     }
 
 
@@ -150,8 +145,8 @@
         BedHeightSingle single = BedHeightSingle.getBedHeightSingleById(
                 artifact.getDataAsInteger("height_id"));
         return BedHeightSingleValue.getBedHeightSingleValues(single,
-                artifact.getDataAsDouble("ld_from"),
-                artifact.getDataAsDouble("ld_to"));
+                getFrom(),
+                getTo());
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedQualityAccess.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedQualityAccess.java	Wed Jan 23 11:15:35 2013 +0100
@@ -6,37 +6,24 @@
 
 import org.apache.log4j.Logger;
 
+import de.intevation.artifacts.CallContext;
+
 import de.intevation.flys.artifacts.FLYSArtifact;
 import de.intevation.flys.artifacts.model.DateRange;
 
 
-public class BedQualityAccess extends RiverAccess {
+public class BedQualityAccess extends RangeAccess {
 
     private static final Logger logger = Logger
         .getLogger(BedQualityAccess.class);
 
-    private Double from;
-    private Double to;
     private List<String> bedDiameter;
     private List<String> bedloadDiameter;
     private List<DateRange> ranges;
 
-    public BedQualityAccess(FLYSArtifact artifact) {
-        super(artifact);
-    }
 
-    public double getFrom() {
-        if (from == null) {
-            from = getDouble("ld_from");
-        }
-        return from.doubleValue();
-    }
-
-    public double getTo() {
-        if (to == null) {
-            to = getDouble("ld_to");
-        }
-        return to.doubleValue();
+    public BedQualityAccess(FLYSArtifact artifact, CallContext context) {
+        super(artifact, context);
     }
 
     public List<DateRange> getDateRanges() {
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/ExtremeAccess.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/ExtremeAccess.java	Wed Jan 23 11:15:35 2013 +0100
@@ -1,5 +1,7 @@
 package de.intevation.flys.artifacts.access;
 
+import de.intevation.artifacts.CallContext;
+
 import de.intevation.flys.artifacts.FLYSArtifact;
 
 import de.intevation.flys.artifacts.model.RangeWithValues;
@@ -13,15 +15,11 @@
 
 /** Access data used for extreme value analysis. */
 public class ExtremeAccess
-extends      RiverAccess
+extends      RangeAccess
 {
     /** Our private logger. */
     private static Logger logger = Logger.getLogger(ExtremeAccess.class);
 
-    protected Double from;
-    protected Double to;
-    protected Double step;
-
     protected Long start;
     protected Long end;
 
@@ -32,57 +30,8 @@
     protected List<RangeWithValues> ranges;
 
 
-    public ExtremeAccess() {
-    }
-
-
-    public ExtremeAccess(FLYSArtifact artifact) {
-        super(artifact);
-    }
-
-
-    /** From (km) for calculation. */
-    public Double getFrom() {
-
-        if (from == null) {
-            from = getDouble("ld_from");
-        }
-
-        if (logger.isDebugEnabled()) {
-            logger.debug("from: '" + from + "'");
-        }
-
-        return from;
-    }
-
-
-    /** To (km) for calculation. */
-    public Double getTo() {
-
-        if (to == null) {
-            to = getDouble("ld_to");
-        }
-
-        if (logger.isDebugEnabled()) {
-            logger.debug("to: '" + to + "'");
-        }
-
-        return to;
-    }
-
-
-    /** Step width for calculation. */
-    public Double getStep() {
-
-        if (step == null) {
-            step = getDouble("ld_step");
-        }
-
-        if (logger.isDebugEnabled()) {
-            logger.debug("step: '" + step + "'");
-        }
-
-        return step;
+    public ExtremeAccess(FLYSArtifact artifact, CallContext context) {
+        super(artifact, context);
     }
 
 
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/FlowVelocityAccess.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/FlowVelocityAccess.java	Wed Jan 23 11:15:35 2013 +0100
@@ -1,20 +1,20 @@
 package de.intevation.flys.artifacts.access;
 
+import de.intevation.artifacts.CallContext;
+
 import de.intevation.flys.artifacts.FLYSArtifact;
 
 
 /** Access to data that deals with flow velocity stuff. */
-public class FlowVelocityAccess extends RiverAccess {
+public class FlowVelocityAccess
+extends      RangeAccess
+{
 
     private int[] mainChannels;
     private int[] totalChannels;
 
-    private Double lowerKM;
-    private Double upperKM;
-
-
-    public FlowVelocityAccess(FLYSArtifact artifact) {
-        super(artifact);
+    public FlowVelocityAccess(FLYSArtifact artifact, CallContext context) {
+        super(artifact, context);
     }
 
 
@@ -37,20 +37,14 @@
 
 
     public Double getLowerKM() {
-        if (lowerKM == null) {
-            lowerKM = getDouble("ld_from");
-        }
-
-        return lowerKM;
+        // TODO update callers to getFrom
+        return getFrom();
     }
 
 
     public Double getUpperKM() {
-        if (upperKM == null) {
-            upperKM = getDouble("ld_to");
-        }
-
-        return upperKM;
+        // TODO update callers to getTo
+        return getTo();
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/RangeAccess.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/RangeAccess.java	Wed Jan 23 11:15:35 2013 +0100
@@ -15,6 +15,12 @@
 
     private CallContext context;
 
+    Double from;
+
+    Double to;
+
+    Double step;
+
 
     public RangeAccess(FLYSArtifact artifact, CallContext context) {
         super(artifact);
@@ -22,6 +28,49 @@
     }
 
 
+    /** Return ld_from data (in km). */
+    public double getFrom() {
+        if (from == null) {
+            from = getDouble("ld_from");
+        }
+
+        if (logger.isDebugEnabled()) {
+            logger.debug("from: '" + from + "'");
+        }
+
+        return from.doubleValue();
+    }
+
+
+    /** Return ld_to data (in km). */
+    public double getTo() {
+        if (to == null) {
+            to = getDouble("ld_to");
+        }
+
+        if (logger.isDebugEnabled()) {
+            logger.debug("to: '" + to + "'");
+        }
+
+        return to.doubleValue();
+    }
+
+
+    /** Step width for calculation. */
+    public Double getStep() {
+
+        if (step == null) {
+            step = getDouble("ld_step");
+        }
+
+        if (logger.isDebugEnabled()) {
+            logger.debug("step: '" + step + "'");
+        }
+
+        return step;
+    }
+
+
     /**
      * Get min and max kilometer, independent of parametization
      * (ld_from/to vs ld_locations).
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/SedimentLoadAccess.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/SedimentLoadAccess.java	Wed Jan 23 11:15:35 2013 +0100
@@ -4,41 +4,34 @@
 
 import org.apache.log4j.Logger;
 
+import de.intevation.artifacts.CallContext;
+
 import de.intevation.flys.artifacts.FLYSArtifact;
 
 
 public class SedimentLoadAccess
-extends RiverAccess
+extends      RangeAccess
 {
     private static final Logger logger = Logger.getLogger(BedHeightAccess.class);
 
     private int[] singleIDs;
     private int[] epochIDs;
 
-    private Double lowerKM;
-    private Double upperKM;
-
     private String time;
     private String unit;
 
-    public SedimentLoadAccess(FLYSArtifact artifact) {
-        super(artifact);
+    public SedimentLoadAccess(FLYSArtifact artifact, CallContext context) {
+        super(artifact, context);
     }
 
     public Double getLowerKM() {
-        if (lowerKM == null) {
-            lowerKM = getDouble("ld_from");
-        }
-
-        return lowerKM;
+        // TODO update callers
+        return getFrom();
     }
 
     public Double getUpperKM() {
-        if (upperKM == null) {
-            upperKM = getDouble("ld_to");
-        }
-
-        return upperKM;
+        // TODO update callers
+        return getTo();
     }
 
     public String getYearEpoch() {
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/StdDevOutlier.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/math/StdDevOutlier.java	Wed Jan 23 11:15:35 2013 +0100
@@ -21,7 +21,7 @@
 
     public static Integer findOutlier(
         List<Double> values,
-        double       factor, 
+        double       factor,
         double []    stdDevResult
     ) {
         boolean debug = log.isDebugEnabled();
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation4.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation4.java	Wed Jan 23 11:15:35 2013 +0100
@@ -1,19 +1,20 @@
 package de.intevation.flys.artifacts.model;
 
+import de.intevation.flys.artifacts.access.Calculation4Access;
+
 import de.intevation.flys.artifacts.math.BackJumpCorrector;
 import de.intevation.flys.artifacts.math.Function;
 import de.intevation.flys.artifacts.math.Identity;
 import de.intevation.flys.artifacts.math.Linear;
 
 import de.intevation.flys.artifacts.model.RiverFactory;
+
 import de.intevation.flys.artifacts.model.WstValueTable.QPosition;
 
 import de.intevation.flys.model.River;
 
 import de.intevation.flys.utils.DoubleUtil;
 
-import de.intevation.flys.artifacts.access.Calculation4Access;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -273,12 +274,20 @@
         }
 
         // Generate the "Umhuellende".
-        results = generateInfolding(table, results, from, to, step);
+        ConstantWQKms [] infoldings =
+            generateInfolding(table, results, from, to, step);
 
-        return new CalculationResult(results, this);
+        // TODO: Use qkms in a new result type.
+        WQKms [] newResults = new WQKms[results.length + infoldings.length];
+        System.arraycopy(
+            results, 0, newResults, 0, results.length);
+        System.arraycopy(
+            infoldings, 0, newResults, results.length, infoldings.length);
+
+        return new CalculationResult(newResults, this);
     }
 
-    protected WQKms [] generateInfolding(
+    protected ConstantWQKms [] generateInfolding(
         WstValueTable wst,
         WQKms []      results,
         double        from,
@@ -290,43 +299,42 @@
         InfoldingColumns ic = new InfoldingColumns(columns);
         ic.markInfoldingColumns(results);
 
-        List<WQKms> infoldings = new ArrayList<WQKms>();
+        List<ConstantWQKms> infoldings = new ArrayList<ConstantWQKms>();
 
         boolean [] infoldingColumns = ic.getInfoldingColumns();
+
+        double [] kms = null;
+        double [] ws  = null;
+
         for (int i = 0; i < infoldingColumns.length; ++i) {
             if (!infoldingColumns[i]) {
                 continue;
             }
-            double q = columns[i].getQRangeTree().findQ(from);
-            if (Double.isNaN(q)) {
-                addProblem(from, "cannot.find.q");
-                continue;
+
+            if (kms == null) {
+                kms = DoubleUtil.explode(from, to, step);
+                ws  = new double[kms.length];
             }
-            double [] kms = DoubleUtil.explode(from, to, step);
-            double [] oqs = new double[kms.length];
-            double [] ows = new double[kms.length];
-            boolean success =
-                wst.interpolate(q, from, kms, ows, oqs, this) != null;
 
-            if (success) {
-                // TODO: generate a better name. I18N.
-                String name = "Umh\u00fcllende " + columns[i].getName();
-                WQKms wqkms = new WQKms(kms, oqs, ows, name);
-                infoldings.add(wqkms);
+            QRangeTree.QuickQFinder qf =
+                columns[i].getQRangeTree().new QuickQFinder();
+
+            int numProblemsBefore = numProblems();
+            double [] qs = qf.findQs(kms, this);
+
+            // TODO: i18n
+            String name = "Umh\u00fcllende " + columns[i].getName();
+
+            ConstantWQKms infolding = new ConstantWQKms(kms, qs, ws, name);
+
+            if (numProblems() > numProblemsBefore) {
+                infolding.removeNaNs();
             }
+
+            infoldings.add(infolding);
         }
 
-        int N = infoldings.size();
-        if (N > 0) {
-            WQKms [] newResults = new WQKms[results.length + N];
-            System.arraycopy(results, 0, newResults, 0, results.length);
-            for (int i = 0; i < N; ++i) {
-                newResults[i+results.length] = infoldings.get(i);
-            }
-            results = newResults;
-        }
-
-        return results;
+        return infoldings.toArray(new ConstantWQKms[infoldings.size()]);
     }
 
     protected String createName(int index) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/ConstantWQKms.java	Wed Jan 23 11:15:35 2013 +0100
@@ -0,0 +1,30 @@
+package de.intevation.flys.artifacts.model;
+
+public class ConstantWQKms
+extends      WQKms
+{
+    public ConstantWQKms() {
+        this("");
+    }
+
+    public ConstantWQKms(String name) {
+        super(name);
+    }
+
+    public ConstantWQKms(int capacity) {
+        this(capacity, "");
+    }
+
+    public ConstantWQKms(int capacity, String name) {
+        super(capacity, name);
+    }
+
+    public ConstantWQKms(double [] kms, double [] qs, double [] ws) {
+        this(kms, qs, ws, "");
+    }
+
+    public ConstantWQKms(double [] kms, double [] qs, double [] ws, String name) {
+        super(kms, qs, ws, name);
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/InfoldingColumns.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/InfoldingColumns.java	Wed Jan 23 11:15:35 2013 +0100
@@ -31,18 +31,18 @@
         return infoldingColumns;
     }
 
-    public void markInfoldingColumns(WQKms [] wqkms) {
-        for (WQKms wqk: wqkms) {
-            markInfoldingColumns(wqk);
+    public void markInfoldingColumns(QKms [] qkms) {
+        for (QKms qk: qkms) {
+            markInfoldingColumns(qk);
         }
     }
 
-    public void markInfoldingColumns(WQKms wqkms) {
-        int N = wqkms.size();
+    public void markInfoldingColumns(QKms qkms) {
+        int N = qkms.size();
         int C = qFinders.length-1;
         for (int i = 0; i < N; ++i) {
-            double km       = wqkms.getKm(i);
-            double q        = wqkms.getQ(i);
+            double km       = qkms.getKm(i);
+            double q        = qkms.getQ(i);
             double above    =  Double.MAX_VALUE;
             double below    = -Double.MAX_VALUE;
             int    aboveIdx = -1;
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Parameters.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Parameters.java	Wed Jan 23 11:15:35 2013 +0100
@@ -2,6 +2,8 @@
 
 import de.intevation.flys.artifacts.math.Linear;
 
+import de.intevation.flys.utils.DoubleUtil;
+
 import gnu.trove.TDoubleArrayList;
 
 import java.io.Serializable;
@@ -124,7 +126,7 @@
     }
 
     public void removeNaNs() {
-        W.removeNaNs(columns);
+        DoubleUtil.removeNaNs(columns);
     }
 
     public int [] columnIndices(String [] columns) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QKms.java	Wed Jan 23 11:15:35 2013 +0100
@@ -0,0 +1,18 @@
+package de.intevation.flys.artifacts.model;
+
+import gnu.trove.TDoubleArrayList;
+
+public interface QKms
+extends          NamedObject
+{
+    int size();
+
+    double getKm(int index);
+
+    double getQ(int index);
+
+    TDoubleArrayList allKms();
+
+    TDoubleArrayList allQs();
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QKmsImpl.java	Wed Jan 23 11:15:35 2013 +0100
@@ -0,0 +1,82 @@
+package de.intevation.flys.artifacts.model;
+
+import gnu.trove.TDoubleArrayList;
+
+import de.intevation.flys.utils.DoubleUtil;
+
+public class QKmsImpl
+extends      NamedObjectImpl
+implements   QKms
+{
+    protected TDoubleArrayList kms;
+    protected TDoubleArrayList qs;
+
+    public QKmsImpl() {
+        super("");
+        kms = new TDoubleArrayList();
+        qs  = new TDoubleArrayList();
+    }
+
+    public QKmsImpl(String name) {
+        super(name);
+        kms = new TDoubleArrayList();
+        qs  = new TDoubleArrayList();
+    }
+
+
+    public QKmsImpl(int capacity) {
+        super("");
+        kms = new TDoubleArrayList(capacity);
+        qs  = new TDoubleArrayList(capacity);
+    }
+
+
+    public QKmsImpl(TDoubleArrayList kms, TDoubleArrayList qs) {
+        this(kms, qs, "");
+    }
+
+    public QKmsImpl(
+        TDoubleArrayList kms,
+        TDoubleArrayList qs,
+        String           name
+    ) {
+        super(name);
+        this.kms = kms;
+        this.qs  = qs;
+    }
+
+    public void add(double km, double q) {
+        kms.add(km);
+        qs .add(q);
+    }
+
+    @Override
+    public double getQ(int index) {
+        return qs.getQuick(index);
+    }
+
+
+    @Override
+    public double getKm(int index) {
+        return kms.getQuick(index);
+    }
+
+    @Override
+    public int size() {
+        return kms.size();
+    }
+
+    @Override
+    public TDoubleArrayList allKms() {
+        return kms;
+    }
+
+    @Override
+    public TDoubleArrayList allQs() {
+        return qs;
+    }
+
+    public void removeNaNs() {
+        DoubleUtil.removeNaNs(new TDoubleArrayList [] { kms, qs });
+    }
+}
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QRangeTree.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QRangeTree.java	Wed Jan 23 11:15:35 2013 +0100
@@ -145,6 +145,23 @@
             last = QRangeTree.this.findNode(pos);
             return last != null ? last.q : Double.NaN;
         }
+
+        public double [] findQs(double [] kms, Calculation report) {
+            return findQs(kms, new double[kms.length], report);
+        }
+
+        public double [] findQs(
+            double []    kms, 
+            double []   qs, 
+            Calculation report
+        ) {
+            for (int i = 0; i < kms.length; ++i) {
+                if (Double.isNaN(qs[i] = findQ(kms[i]))) {
+                    report.addProblem(kms[i], "cannot.find.q");
+                }
+            }
+            return qs;
+        }
     } // class QuickQFinder
 
     protected Node root;
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/W.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/W.java	Wed Jan 23 11:15:35 2013 +0100
@@ -1,6 +1,7 @@
 package de.intevation.flys.artifacts.model;
 
 import de.intevation.flys.utils.DataUtil;
+import de.intevation.flys.utils.DoubleUtil;
 
 import gnu.trove.TDoubleArrayList;
 
@@ -60,34 +61,8 @@
         return ws.min();
     }
 
-    public static void removeNaNs(TDoubleArrayList [] arrays) {
-
-        int dest = 0;
-
-        int A = arrays.length;
-        int N = arrays[0].size();
-
-        OUTER: for (int i = 0; i < N; ++i) {
-            for (int j = 0; j < A; ++j) {
-                TDoubleArrayList a = arrays[j];
-                double v = a.getQuick(i);
-                if (Double.isNaN(v)) {
-                    continue OUTER;
-                }
-                a.setQuick(dest, v);
-            }
-            ++dest;
-        }
-
-        if (dest < N) {
-            for (int i = 0; i < A; ++i) {
-                arrays[i].remove(dest, N-dest);
-            }
-        }
-    }
-
     public void removeNaNs() {
-        removeNaNs(new TDoubleArrayList [] { ws });
+        DoubleUtil.removeNaNs(new TDoubleArrayList [] { ws });
     }
 
     public boolean guessWaterIncreasing() {
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WKms.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WKms.java	Wed Jan 23 11:15:35 2013 +0100
@@ -15,6 +15,6 @@
 
     TDoubleArrayList allWs();
 
-    public boolean guessWaterIncreasing();
+    boolean guessWaterIncreasing();
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQ.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQ.java	Wed Jan 23 11:15:35 2013 +0100
@@ -1,10 +1,12 @@
 package de.intevation.flys.artifacts.model;
 
+import de.intevation.flys.utils.DoubleUtil;
+
+import gnu.trove.TDoubleArrayList;
+
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import gnu.trove.TDoubleArrayList;
-
 import org.apache.log4j.Logger;
 
 public class WQ
@@ -96,7 +98,7 @@
 
     @Override
     public void removeNaNs() {
-        removeNaNs(new TDoubleArrayList [] { ws, qs });
+        DoubleUtil.removeNaNs(new TDoubleArrayList [] { ws, qs });
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQCKms.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQCKms.java	Wed Jan 23 11:15:35 2013 +0100
@@ -1,5 +1,7 @@
 package de.intevation.flys.artifacts.model;
 
+import de.intevation.flys.utils.DoubleUtil;
+
 import gnu.trove.TDoubleArrayList;
 
 /**
@@ -32,7 +34,7 @@
 
     @Override
     public void removeNaNs() {
-        removeNaNs(new TDoubleArrayList [] { ws, qs, cws, kms });
+        DoubleUtil.removeNaNs(new TDoubleArrayList [] { ws, qs, cws, kms });
     }
 
     /**
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java	Wed Jan 23 11:15:35 2013 +0100
@@ -1,5 +1,7 @@
 package de.intevation.flys.artifacts.model;
 
+import de.intevation.flys.utils.DoubleUtil;
+
 import gnu.trove.TDoubleArrayList;
 
 import org.apache.log4j.Logger;
@@ -13,7 +15,7 @@
  */
 public class WQKms
 extends      WQ
-implements   WKms
+implements   WKms, QKms
 {
     private static Logger logger = Logger.getLogger(WQKms.class);
 
@@ -54,7 +56,7 @@
 
     @Override
     public void removeNaNs() {
-        removeNaNs(new TDoubleArrayList [] { ws, qs, kms });
+        DoubleUtil.removeNaNs(new TDoubleArrayList [] { ws, qs, kms });
     }
 
     /**
@@ -105,6 +107,11 @@
         return ws;
     }
 
+    @Override
+    public TDoubleArrayList allQs() {
+        return qs;
+    }
+
     public double[] getKms() {
         return kms.toNativeArray();
     }
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WW.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WW.java	Wed Jan 23 11:15:35 2013 +0100
@@ -3,6 +3,8 @@
 import de.intevation.flys.artifacts.math.Function;
 import de.intevation.flys.artifacts.math.Identity;
 
+import de.intevation.flys.utils.DoubleUtil;
+
 import gnu.trove.TDoubleArrayList;
 
 public class WW
@@ -175,7 +177,7 @@
 
     @Override
     public void removeNaNs() {
-        removeNaNs(new TDoubleArrayList [] { ws, ws2 });
+        DoubleUtil.removeNaNs(new TDoubleArrayList [] { ws, ws2 });
     }
 
     public double minWs2() {
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WWQQ.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WWQQ.java	Wed Jan 23 11:15:35 2013 +0100
@@ -2,6 +2,8 @@
 
 import de.intevation.flys.artifacts.math.Identity;
 
+import de.intevation.flys.utils.DoubleUtil;
+
 import gnu.trove.TDoubleArrayList;
 
 public class WWQQ
@@ -91,7 +93,7 @@
 
     @Override
     public void removeNaNs() {
-        removeNaNs(new TDoubleArrayList [] { ws, ws2, qs1, qs2 });
+        DoubleUtil.removeNaNs(new TDoubleArrayList [] { ws, ws2, qs1, qs2 });
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/extreme/ExtremeCurveFacet.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/extreme/ExtremeCurveFacet.java	Wed Jan 23 11:15:35 2013 +0100
@@ -87,7 +87,7 @@
                 logger.debug("A curve at km = " + currentKm);
                 Curve c = curveEntry.getValue();
                 // Find segment in which the curr. km is located.
-                ExtremeAccess access = new ExtremeAccess(flys);
+                ExtremeAccess access = new ExtremeAccess(flys, context);
 
                 double[] ds = access.getValuesForRange(currentKm);
 
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedHeightFacet.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/BedHeightFacet.java	Wed Jan 23 11:15:35 2013 +0100
@@ -30,7 +30,7 @@
      */
     @Override
     public Object getData(Artifact artifact, CallContext context) {
-        BedHeightAccess access = new BedHeightAccess((FLYSArtifact)artifact);
+        BedHeightAccess access = new BedHeightAccess((FLYSArtifact)artifact, context);
         if (type.equals("singlevalues")) {
             return access.getSingleValues();
         }
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/MeasurementFactory.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/MeasurementFactory.java	Wed Jan 23 11:15:35 2013 +0100
@@ -1,7 +1,6 @@
 package de.intevation.flys.artifacts.model.sq;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collections;
 import java.util.Date;
@@ -53,7 +52,7 @@
             "g.UFERABLINKS  AS UFERABLINKS," +
             "m.TSCHWEB      AS TSCHWEB," +
             "m.TSAND        AS TSAND," +
-            "gp.GTRIEB_F      AS GTRIEB," +
+            "gp.GTRIEB_F    AS GTRIEB," +
             "m.TGESCHIEBE   AS TGESCHIEBE," +
             "si.SIEB01 AS SIEB01, si.SIEB02 AS SIEB02," +
             "si.SIEB03 AS SIEB03, si.SIEB04 AS SIEB04," +
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/Outlier.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/Outlier.java	Wed Jan 23 11:15:35 2013 +0100
@@ -88,7 +88,7 @@
             SQ outlier = data.remove(ndx.intValue());
             if (debug) {
                 log.debug("stdDev: " + stdDev[0]);
-                log.debug("removed " + ndx + 
+                log.debug("removed " + ndx +
                     "; S: " + outlier.getS() + " Q: " + outlier.getQ());
             }
             callback.iterationFinished(stdDev[0], outlier, data);
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DischargeLongitudinalSection.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/DischargeLongitudinalSection.java	Wed Jan 23 11:15:35 2013 +0100
@@ -11,6 +11,7 @@
 
 import de.intevation.flys.artifacts.model.Calculation4;
 import de.intevation.flys.artifacts.model.CalculationResult;
+import de.intevation.flys.artifacts.model.ConstantWQKms;
 import de.intevation.flys.artifacts.model.CrossSectionWaterLineFacet;
 import de.intevation.flys.artifacts.model.DataFacet;
 import de.intevation.flys.artifacts.model.EmptyFacet;
@@ -70,16 +71,22 @@
                 nameQ = "Q(" + nameW + ")";
             }
 
-            Facet w = new WaterlevelFacet(
-                i, DISCHARGE_LONGITUDINAL_W, nameW);
+            // Do not generate Waterlevel/Waterline facets 
+            // for Q only curves.
+            if (!(wqkms[i] instanceof ConstantWQKms)) {
+
+                Facet w = new WaterlevelFacet(
+                    i, DISCHARGE_LONGITUDINAL_W, nameW);
+
+                Facet s = new CrossSectionWaterLineFacet(i, nameW);
+
+                facets.add(s);
+                facets.add(w);
+            }
 
             Facet q = new WaterlevelFacet(
                 i, DISCHARGE_LONGITUDINAL_Q, nameQ);
 
-            Facet s = new CrossSectionWaterLineFacet(i, nameW);
-
-            facets.add(s);
-            facets.add(w);
             facets.add(q);
 
             if (wqkms[i] instanceof WQCKms) {
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/FlowVelocityState.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/FlowVelocityState.java	Wed Jan 23 11:15:35 2013 +0100
@@ -62,7 +62,7 @@
 
         List<Facet> newFacets = new ArrayList<Facet>();
 
-        FlowVelocityAccess access = new FlowVelocityAccess(artifact);
+        FlowVelocityAccess access = new FlowVelocityAccess(artifact, context);
 
         CalculationResult res = old instanceof CalculationResult
             ? (CalculationResult) old
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/MiddleBedHeight.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/MiddleBedHeight.java	Wed Jan 23 11:15:35 2013 +0100
@@ -38,7 +38,7 @@
 
         List<Facet> newFacets = new ArrayList<Facet>();
 
-        BedHeightAccess access = new BedHeightAccess(artifact);
+        BedHeightAccess access = new BedHeightAccess(artifact, context);
 
         CalculationResult res = old instanceof CalculationResult
             ? (CalculationResult) old
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/extreme/ExtremeCompute.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/extreme/ExtremeCompute.java	Wed Jan 23 11:15:35 2013 +0100
@@ -53,7 +53,7 @@
 
         CalculationResult res;
 
-        ExtremeAccess access = new ExtremeAccess(artifact);
+        ExtremeAccess access = new ExtremeAccess(artifact, context);
 
         if (old instanceof CalculationResult) {
             res = (CalculationResult)old;
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/extreme/ExtremeQInput.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/extreme/ExtremeQInput.java	Wed Jan 23 11:15:35 2013 +0100
@@ -78,7 +78,7 @@
 
         FLYSArtifact flysArtifact = (FLYSArtifact) artifact;
 
-        ExtremeAccess access = new ExtremeAccess(flysArtifact);
+        ExtremeAccess access = new ExtremeAccess(flysArtifact, context);
         River river = RiverFactory.getRiver(access.getRiver());
         WstValueTable wstValueTable = WstValueTableFactory.getTable(river);
 
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/BedQualityState.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/BedQualityState.java	Wed Jan 23 11:15:35 2013 +0100
@@ -54,7 +54,7 @@
 
         List<Facet> newFacets = new ArrayList<Facet>();
 
-        BedQualityAccess access = new BedQualityAccess(artifact);
+        BedQualityAccess access = new BedQualityAccess(artifact, context);
 
         CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old
             : new BedQualityCalculation().calculate(access);
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/DifferenceSelect.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/DifferenceSelect.java	Wed Jan 23 11:15:35 2013 +0100
@@ -55,7 +55,7 @@
         CallContext             context)
     {
         Element[] elements = new Element[1];
-        BedHeightAccess bha = new BedHeightAccess((FLYSArtifact)artifact);
+        BedHeightAccess bha = new BedHeightAccess((FLYSArtifact)artifact, context);
         String time = bha.getYearEpoch();
         elements[0] = createItem(
             ec,
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/SedimentLoadCalculate.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/minfo/SedimentLoadCalculate.java	Wed Jan 23 11:15:35 2013 +0100
@@ -47,7 +47,7 @@
 
         List<Facet> newFacets = new ArrayList<Facet>();
 
-        SedimentLoadAccess access = new SedimentLoadAccess(artifact);
+        SedimentLoadAccess access = new SedimentLoadAccess(artifact, context);
 
         CalculationResult res = old instanceof CalculationResult ? (CalculationResult) old
             : new SedimentLoadCalculation().calculate(access);
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/FlowVelocityGenerator.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/FlowVelocityGenerator.java	Wed Jan 23 11:15:35 2013 +0100
@@ -219,13 +219,13 @@
         }
         else if (getXBounds(0) == null && getDomainAxisRange() == null) {
             FLYSArtifact artifact = (FLYSArtifact)artifactAndFacet.getArtifact();
-            FlowVelocityAccess access = new FlowVelocityAccess(artifact);
+            FlowVelocityAccess access = new FlowVelocityAccess(artifact, context);
             context.putContextValue("startkm", access.getLowerKM());
             context.putContextValue("endkm", access.getUpperKM());
         }
         else if (getXBounds(0) == null && getDomainAxisRange() != null){
             FLYSArtifact artifact = (FLYSArtifact)artifactAndFacet.getArtifact();
-            FlowVelocityAccess access = new FlowVelocityAccess(artifact);
+            FlowVelocityAccess access = new FlowVelocityAccess(artifact, context);
             Bounds b = new DoubleBounds(access.getLowerKM(), access.getUpperKM());
             Bounds bounds =
                 calculateZoom(b, getDomainAxisRange());
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/WaterlevelExporter.java	Wed Jan 23 11:15:35 2013 +0100
@@ -19,6 +19,8 @@
 
 import au.com.bytecode.opencsv.CSVWriter;
 
+import de.intevation.flys.artifacts.model.ConstantWQKms;
+
 import net.sf.jasperreports.engine.JasperExportManager;
 import net.sf.jasperreports.engine.JasperFillManager;
 import net.sf.jasperreports.engine.JasperPrint;
@@ -43,7 +45,6 @@
 import de.intevation.flys.utils.FLYSUtils.WQ_MODE;
 import de.intevation.flys.utils.Formatter;
 
-
 /**
  * Generates different output formats (wst, csv, pdf) of data that resulted from
  * a waterlevel computation.
@@ -449,6 +450,11 @@
     ) {
         logger.debug("WaterlevelExporter.wQKms2CSV");
 
+        // Skip constant data.
+        if (wqkms instanceof ConstantWQKms) {
+            return;
+        }
+
         NumberFormat kmf = getKmFormatter();
         NumberFormat wf  = getWFormatter();
         NumberFormat qf  = getQFormatter();
@@ -579,6 +585,9 @@
      * @param wqkms The new WST column.
      */
     protected void addWSTColumn(WstWriter writer, WQKms wqkms) {
+        if (wqkms instanceof ConstantWQKms) {
+            return;
+        }
         if (master instanceof WINFOArtifact) {
             writer.addColumn(getColumnTitle((WINFOArtifact) master, wqkms));
         }
@@ -613,8 +622,7 @@
             JasperExportManager.exportReportToPdfStream(print, out);
         }
         catch(JRException je) {
-            logger.warn("Error generating PDF Report!");
-            je.printStackTrace();
+            logger.warn("Error generating PDF Report!", je);
         }
     }
 
@@ -665,6 +673,11 @@
     {
         logger.debug("WaterlevelExporter.addWKmsData");
 
+        // Skip constant data.
+        if (wqkms instanceof ConstantWQKms) {
+            return;
+        }
+
         NumberFormat kmf = getKmFormatter();
         NumberFormat wf  = getWFormatter();
         NumberFormat qf  = getQFormatter();
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/BedDifferenceEpochGenerator.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/BedDifferenceEpochGenerator.java	Wed Jan 23 11:15:35 2013 +0100
@@ -98,13 +98,13 @@
         }
         else if (getXBounds(0) == null && getDomainAxisRange() == null) {
             FLYSArtifact artifact = (FLYSArtifact)bundle.getArtifact();
-            FlowVelocityAccess access = new FlowVelocityAccess(artifact);
+            FlowVelocityAccess access = new FlowVelocityAccess(artifact, context);
             context.putContextValue("startkm", access.getLowerKM());
             context.putContextValue("endkm", access.getUpperKM());
         }
         else if (getXBounds(0) == null && getDomainAxisRange() != null){
             FLYSArtifact artifact = (FLYSArtifact)bundle.getArtifact();
-            FlowVelocityAccess access = new FlowVelocityAccess(artifact);
+            FlowVelocityAccess access = new FlowVelocityAccess(artifact, context);
             Bounds b = new DoubleBounds(access.getLowerKM(), access.getUpperKM());
             Bounds bounds =
                 calculateZoom(b, getDomainAxisRange());
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/SedimentLoadLSGenerator.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/minfo/SedimentLoadLSGenerator.java	Wed Jan 23 11:15:35 2013 +0100
@@ -166,7 +166,7 @@
     protected String getDefaultYAxisLabel(int pos) {
         String label = "default";
         if (pos == YAXIS.L.idx) {
-            SedimentLoadAccess access = new SedimentLoadAccess(artifact);
+            SedimentLoadAccess access = new SedimentLoadAccess(artifact, context);
             if (access.getUnit().equals("m3_per_a")) {
                 label = msg(I18N_YAXIS_LABEL_2, I18N_YAXIS_LABEL_DEFAULT_2);
             }
--- a/flys-artifacts/src/main/java/de/intevation/flys/utils/DoubleUtil.java	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/DoubleUtil.java	Wed Jan 23 11:15:35 2013 +0100
@@ -209,5 +209,31 @@
         }
         return max;
     }
+
+    public static void removeNaNs(TDoubleArrayList [] arrays) {
+
+        int dest = 0;
+
+        int A = arrays.length;
+        int N = arrays[0].size();
+
+        OUTER: for (int i = 0; i < N; ++i) {
+            for (int j = 0; j < A; ++j) {
+                TDoubleArrayList a = arrays[j];
+                double v = a.getQuick(i);
+                if (Double.isNaN(v)) {
+                    continue OUTER;
+                }
+                a.setQuick(dest, v);
+            }
+            ++dest;
+        }
+
+        if (dest < N) {
+            for (int i = 0; i < A; ++i) {
+                arrays[i].remove(dest, N-dest);
+            }
+        }
+    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
--- a/flys-artifacts/src/main/resources/messages.properties	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/resources/messages.properties	Wed Jan 23 11:15:35 2013 +0100
@@ -460,25 +460,51 @@
 waterlevels = Waterlevels
 
 help.index=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe
-help.winfo=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO
-help.winfo.wsp.location_distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Streckendaten
-help.winfo.wsp.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_W.2BAC8-Q_Daten
-help.winfo.discharge.longitudinal.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_der_Berechnungsstrecke
-help.winfo.duration.locations=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Streckendaten
-help.winfo.discharge.longitudinal.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_f.2BAPw-r_W.2BAC8-Q_Daten
-help.winfo.diff.diffs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Zusammenstellen_der_Differenzen
-help.winfo.reference.curve.start=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_des_Bezugsortes_.2BAC8_Bezugspegels
-help.winfo.reference.curve.end=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_des_Zielortes_.2BAC8_Zielpegels
-help.winfo.uesk.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Berechnungsstrecke
-help.winfo.uesk.wsp=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_der_Wasserspiegellage
-help.winfo.uesk.dem=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_des_Digitalen_Gel.2BAOQ-ndemodells
-help.winfo.uesk.profiles=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Abstand_Interpolierte_Profile
-help.winfo.uesk.floodplain=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Laterale_Begrenzung
-help.winfo.uesk.differences=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Differenz_Wasserspiegellage_und_Gel.2BAOQ-nde
-help.winfo.uesk.scenario=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#A.2BANw-berschwemmungsfl.2BAOQ-che_.2BAC8_Szenario
-help.winfo.historical.discharge.reference_gauge=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_des_Bezugspegels
-help.winfo.historical.discharge.timerange=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Auswahl_des_Auswertezeitraumes
-help.winfo.historical.discharge.mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Auswahl_der_Analyseart
+help.state.winfo=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO
+help.state.winfo.river=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.river
+help.state.winfo.calculation_mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.calculation_mode
+help.state.winfo.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.location
+help.state.winfo.distance_only=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.distance_only
+help.state.winfo.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.distance
+help.state.winfo.location_distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.location_distance
+help.state.winfo.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.wq
+help.state.winfo.wq_adapted=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.wq_adapted
+help.state.winfo.waterlevel_pair_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.waterlevel_pair_select
+help.state.winfo.reference.curve.input.start=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.reference.curve.input.start
+help.state.winfo.reference.curve.input.end=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.reference.curve.input.end
+help.state.winfo.uesk.wsp=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.wsp
+help.state.winfo.uesk.dgm=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.dgm
+help.state.winfo.uesk.profiles=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.profiles
+help.state.winfo.uesk.floodplain=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.floodplain
+help.state.winfo.uesk.differences=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.differences
+help.state.winfo.uesk.scenario=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.scenario
+help.state.winfo.historicalq.reference_gauge=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.reference_gauge
+help.state.winfo.historicalq.timerange=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.timerange
+help.state.winfo.historicalq.mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.mode
+help.state.winfo.function_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.function_select
+help.state.winfo.extreme.percent=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.extreme.percent
+help.state.winfo.extreme.qinput=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.extreme.qinput
+
+help.state.minfo.river=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.river
+help.state.minfo.calculation_mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.calculation_mode
+help.state.minfo.distance_only=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.distance_only
+help.state.minfo.bed.year_epoch=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.year_epoch
+help.state.minfo.sq.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.location
+help.state.minfo.bed.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.location
+help.state.minfo.dischargestate=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.dischargestate
+help.state.minfo.soundings=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.soundings
+help.state.minfo.bed.difference_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.difference_select
+help.state.minfo.sq.outliers=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.outliers
+help.state.minfo.sediment.load.year_epoch=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.year_epoch
+help.state.minfo.sediment.load.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.location
+help.state.minfo.bed.periods=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.periods
+help.state.minfo.bed.char_diameter=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.char_diameter
+help.state.minfo.sediment.load.period=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.period
+help.state.minfo.sediment.load.epochs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.epochs
+help.state.minfo.sediment.load.off_epochs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.off_epochs
+help.state.minfo.sediment.load.unit=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.unit
+help.state.minfo.sq.period=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.period
+
 
 fix.reference.period=Reference period
 fix.reference.period.event=Reference event
--- a/flys-artifacts/src/main/resources/messages_de.properties	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/resources/messages_de.properties	Wed Jan 23 11:15:35 2013 +0100
@@ -452,25 +452,51 @@
 waterlevels = Wasserst\u00e4nde
 
 help.index=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe
-help.winfo=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO
-help.winfo.wsp.location_distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Streckendaten
-help.winfo.wsp.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_W.2BAC8-Q_Daten
-help.winfo.discharge.longitudinal.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_der_Berechnungsstrecke
-help.winfo.duration.locations=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Streckendaten
-help.winfo.discharge.longitudinal.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_f.2BAPw-r_W.2BAC8-Q_Daten
-help.winfo.diff.diffs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Zusammenstellen_der_Differenzen
-help.winfo.reference.curve.start=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_des_Bezugsortes_.2BAC8_Bezugspegels
-help.winfo.reference.curve.end=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_des_Zielortes_.2BAC8_Zielpegels
-help.winfo.uesk.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Berechnungsstrecke
-help.winfo.uesk.wsp=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_der_Wasserspiegellage
-help.winfo.uesk.dem=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_des_Digitalen_Gel.2BAOQ-ndemodells
-help.winfo.uesk.profiles=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Abstand_Interpolierte_Profile
-help.winfo.uesk.floodplain=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Laterale_Begrenzung
-help.winfo.uesk.differences=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Differenz_Wasserspiegellage_und_Gel.2BAOQ-nde
-help.winfo.uesk.scenario=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#A.2BANw-berschwemmungsfl.2BAOQ-che_.2BAC8_Szenario
-help.winfo.historical.discharge.reference_gauge=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_des_Bezugspegels
-help.winfo.historical.discharge.timerange=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Auswahl_des_Auswertezeitraumes
-help.winfo.historical.discharge.mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Auswahl_der_Analyseart
+help.state.winfo=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO
+help.state.winfo.river=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.river
+help.state.winfo.calculation_mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.calculation_mode
+help.state.winfo.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.location
+help.state.winfo.distance_only=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.distance_only
+help.state.winfo.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.distance
+help.state.winfo.location_distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.location_distance
+help.state.winfo.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.wq
+help.state.winfo.wq_adapted=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.wq_adapted
+help.state.winfo.waterlevel_pair_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.waterlevel_pair_select
+help.state.winfo.reference.curve.input.start=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.reference.curve.input.start
+help.state.winfo.reference.curve.input.end=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.reference.curve.input.end
+help.state.winfo.uesk.wsp=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.wsp
+help.state.winfo.uesk.dgm=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.dgm
+help.state.winfo.uesk.profiles=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.profiles
+help.state.winfo.uesk.floodplain=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.floodplain
+help.state.winfo.uesk.differences=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.differences
+help.state.winfo.uesk.scenario=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.scenario
+help.state.winfo.historicalq.reference_gauge=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.reference_gauge
+help.state.winfo.historicalq.timerange=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.timerange
+help.state.winfo.historicalq.mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.mode
+help.state.winfo.function_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.function_select
+help.state.winfo.extreme.percent=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.extreme.percent
+help.state.winfo.extreme.qinput=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.extreme.qinput
+
+help.state.minfo.river=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.river
+help.state.minfo.calculation_mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.calculation_mode
+help.state.minfo.distance_only=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.distance_only
+help.state.minfo.bed.year_epoch=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.year_epoch
+help.state.minfo.sq.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.location
+help.state.minfo.bed.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.location
+help.state.minfo.dischargestate=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.dischargestate
+help.state.minfo.soundings=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.soundings
+help.state.minfo.bed.difference_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.difference_select
+help.state.minfo.sq.outliers=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.outliers
+help.state.minfo.sediment.load.year_epoch=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.year_epoch
+help.state.minfo.sediment.load.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.location
+help.state.minfo.bed.periods=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.periods
+help.state.minfo.bed.char_diameter=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.char_diameter
+help.state.minfo.sediment.load.period=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.period
+help.state.minfo.sediment.load.epochs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.epochs
+help.state.minfo.sediment.load.off_epochs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.off_epochs
+help.state.minfo.sediment.load.unit=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.unit
+help.state.minfo.sq.period=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.period
+
 
 fix.reference.period=Bezugszeitraum
 fix.reference.period.event=Bezugsereignis
--- a/flys-artifacts/src/main/resources/messages_de_DE.properties	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/resources/messages_de_DE.properties	Wed Jan 23 11:15:35 2013 +0100
@@ -460,25 +460,51 @@
 waterlevels = Wasserst\u00e4nde
 
 help.index=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe
-help.winfo=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO
-help.winfo.wsp.location_distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Streckendaten
-help.winfo.wsp.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_W.2BAC8-Q_Daten
-help.winfo.discharge.longitudinal.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_der_Berechnungsstrecke
-help.winfo.duration.locations=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Streckendaten
-help.winfo.discharge.longitudinal.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_f.2BAPw-r_W.2BAC8-Q_Daten
-help.winfo.diff.diffs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Zusammenstellen_der_Differenzen
-help.winfo.reference.curve.start=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_des_Bezugsortes_.2BAC8_Bezugspegels
-help.winfo.reference.curve.end=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_des_Zielortes_.2BAC8_Zielpegels
-help.winfo.uesk.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Berechnungsstrecke
-help.winfo.uesk.wsp=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_der_Wasserspiegellage
-help.winfo.uesk.dem=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_des_Digitalen_Gel.2BAOQ-ndemodells
-help.winfo.uesk.profiles=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Abstand_Interpolierte_Profile
-help.winfo.uesk.floodplain=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Laterale_Begrenzung
-help.winfo.uesk.differences=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Differenz_Wasserspiegellage_und_Gel.2BAOQ-nde
-help.winfo.uesk.scenario=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#A.2BANw-berschwemmungsfl.2BAOQ-che_.2BAC8_Szenario
-help.winfo.historical.discharge.reference_gauge=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_des_Bezugspegels
-help.winfo.historical.discharge.timerange=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Auswahl_des_Auswertezeitraumes
-help.winfo.historical.discharge.mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Auswahl_der_Analyseart
+help.state.winfo=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO
+help.state.winfo.river=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.river
+help.state.winfo.calculation_mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.calculation_mode
+help.state.winfo.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.location
+help.state.winfo.distance_only=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.distance_only
+help.state.winfo.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.distance
+help.state.winfo.location_distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.location_distance
+help.state.winfo.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.wq
+help.state.winfo.wq_adapted=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.wq_adapted
+help.state.winfo.waterlevel_pair_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.waterlevel_pair_select
+help.state.winfo.reference.curve.input.start=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.reference.curve.input.start
+help.state.winfo.reference.curve.input.end=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.reference.curve.input.end
+help.state.winfo.uesk.wsp=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.wsp
+help.state.winfo.uesk.dgm=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.dgm
+help.state.winfo.uesk.profiles=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.profiles
+help.state.winfo.uesk.floodplain=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.floodplain
+help.state.winfo.uesk.differences=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.differences
+help.state.winfo.uesk.scenario=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.scenario
+help.state.winfo.historicalq.reference_gauge=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.reference_gauge
+help.state.winfo.historicalq.timerange=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.timerange
+help.state.winfo.historicalq.mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.mode
+help.state.winfo.function_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.function_select
+help.state.winfo.extreme.percent=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.extreme.percent
+help.state.winfo.extreme.qinput=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.extreme.qinput
+
+help.state.minfo.river=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.river
+help.state.minfo.calculation_mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.calculation_mode
+help.state.minfo.distance_only=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.distance_only
+help.state.minfo.bed.year_epoch=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.year_epoch
+help.state.minfo.sq.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.location
+help.state.minfo.bed.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.location
+help.state.minfo.dischargestate=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.dischargestate
+help.state.minfo.soundings=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.soundings
+help.state.minfo.bed.difference_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.difference_select
+help.state.minfo.sq.outliers=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.outliers
+help.state.minfo.sediment.load.year_epoch=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.year_epoch
+help.state.minfo.sediment.load.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.location
+help.state.minfo.bed.periods=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.periods
+help.state.minfo.bed.char_diameter=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.char_diameter
+help.state.minfo.sediment.load.period=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.period
+help.state.minfo.sediment.load.epochs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.epochs
+help.state.minfo.sediment.load.off_epochs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.off_epochs
+help.state.minfo.sediment.load.unit=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.unit
+help.state.minfo.sq.period=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.period
+
 
 fix.reference.period=Bezugszeitraum
 fix.reference.period.event=Bezugsereignis
--- a/flys-artifacts/src/main/resources/messages_en.properties	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-artifacts/src/main/resources/messages_en.properties	Wed Jan 23 11:15:35 2013 +0100
@@ -463,25 +463,51 @@
 waterlevels = Waterlevels
 
 help.index=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe
-help.winfo=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO
-help.winfo.wsp.location_distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Streckendaten
-help.winfo.wsp.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_W.2BAC8-Q_Daten
-help.winfo.discharge.longitudinal.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_der_Berechnungsstrecke
-help.winfo.duration.locations=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Streckendaten
-help.winfo.discharge.longitudinal.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_f.2BAPw-r_W.2BAC8-Q_Daten
-help.winfo.diff.diffs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Zusammenstellen_der_Differenzen
-help.winfo.reference.curve.start=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_des_Bezugsortes_.2BAC8_Bezugspegels
-help.winfo.reference.curve.end=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_des_Zielortes_.2BAC8_Zielpegels
-help.winfo.uesk.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Berechnungsstrecke
-help.winfo.uesk.wsp=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_der_Wasserspiegellage
-help.winfo.uesk.dem=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_des_Digitalen_Gel.2BAOQ-ndemodells
-help.winfo.uesk.profiles=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Abstand_Interpolierte_Profile
-help.winfo.uesk.floodplain=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Laterale_Begrenzung
-help.winfo.uesk.differences=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Eingabe_Differenz_Wasserspiegellage_und_Gel.2BAOQ-nde
-help.winfo.uesk.scenario=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#A.2BANw-berschwemmungsfl.2BAOQ-che_.2BAC8_Szenario
-help.winfo.historical.discharge.reference_gauge=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Wahl_des_Bezugspegels
-help.winfo.historical.discharge.timerange=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Auswahl_des_Auswertezeitraumes
-help.winfo.historical.discharge.mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#Auswahl_der_Analyseart
+help.state.winfo=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO
+help.state.winfo.river=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.river
+help.state.winfo.calculation_mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.calculation_mode
+help.state.winfo.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.location
+help.state.winfo.distance_only=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.distance_only
+help.state.winfo.distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.distance
+help.state.winfo.location_distance=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.location_distance
+help.state.winfo.wq=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.wq
+help.state.winfo.wq_adapted=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.wq_adapted
+help.state.winfo.waterlevel_pair_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.waterlevel_pair_select
+help.state.winfo.reference.curve.input.start=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.reference.curve.input.start
+help.state.winfo.reference.curve.input.end=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.reference.curve.input.end
+help.state.winfo.uesk.wsp=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.wsp
+help.state.winfo.uesk.dgm=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.dgm
+help.state.winfo.uesk.profiles=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.profiles
+help.state.winfo.uesk.floodplain=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.floodplain
+help.state.winfo.uesk.differences=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.differences
+help.state.winfo.uesk.scenario=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.uesk.scenario
+help.state.winfo.historicalq.reference_gauge=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.reference_gauge
+help.state.winfo.historicalq.timerange=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.timerange
+help.state.winfo.historicalq.mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.historicalq.mode
+help.state.winfo.function_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.function_select
+help.state.winfo.extreme.percent=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.extreme.percent
+help.state.winfo.extreme.qinput=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/WINFO#help.state.winfo.extreme.qinput
+
+help.state.minfo.river=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.river
+help.state.minfo.calculation_mode=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.calculation_mode
+help.state.minfo.distance_only=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.distance_only
+help.state.minfo.bed.year_epoch=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.year_epoch
+help.state.minfo.sq.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.location
+help.state.minfo.bed.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.location
+help.state.minfo.dischargestate=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.dischargestate
+help.state.minfo.soundings=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.soundings
+help.state.minfo.bed.difference_select=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.difference_select
+help.state.minfo.sq.outliers=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.outliers
+help.state.minfo.sediment.load.year_epoch=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.year_epoch
+help.state.minfo.sediment.load.location=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.location
+help.state.minfo.bed.periods=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.periods
+help.state.minfo.bed.char_diameter=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.bed.char_diameter
+help.state.minfo.sediment.load.period=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.period
+help.state.minfo.sediment.load.epochs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.epochs
+help.state.minfo.sediment.load.off_epochs=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.off_epochs
+help.state.minfo.sediment.load.unit=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sediment.load.unit
+help.state.minfo.sq.period=https://flys-intern.intevation.de/Flys-3.0/OnlineHilfe/MINFO#help.state.minfo.sq.period
+
 
 fix.reference.period=Reference period
 fix.reference.period.event=Reference event
--- a/flys-backend/doc/annotation-types.xml	Wed Jan 23 11:14:41 2013 +0100
+++ b/flys-backend/doc/annotation-types.xml	Wed Jan 23 11:15:35 2013 +0100
@@ -39,7 +39,7 @@
         <line pattern="^Brücke[:\s].*$" type="Brücke"/>
         <line pattern="^Bundesland[:\s].*$" type="Bundesland"/>
         <line pattern="^Einmündung[:\s].*$" type="Einmündung"/>
-        <line pattern="^Fähre[:\s].*$" type="Abzweig"/>
+        <line pattern="^Fähre[:\s].*$" type="Abzweigung"/>
         <line pattern="^Gemeinde[:\s].*$" type="Gemeinde"/>
         <line pattern="^Grenze[:\s].*$" type="Grenze"/>
         <line pattern="^Hafen[:\s].*$" type="Hafen"/>

http://dive4elements.wald.intevation.org