changeset 262:8b634333f935

merged gnv-artifacts/0.2
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:13:44 +0200
parents 6cf73f5ea4a9 (current diff) 874644bf1da8 (diff)
children 72f5e8bd2791
files
diffstat 277 files changed, 15419 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/ChangeLog	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,1808 @@
+2009-11-16  Ingo Weinzierl <ingo.weinzierl@intevation.de>
+
+	* bin/run.sh: Added start-script to version control.
+
+2009-11-13  Hans Plum <hans@intevation.de>
+
+	* RELEASE 0.2:
+	Summarized activities in NEWS, Changes
+
+2009-11-13  Hans Plum <hans@intevation.de>
+
+	* ChangeLog:
+	Unified style of ChangeLog descriptions refering to issues.
+
+2009-11-13  Tim Englich  <tim.englich@intevation.de>
+
+	* doc/conf/products/timeseries/conf_timeseriespoint.xml:
+	  Moved Comment according to Instantiationerrors loading Artifact. 
+
+2009-11-13  Tim Englich  <tim.englich@intevation.de>
+	
+	* doc/conf/log4j.properties,,
+	  doc/conf/conf.xml,
+	  doc/conf/arcsdeconnectionpool.properties,
+	  doc/conf/products/timeseries/conf_timeseriespoint.xml: 
+	  Added Documentation of Configuration-Files.
+
+2009-11-13  Tim Englich  <tim.englich@intevation.de>
+	
+	* doc/conf/products/verticalcrosssection/conf_mesh.xml,
+	  doc/conf/products/horizontalcrosssection/conf_mesh.xml:
+	  Removed statistics as possible out-Variant from Configuration
+	  according to TG_0030.061
+	
+	* src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_08_out_statistics.xml, 
+	  src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_06_out_statistics.xml, 
+	  src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalCrossSectionMeshArtifact), 
+	  (testVerticalCrossSectionMeshArtifact): 
+	  Removed Statistics-Test on This Artifact-Test because no Statistic is required
+	  for this Producttyp.
+	
+	* src/main/java/de/intevation/gnv/transition/profile/horizontalcrosssection/
+	HorizontalCrossSectionMeshOutputTransition.java (createCSV): 
+	  No Statistics for this Output is required.
+	
+	* src/main/java/de/intevation/gnv/statistics/HorizontalCrossSectionStatistics.java: 
+	  Removed becaus the Statistics for ths product is not required.
+
+2009-11-12  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/statistics/HorizontalCrossSectionStatistics.java (calculateXOrdinateValue), 
+	  src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java (calculateXOrdinateValue), 
+	  src/main/java/de/intevation/gnv/statistics/VerticalProfileStatistics.java (calculateXOrdinateValue), 
+	  src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java :
+	  Added the previous Row to the Method for calculating the GAP between 
+	  those Rows. Also added Calculation of the Distance between two Points in 
+	  HorizontalProfileStatistic and returning the Depth in VerticalProfileStatistics.
+	  Also added the Metjod clearStatistics to restet the Object if an new Calculation
+	  will started. 
+
+2009-11-12  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (extractKVP): 
+	  Translated "Keine Auswahl" to "No Selection" according to the Specification that
+	  the primary Language is english. Please note that the Values  that are currently 
+	  displaied are almost in german. 
+	
+2009-11-12  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (writeStatistics2XML): 
+	  Changed XML-Syntaxt according to the new Structure of StatisticValues. 
+	  (out):
+	  Changed Call of calculateStatistics according to the new Methodsignature.  
+	
+	* src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java, 
+	  src/main/java/de/intevation/gnv/statistics/VerticalProfileStatistics.java. 
+	  src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java,
+	  src/main/java/de/intevation/gnv/statistics/Statistics.java: 
+	  Extended Methods calculateStatistics to put Lable-Values into the
+	  Calculation. Now for each Group of Statistics is it possible
+	  to calclulate a separat name which is simmilar to the name of 
+	  the Diagramm-Series-Name.
+	  Also the Representation of the Statistics has changed so each Group 
+	  will be stored in one StatisticSet
+	
+	* src/main/java/de/intevation/gnv/statistics/StatisticSet.java:
+	  Bean for Storing the Statistic to one Group and also storing the
+	  Name of the Statistic. 
+
+2009-11-11  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 19: Validation of max. min value order
+
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (putInputData): 
+	  Added Validation if a given maxvalue is greater than a given minvalue issue19
+	* src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid): 
+	  Added new Method for validating if a maxvalue is greater than a minvalue. issue19
+	
+2009-11-11  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 81: Keeping input values in coordinate input fields
+
+	*
+	src/main/java/de/intevation/gnv/transition/describedata/
+	    DefaultSingleValueDescribeData.java (setValue), src/main/java/de/intevation/gnv/
+	    transition/describedata/SingleValueDescribeData.java: Added setValue-Method 
+	    for setting the Value which was sent back to the Server using the feed-request. issue81
+
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (getDescribeData): 
+	  Added SingleValueDescribeData to the method for storing InputValues for
+	  Describeoutput issue81
+	  
+2009-11-11  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/describedata/MinMaxDescribeData.java,
+	  src/main/java/de/intevation/gnv/transition/describedata/DefaultMinMaxDescribeData.java: 
+	  Added getName and added Constants for minValue and maxValue Id to
+	  enable the storage of this Values which would be put using the
+	  feed command.
+	
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe):
+	  Changed the usage of the Name of the MinMaxTransition from getMinName to getName.
+	  
+	* src/main/java/de/intevation/gnv/transition/MinMaxTransition.java (purifyResult): 
+	  Changed the Constructor of MinMaxTransition according to API-Changes of
+	  DefaultMinMaxDescribeData
+	
+2009-11-11  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 76: Improving XML config documents
+
+	* doc/conf/products/verticalprofile/conf_mesh.xml,
+	  doc/conf/products/verticalprofile/conf_instantaneouspoint.xml,
+	  doc/conf/products/verticalcrosssection/conf_mesh.xml,
+	  doc/conf/products/timeseries/conf_mesh.xml,
+	  doc/conf/products/horizontalprofile/conf_mesh.xml,
+	  doc/conf/products/horizontalcrosssection/conf_mesh.xml: 
+	  Removed unnecessary characters 'v' from the Documents. issue76
+
+2009-11-10  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/resources/lang/artifactMessages_*.properties:
+	  Added Ressources for the AreaFilter Ids areaid and subareid
+
+2009-11-10  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 68: Improving ODV Export
+	
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (TIMESERIES_ODV_PROFILE_NAMES): 
+	  Sort Columns to the given order of the ODV-Specification
+	  and added the Columns DATAVALUE and PARAMETER to the output 
+	  according to issue68
+
+	* doc/conf/queries.properties: 
+	  Changed Column-alias in Query for HorizontalProfile ODV-Exports in Meshes 
+	  from PARAMETERID to PARAMETER to be able to use in only on ODV-Export-Profile
+
+2009-11-10  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalCrossSectionMeshArtifact): 
+	  Added the ODV-Export to the Unit-Testcase for VerticalCrossSection-Mesh.
+	  Some Refactoring Work done. 
+	* doc/conf/products/verticalcrosssection/conf_mesh.xml: 
+	  Added QueryID for ODV-Exports to the Configuration of an 
+	  Mesh-VerticalCrossSection-Artifacts
+	* doc/conf/queries.properties: 
+	  Added Query for VerticalCrossSection ODV-Exports in Meshes.
+	* src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_08_feed.xml:
+	  Changed Datevalue, because the old value was out of range to the Data.
+	* src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_08_out_odv.xml: 
+	  Added Out-Request for ODV-Export to the JUnitTest Configuration for 
+	  VerticalCrossSection Mesh.
+
+2009-11-10  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalCrossSectionMeshArtifact):
+	  Added the ODV-Export to the Unit-Testcase for HorizontalCrossSection-Mesh.
+	  Some Refactoring Work done. 
+	* doc/conf/queries.properties: 
+	  Added Query for HorizontalCrossSection ODV-Exports in Meshes.
+	* doc/conf/products/horizontalcrosssection/conf_mesh.xml: 
+	  Added QueryID for ODV-Exports to the Configuration of an 
+	  Mesh-HorizontalCrossSection-Artifacts
+	* src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_06_feed.xml: 
+	  Changed Datevalue, because the old value was out of range to the Data.
+	* src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_06_out_odv.xml: 
+	  Added Out-Request for ODV-Export to the JUnitTest Configuration for 
+	  HorizontalCrossSection Mesh.
+
+2009-11-10  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalProfileInstantaneousPointArtifact): 
+	  Added the ODV-Export to the Unit-Testcase for HorizontalProfile-InstantaneousPoint.
+	  Some Refactoring Work done.
+	* src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_odv.xml: 
+	  Added Out-Request for ODV-Export to the JUnitTest Configuration for 
+	  HorizontalProfiles InstantaneousPoint.
+	* doc/conf/products/horizontalprofile/conf_instantaneouspoint.xml: 
+	  Added QueryID for ODV-Exports to the Configuration of an 
+	  InstantaneousPoint-HorizontalProfile-Artifacts
+	* doc/conf/queries.properties:
+	  Added Query for HorizontalProfile ODV-Exports in InstantaneousPoint
+
+2009-11-10  Tim Englich  <tim.englich@intevation.de>
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalProfileInstantaneousPointArtifact): 
+	  Added the ODV-Export to the Unit-Testcase for VerticalProfile-InstantaneousPoint.
+	  Some Refactoring Work done.
+	* doc/conf/products/verticalprofile/conf_instantaneouspoint.xml: 
+	  Added QueryID for ODV-Exports to the Configuration of an 
+	  InstantaneousPoint-VerticalProfile-Artifacts
+	* doc/conf/queries.properties: 
+	  Added Query for VerticalProfile ODV-Exports in InstantaneousPoint
+	* src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_out_odv.xml:
+	  Added Out-Request for ODV-Export to the JUnitTest Configuration for VerticalProfiles InstantaneousPoint.
+
+2009-11-10  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalProfileMeshPointArtifact): 
+	  Added the ODV-Export to the Unit-Testcase for HorizontalProfile-Mesh.
+	  Some Refactoring Work done.
+	* doc/conf/products/horizontalprofile/conf_mesh.xml: 
+	  Added QueryID for ODV-Exports to the Configuration of an 
+	  Mesh-HorizontalProfile-Artifacts
+	* doc/conf/queries.properties: 
+	  Added Query for HorizontalProfile ODV-Exports in Meshes
+	* src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_10_out_odv.xml: 
+	  Added Out-Request for ODV-Export to the JUnitTest Configuration for HorizontalProfiles Mesh.
+	* src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_feed.xml: 
+	  BugFix: Changed missspelled Input-Name
+
+2009-11-09  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (TIMESERIES_ODV_PROFILE_NAMES): 
+	  Changed the Order of Columnlookup for ODV-Exports and added column "Depth" to the Export
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testTimeSeriesMeshArtifact): 
+	  Added the ODV-Export to the Unit-Testcase for TimeSeries-Mesh.
+	  Some Refactoring Work done.
+	* doc/conf/queries.properties: 
+	  Added Query for VerticalProfile ODV-Exports in Meshes
+	* doc/conf/products/verticalprofile/conf_mesh.xml: 
+	  Added QueryID for ODV-Exports to the Configuration of an 
+	  Mesh-VerticalProfile-Artifacts
+	* src/test/ressources/verticalprofile_mesh/verticalprofile_step_10_out_odv.xml, 
+	  src/test/ressources/verticalprofile/verticalprofile_step_06_out_odv.xml: 
+	  Added Out-Request for ODV-Export to the JUnitTest Configuration for VerticalProfiles.
+	
+2009-11-09  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testTimeSeriesMeshArtifact): 
+	Added the ODV-Export to the Unit-Testcase for TimeSeries-Mesh.
+	Some Refactoring Work done.
+
+	* src/test/ressources/timeseries_mesh/timeseries_step_08_out_odv.xml:
+	Added Out-request for ODV-Export to the JUnitTest Configuration for TimeSeries Mesh.
+
+	* doc/conf/products/timeseries/conf_mesh.xml: 
+	Added QueryID for ODV-Exports to the Configuration of an Mesh-TimeSeries-Artifacts
+
+	* doc/conf/queries.properties: Added Query for TimeSeries ODV-Exports in Meshes
+
+2009-11-09  Ingo Weinzierl <ingo.weinzierl@intevation.de>
+
+	* src/main/java/de/intevation/gnv/exports/Export.java
+	  src/main/java/de/intevation/gnv/exports/DefaultProfile.java
+	  src/main/java/de/intevation/gnv/exports/DefaultExport.java: Added the
+	  possibility to print column labels in the first line of an export.
+
+	* src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java,
+	  src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java:
+	  Adjusted instantiation of the DefaultExport object and added column labels
+	  for odv export.
+
+2009-11-09  Ingo Weinzierl <ingo.weinzierl@intevation.de>
+
+	* src/main/java/de/intevation/gnv/exports/SimpleOdvDataCollector.java:
+	  Implemented a DataCollector for Odv exports.
+
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java:
+	  OEV-export uses a SimpleOdvDataCollector to collect export data.
+
+2009-11-09  Ingo Weinzierl <ingo.weinzierl@intevation.de>
+
+	* src/main/java/de/intevation/gnv/exports/ShapeDataCollector.java,
+	  src/main/java/de/intevation/gnv/exports/HorizontalProfileDataCollector.java:
+	  Renamed HorizontalProfileDataCollector into ShapeDataCollector, because it
+	  will be used by other transitions as well.
+
+	* src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java:
+	  Adjusted class name of DataCollector after renaming.
+
+2009-11-09  Ingo Weinzierl <ingo.weinzierl@intevation.de>
+
+	* src/main/java/de/intevation/gnv/exports/HorizontalProfileDataCollector.java:
+	  Special DataCollector for fetching data used for horizontal profile
+	  exports.
+
+	* src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java:
+	  Uses the an exporter for csv export.
+
+2009-11-09  Ingo Weinzierl <ingo.weinzierl@intevation.de>
+
+	* src/main/java/de/intevation/gnv/exports/Export.java,
+	  src/main/java/de/intevation/gnv/exports/DefaultDataCollector.java:
+	  Implemented a DataCollector to collect all data used to create exports. 
+	  DefaultCollector fetches data with help of its headers. For special 
+	  exports, where a header returns more than one value, special 
+	  DataCollectors needs to be implemented (overwritung the 'getData' method).
+
+	* src/main/java/de/intevation/gnv/exports/DefaultProfile.java,
+	  src/main/java/de/intevation/gnv/exports/DefaultExport.java: Export now
+	  uses a DataCollector to get the data.
+
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java:
+	  Adjusted exports of csv export.	  
+
+2009-11-09  Tim Englich  <tim.englich@intevation.de>
+
+	* doc/conf/queries.properties: 
+	  Added SQLStatemenet for ODV-Data for VerticalProfiles 
+	  on TimeSeriesPoints.
+	* doc/conf/products/verticalprofile/conf_timeseriespoint.xml: 
+	  Added QueryID for ODV-Data-Query
+	
+2009-11-09  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/test/ressources/timeseries/timeseries_step_06_out_*.xml:
+	  Added the missing out-Modes to the Testcase and rename it to
+	  the common used way in this TestCases. 
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testTimeSeriesArtifact): 
+	  Added the ODV-Export to the Unit-Testcase.
+	  Some Refactoring Work done.
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (out): 
+	  The Method for generating ODV-Export now reads its Data from
+	  the special Method which delivers the adapted Data.
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (generateFilterValuesFromInputData): 
+	  Extracted the Generation of the FilterValues for the geo-backend
+	  to use it in several methods.
+	* src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java (getODVResult): 
+	  Added Method for getting the rquired Data for ODV-Exports 
+	* doc/conf/products/timeseries/conf_timeseriespoint.xml: 
+	  Added separat QueryID Lookup for ODV-Data-Queryies 
+	* doc/conf/queries.properties: 
+	  DB-Queries for ODV-Support TimeSeries on TimeSeriesPoints added. 
+
+2009-11-06  Ingo Weinzierl <ingo.weinzierl@intevation.de>
+
+	* src/main/java/de/intevation/gnv/exports,
+	  src/main/java/de/intevation/gnv/exports/Export.java,
+	  src/main/java/de/intevation/gnv/exports/DefaultProfile.java,
+	  src/main/java/de/intevation/gnv/exports/DefaultExport.java: Implemented an
+	  Exporter for odv and csv exports. Each exports just needs a Profile, which
+	  describes the output. 
+
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java:
+	  Added an exemplary export for CSV and ODV formats of
+	  TimeSeriesOutputTransition.
+
+	  TODO: ODV exporter exports the same data as CSV exporter does. This needs
+	  to be adapted.
+
+2009-11-06  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java: 
+	  Added and moved Workflowsteps because of changes in the Workflow of these Artifacts.
+	  Now the Region-Filter is added to the Workflow an can be tested using
+	  this UnitTestCases.
+
+	* src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_*.xml, 
+	  src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_*.xml,
+	  src/test/ressources/timeseries/timeseries_step_*.xml,
+	  src/test/ressources/timeseries_mesh/timeseries_step_*.xml,
+	  src/test/ressources/verticalprofile/verticalprofile_step_*.xml,
+	  src/test/ressources/verticalprofile_mesh/verticalprofile_step_*.xml:
+	  Added and moved Files because of changes in the Workflow of these Artifacts.
+	  Now the Region-Filter is added to the Workflow an can be tested using
+	  the UnitTestCases.
+
+2009-11-06  Ingo Weinzierl <ingo.weinzierl@intevation.de>
+
+	* doc/conf/products/horizontalcrosssection/conf_mesh.xml,
+	  doc/conf/products/timeseries/conf_mesh.xml,
+	  doc/conf/products/timeseries/conf_timeseriespoint.xml,
+	  doc/conf/products/horizontalprofile/conf_mesh.xml,
+	  doc/conf/products/horizontalprofile/conf_instantaneouspoint.xml,
+	  doc/conf/products/verticalprofile/conf_mesh.xml,
+	  doc/conf/products/verticalprofile/conf_timeseriespoint.xml,
+	  doc/conf/products/verticalprofile/conf_instantaneouspoint.xml: Added odv
+	  as output format.
+
+2009-11-06  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/ChartFactory.java (calculateMaxGap): 
+	  Bugfix Gap-Calculation moved maxGap into negative Valies because of 
+	  overflow of Long-Variable.
+
+2009-11-05  Tim Englich  <tim.englich@intevation.de>
+
+	* doc/conf/queries.properties: 
+	  Query to select only those TimeSeriesPoints
+	  which are within an Region
+	
+	* doc/conf/products/timeseries/conf_timeseriespoint.xml, 
+	doc/conf/products/verticalprofile/conf_timeseriespoint.xml: 
+	Added the RegionFilters into the configuration of the Products 
+	for TimeSeriesPoints.
+
+2009-11-05  Tim Englich  <tim.englich@intevation.de>
+
+	* doc/conf/queries.properties: 
+	  Added new Queries to fill the Lists for the
+	  Regionfilters and one Query to select only those Meshes
+	  which are within an Region.
+	
+	* doc/conf/products/verticalprofile/conf_mesh.xml, 
+	  doc/conf/products/verticalcrosssection/conf_mesh.xml, 
+	  doc/conf/products/timeseries/conf_mesh.xml, 
+	  doc/conf/products/horizontalprofile/conf_mesh.xml, 
+	  doc/conf/products/horizontalcrosssection/conf_mesh.xml:
+	  Added the RegionFilters into the configuration of the Products
+	  for Meshes.
+
+2009-11-05  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/ressources/*_describe.xml:
+	  Added the DescribeRequestBodies to each TestCaseData.
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java: 
+	  Added the DescribeRequestBody to Describe-Calls in the Test
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java: 
+	  Added the possibility to switch to an alternative Transition if no value was choosen.
+	  
+	* src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid): 
+	  Added that the Inputvalue is valid if it fullfills the confitions of "no value choosen" (n/n)
+	
+	* src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java (calculateXOrdinateValue): 
+	   Added Dummyvalue for X-OrdinateValue
+	  src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java (describe),
+	  src/main/java/de/intevation/gnv/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java (describe), 
+	  src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java (describe),
+	  src/main/java/de/intevation/gnv/profile/horizontalcrosssection/HorizontalCrossSectionMeshArtifact.java (describe), 
+	  src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java (describe),
+	  src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (describe),
+	  src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (createDescibeOutput): 
+	  Added the possibility to exclude the UI from the DescribeRequest.
+
+2009-11-03  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/ChartFactory.java (getTimeGapValue): 
+	  Integrated special case for TimeGaps in Meshes. There is no Gap defined in 
+	  Meshes so we have to use Long.MAXVALE to define a Gap for a Mesh which value 
+	  canno be reached.
+
+2009-11-02  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/profile/horizontalcrosssection/
+	    HorizontalCrossSectionMeshOutputTransition.java (createCSV): 
+	  Code Cleanup: Removed obsoled TODO Flag
+
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (setSelection): 
+	  Changed the Value of the min and maxvalue of the Request to the Value which is unsed to name 
+	  the Inputfields in the DescribeOutput.
+
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java,
+	  src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java, 
+	  src/main/java/de/intevation/gnv/transition/Transition.java,
+	  src/main/java/de/intevation/gnv/transition/SingleInputTransition.java, 
+	  src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java, 
+	  src/main/java/de/intevation/gnv/transition/MinMaxTransition.java, 
+	  src/main/java/de/intevation/gnv/transition/DefaultTransition.java, 
+	  src/main/java/de/intevation/gnv/transition/CoordinateSelectionTransition.java, 
+	  src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (advance),
+	  CodeCleanup: Removed needless Method validate from Transition, 
+	  because it had always returned true
+	
+2009-10-30  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_*.xml:
+	  Added the Testdata for the Unittest for HorizontalCrossSectionMeshArtifacts.
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalCrossSectionMeshArtifact):
+	  Added the UnitTest-Case for HorizontalCrossSectionMeshArtifacts
+	
+2009-10-30  Tim Englich  <tim.englich@intevation.de>
+
+	* doc/conf/queries.properties: 
+	  Added the Query for selecting the Data for generating Outputs of
+	  HorizontalCrossSectionMeshOutputTransition
+	* doc/conf/products/horizontalcrosssection/conf_mesh.xml: 
+	  Added the configuration for the HorizontalCrossSectionMeshOutputTransition
+	* src/main/java/de/intevation/gnv/transition/profile/horizontalcrosssection/HorizontalCrossSectionMeshOutputTransition.java:
+	  Added the OutputTransition for generating /HorizontalCrossSections.
+	* src/main/java/de/intevation/gnv/statistics/HorizontalCrossSectionStatistics.java:
+	  The Class for generating the Statistics to HorizontalCrossSections
+	* src/main/java/de/intevation/gnv/chart/HorizontalCrossSectionChartFactory.java: 
+	  The Class Stub for generating HorizontalCrossSections Charts.
+
+2009-10-29  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 45: Defining gaps for spatial and temporal gaps
+
+	* doc/conf/products/timeseries/timegap_definition.xml,
+	  doc/conf/products/timeseries/conf_timeseriespoint.xml:
+	  Added the Configuration for TimeGaps to the TimeSeries-Configurations. issue45
+	  
+	* doc/conf/queries.properties: 
+	  Added TimeGapIp to the Queries for the Resultdata of TimeSeriesArtifacts. issue45
+	  
+	* src/main/java/de/intevation/gnv/timeseries/gap/DefaultTimeGap.java,
+	  src/main/java/de/intevation/gnv/timeseries/gap/TimeGap.java, 
+	  src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (setup): 
+	  src/main/java/de/intevation/gnv/chart/ChartFactory.java (calculateMaxGap): 
+	  Added configurable TimeGap Support to the TimeSeries-Chart-Generation. issue45
+	
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java, 
+	  src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java (readConfiguration): 
+	  Moved Method from GNVArtifactBase to make it assesible for more Objects. issue45
+
+2009-10-28  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/profile/horizontalcrosssection/
+	HorizontalCrossSectionMeshArtifact.java (HorizontalCrossSectionMeshArtifact),
+	doc/conf/queries.properties, doc/conf/conf.xml,
+	doc/conf/products/horizontalcrosssection/conf_mesh.xml, 
+	src/main/resources/lang/artifactMessages* .properties:
+	Added Workflow for determining the Query-Parameters for  Horizontal cross-sections.
+	 
+2009-10-28  Tim Englich  <tim.englich@intevation.de>
+
+	* doc/conf/conf.xml: 
+	  Added Configuration for two new FIS. Current Meter and Ice Station Reports
+
+	* src/main/resources/lang/artifactMessages*.properties: 
+	  Added Ressources for two new FIS. Current Meter and Ice Station Reports
+
+2009-10-27  Tim Englich  <tim.englich@intevation.de>
+
+	* doc/conf/conf.xml:
+	  Added Configuration for two new FIS. Sea State and SEACAT
+
+	* src/main/resources/lang/artifactMessages*.properties: 
+	  Added Ressources for two new FIS. Sea State and SEACAT
+	
+2009-10-27  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 61: Vertical profile (Meshes): Selection of minimal and maximal
+	depths zones
+
+	* src/main/resources/lang/artifactMessages*.properties: 
+	  Added Ressources for the minimal and maximal Layer to use in VerticalProfiles of Meshes issue61
+
+	* doc/conf/products/verticalprofile/conf_mesh.xml: 
+	  Added two new Transitions for selecting the min and max-Layer to use. issue61
+
+	* doc/conf/queries.properties: 
+	  Added Queries for Selecting the Depth for selecting the minimum and the maximum Layer to use
+	  Drawing the Chart. issue61
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalProfileMeshArtifact): 
+	  Integrated two further Transitions-Steps according to changes in Workflow of 
+	  VerticalProfiles in Meshes. issue61
+
+	* src/test/ressources/verticalprofile_mesh/verticalprofile_step_*.xml:
+	  New Testdata generated according to changes in Workflow of VerticalProfiles in Meshes. issue61
+
+2009-10-26  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 31: TG_0020.018: Input of manual depth zones
+
+	* src/main/resources/lang/artifactMessages_de_DE.properties: 
+	  Added Ressources for the minimal and maximal value of the depth
+
+	* src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_out_statistics.xml (renamed),
+	  src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_out_csv.xml (renamed),
+	  src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_out_chart.xml(renamed), 
+	  src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_feed.xml, 
+	  src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_advance.xml, 
+	  src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_advance.xml,
+	  src/test/ressources/verticalprofile/verticalprofile_step_05_out_statistics.xml(renamed), 
+	  src/test/ressources/verticalprofile/verticalprofile_step_05_out_csv.xml(renamed), 
+	  src/test/ressources/verticalprofile/verticalprofile_step_05_out_chart.xml(renamed), 
+	  src/test/ressources/verticalprofile/verticalprofile_step_05_feed.xml, 
+	  src/test/ressources/verticalprofile/verticalprofile_step_04_advance.xml, 
+	  src/test/ressources/verticalprofile/verticalprofile_step_03_advance.xml, 
+	  src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java: 
+	  Edited the RestCases for VerticalProfiles according to the requirement that
+	  the user should be able to enter the minimal and maximal Value of the depth that 
+	  should be show n in the charts. issue31
+
+	* doc/conf/queries.properties, 
+	  doc/conf/products/verticalprofile/conf_timeseriespoint.xml, 
+	  doc/conf/products/verticalprofile/conf_instantaneouspoint.xml:
+	  Adding required Configuration-Parts to get the possible to enter the minmum
+	  and maximum depth value that should be shown in the charts. issue31
+
+2009-10-23  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/ressources/timeseries_mesh/timeseries_step_07_feed.xml:
+	  The Timeperiod of the Modeldata has changed. so it was nessessarry to change 
+	  the Unittest to get propper Results 
+
+2009-10-23  Tim Englich  <tim.englich@intevation.de>
+	
+	* doc/conf/queries.properties:
+	  Some Queryimproofments done. Inner-Selects has been removed where it was possible.
+	
+2009-10-23  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 3: Artifact: Storing the internal state instead of results
+	
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java, 
+	  src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java (describe), 
+	  src/main/java/de/intevation/gnv/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java (describe), 
+	  src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java (describe),
+	  src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java (describe):
+	  Use super.identifier as uuid. issue3 
+	
+2009-10-23  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/ressources/verticalprofile/verticalprofile_step_04_feed.xml,
+	  src/test/ressources/verticalprofile/verticalprofile_step_03_advance.xml, 
+	  src/test/ressources/verticalprofile/verticalprofile_step_04_out_*.xml,
+	  src/test/ressources/timeseries_mesh/timeseries_step_07_out_*.xml, 
+	  src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_*.xml:
+	  Changed the uuid because the new Storage shows that there were different ones in one Testcase 
+	
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java:
+	  Put the UUID into the Resultlookup 
+
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java: 
+	  Removed the Storage of Results in the Object and put them into the ehcache
+
+	* src/main/java/de/intevation/gnv/transition/Transition.java: 
+	  Removed some needless Methods that were not longer Required
+	  
+	* src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java
+	(advance), src/main/java/de/intevation/gnv/transition/SingleInputTransition.java
+	(purifyResult),	src/main/java/de/intevation/gnv/transition/MinMaxTransition.java
+	(purifyResult),	src/main/java/de/intevation/gnv/transition/CoordinateSelectionTransition.java
+	(extractKVP), src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java
+	(describe), src/main/java/de/intevation/gnv/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java
+	(describe), src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java
+	(describe), src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java
+	(describe), src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (uuid):
+	Lookup the Results from ehcache and centralize the Lookup to one methode. 
+
+2009-10-23  Tim Englich  <tim.englich@intevation.de>
+
+	* doc/conf/queries.properties: 
+	  Optimized Query horizontalprofile_instantaneouspoint_cruise because it is not warranted
+	  that the name of an cruise is set. issue60
+
+2009-10-22  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/CoordinateSelectionTransition.java
+	(extractKVP): Added the possiblility to fetch an further Column with
+	the alias Value to display it together with the Coordinatevalues
+
+	* doc/conf/queries.properties: 
+	  Added the Coordinates to an Measuementpoint to display it.
+
+	* doc/conf/products/verticalprofile/conf_instantaneouspoint.xml:
+	  Change TransitionType for displaying Coordinatevalues aditionaly to
+	  the Time of an Measurement 
+
+2009-10-22  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 40: Instantiation of artifacts slow
+
+	* doc/conf/conf.xml, doc/conf/products/*/conf_*.xml:
+	  Split the Configuration of the ArtifactDatabase in several Configurationfiles.
+	  For Each Product-Artifact one single File to make it easier to administer the System.
+
+	* src/main/java/de/intevation/gnv/transition/TransitionFactory.java (createTransition),
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java (setup),
+	  src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java (setup),
+	  src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (setup): 
+	  Lookup of XML-Attributes was changed from XPath-lookup to direct 
+	  Access on the fetched Element to speed up the Artifactinstantiation issue40
+
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (getConfigurationFragment): 
+	  Read Configuration information for the Productartifact from a separat folder if an xlink:href
+	  Attribute exists in tne Configurationnode of the Artifact.
+	  This was inserted to speed up the Artifactinstantiation and to split the Configuration
+	  in several Configurationfiles that where smallaer issue40
+	  Also the lookup of XML-Attributes was changed from XPath-lookup to direct 
+	  Access on the fetched Element
+
+2009-10-21  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 59: Added relative pathnames to central config document
+
+	* doc/conf/conf.xml: 
+	  Added relative locations for further required configurationfiles . issue59 
+	* src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java (createArtifactContext):
+	 Added the prossibility to configure the location of required configurationfiles not absolute. issue59 
+	
+2009-10-21  Tim Englich  <tim.englich@intevation.de>
+	
+	* doc/conf/arcsdeconnectionpool.properties: 
+	  Added separat ConnectionPoolProperties to this Project.
+	* doc/conf/*: 
+	  Moved ConfigurationFiles from src/test/ressources to doc/conf
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (configurationDir): 
+	  Changed Configuration Folder to doc/conf
+
+2009-10-20  Tim Englich  <tim.englich@intevation.de>
+
+	* doc/conf:
+	Added Folder for the Configuration of the gnv-artifacts.
+
+2009-10-20  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalCrossSectionMeshArtifact): 
+	  Added Testcase for testing the Workflow for generating VerticalCrossSections.
+	* src/test/ressources/queries.properties: 
+	  Added the required Queries for providing VerticalCrossSection using Meshes.
+	* src/test/ressources/conf.xml: 
+	  Added the Configuration for an VerticalCrossSection using Meshes.
+	* src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_*.xml: 
+	  Adding Requestdocuments for testing the Workflow of Generating an VerticalCrossSection.
+	* src/main/java/de/intevation/gnv/transition/profile/verticalcrosssection/VerticalCrossSectionOutputTransition.java :
+	  Added an OutputTransition for renedering the Data of VerticalCrossSections.
+	* src/main/java/de/intevation/gnv/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java: 
+	  Added Class for the Representation of VerticalCrossSection Artifacts into the Project.
+	* src/main/java/de/intevation/gnv/chart/VerticalCrossSectionChartFactory.java (createProfileChart):
+	  Put Class-Sub for the Chart generation of VerticalCrossSections into the Project.
+
+2009-10-20  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 54: Errors in diagramms for time series in IMIS
+	
+	* src/test/ressources/queries.properties: 
+	Bugfix for TIMESERIESPOINT the first and the last value weren't used
+	in the Query which was integrated from the Prototyp to the Project
+	ussue54
+	
+2009-10-19  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 55: Harmoization of coordinate values for input fields
+
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe): 
+	Added uniform Visualization of Single Input-Elements to MinMax-Elements. issue55
+	
+2009-10-19  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 56: Error - Behavior of a form without constraint values
+
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (feed):
+	  Catch Exception that the Calling Program could not put no InputData 
+	  into the feed Request.issue56 
+
+2009-10-19  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 19: Validation of date and double values
+	
+	* src/main/java/de/intevation/gnv/chart/ChartFactory.java (createDataset),
+	  src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java (createDataset):
+	  Adding empty Series into Chart to prevent NPE issue 19
+	  
+2009-10-19  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 35: Wrong date values force the panel to start from beginning
+
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (putInputData): 
+	  Correct misspelled Exception-Message as an Result of fixing issue35
+	  
+2009-10-19  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 50: Adding the layer number for depth information
+
+	* src/test/ressources/queries.properties: 
+	  Changed the Value of Layer and Depth range visualization of Meshes 
+	  according to issue50
+	  
+2009-10-19  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 47: Translation of strings for time series
+
+	* src/main/resources/lang/artifactMessages*.properties: 
+	  Changed the displayed-Values as defined in issue47
+	* src/test/ressources/conf.xml: 
+	  Changed the Key for the DataName of MIN-Max-Transitions to put a propper Name 
+	  into the UI-Describeoutput issue47
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe): 
+	  Added the X-Forms-Group-Element to surround the MinMaxDescibeObject-output to Give the
+	  Group of Objects a propper Name issue47
+	* src/main/java/de/intevation/gnv/transition/MinMaxTransition.java (purifyResult): 
+	  Added the name of the Data to the MinMaxDescibeObject to put it into the UI-output
+
+2009-10-16  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 53: Changing of strings in parameter panel
+
+	* src/test/ressources/timeseries_mesh/timeseries_step_05_feed.xml: 
+	  src/test/ressources/conf.xml: 
+	  src/main/resources/lang/artifactMessages*.properties: 
+	  Conformation to the tanslation of the MeshObjects  issue53
+
+2009-10-16  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 49: Integration of FIS to Meshes
+
+	* src/test/ressources/queries.properties: 
+	  There are different FIS in the Relation Median.Mesh so it is
+	  nessessary to sepcify which FIS should be selected by using the sourceid
+	  issue49
+	* src/test/ressources/conf.xml: 
+	  Adding two further FIS to the Configuration which are based on Meshes.
+	  Added the Sourceid to the ModelData issue49
+	* src/main/resources/lang/artifactMessages*.properties:
+	  Adding the Names of the two new FIS to the  Propertiesfiles issue49
+
+2009-10-16  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java (createXYSeries): 
+	  Adding 5% bigger Valuearea to the Chart according to GT0030.011
+
+2009-10-16  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java (VerticalProfileOutputTransition): 
+	  Changed Domainlable for Verticalprofiles according to the Specification GT_0030.005 
+	* src/test/java/de/intevation/gnv/artifacts/util/DistanceCalculatorTestCase.java (testDistanceCalculator): 
+	  Added Testcase for the DistanceCalculation
+	* src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java (createXYSeries): 
+	* src/main/java/de/intevation/gnv/utils/DistanceCalculator.java (calculateDistance): 
+	  Added Calculation of the Distance in the unit km for Geodetic-Coordinates according to the Specification GT_0030.005
+	* src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java (HorizontalProfileOutputTransition): 
+	  Changed Domainlable for Horizintalprofiles according to the Specification GT_0030.005
+	  
+2009-10-16  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/test/ressources/queries.properties:
+	  The Levelnumber of Meshes will also be visualized in the choose of depth GT_0020.0020
+
+2009-10-16  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/test/ressources/conf.xml: 
+	  Added Coordinate-Values to Title of the TimeseriesDiagramm for Meshes
+	  
+2009-10-16  Tim Englich  <tim.englich@intevation.de>
+	  
+	* src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java (putInputData): 
+	  Bugfix ChartValues were not Recalculated after feed was called second Time.
+	  
+2009-10-16  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/test/ressources/conf.xml: 
+	  Bugfix in MinMaxTransition the Maxvalue was not the correct Value.
+	
+2009-10-16  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 38: Horizontal profiles: Visualization of distances in km
+
+	* src/main/java/de/intevation/gnv/transition/CoordinateSelectionTransition.java (convert2DisplayCoordinate): 
+	  Added Transformation from WKT-Coordinate Reperesentation to BSH-Coordinate Representation. issue38
+
+2009-10-15  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java, 
+	src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java, 
+	src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java, 
+	src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java,
+	src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java,
+	src/test/ressources/queries.properties, src/test/ressources/conf.xml: 
+	Added missing Class Description Values to the Horizontal Profile Charts
+	  
+2009-10-15  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (getFisName): 
+	  Added Method for lookup FIS Names
+	* src/main/resources/lang/artifactMessages*.properties: 
+	  Added further Key-Value-Pairs for FIS
+	* src/test/ressources/conf.xml: 
+	  Changed Configuratioon to get the ID of an FIS to the Chartgeneration
+	  
+2009-10-15  Tim Englich  <tim.englich@intevation.de>
+	
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalProfileMeshPointArtifact): 
+	  Activate Tests for CSV and Statistics on HorizontalProfiles
+	
+	*
+	src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java
+	(createCSV),
+	src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java
+	(createCSV):
+	Integrated special CSV-Export for HorizontalProfiles 
+
+2009-10-14  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java (createXYSeries):
+	  Load WKT from ResultSet and calculate Distance to last point.
+	* src/test/ressources/queries.properties: 
+	  Switch Chart-Queries to Spatial-Queries.
+
+2009-10-13  Tim Englich  <tim.englich@intevation.de>
+
+	Issue 33: Improved logging for time-interval queries
+
+	* src/test/ressources/queries.properties,
+	  src/test/ressources/conf.xml:
+	  Added Parameter-Usage in Time-Interval-Query ISSUE-33
+
+2009-10-13  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/ressources/verticalprofile_mesh/verticalprofile_step_*_feed.xml, 
+	  src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_*_feed.xml: 
+	  Switched to Szenario where it is possible to select Data using the Coordinate. 
+	* src/test/ressources/conf.xml,
+	  src/test/ressources/queries.properties:
+	  Switched to SFS-Conformant-Queries in HorzintalProfile- and VerticalProfile-Mesh
+
+2009-10-13  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/resources/lang/artifactMessages_*.properties: 
+	Switched to better Description of an Coordinate-Input-Field
+
+	* src/test/ressources/timeseries_mesh/timeseries_*_feed.xml:
+	Switched to Szenario where it is possible to select Data using the Coordinate.
+
+	* src/test/ressources/queries.properties, src/test/ressources/conf.xml: 
+	Switched to SFS-Conformant-Queries in Timeseries-Mesh
+
+	* pom.xml: 
+	Added dependency to JTS 1.9
+
+	* src/main/java/de/intevation/gnv/utils/exception/ValidationException.java 
+	(ValidationException), src/main/java/de/intevation/gnv/utils/InputValidator.java
+	(getPointValue), src/main/java/de/intevation/gnv/transition/TransitionBase.java
+	(prepareInputData4RegionDBQuery):
+	Added the Support for specialized Handling of InputValues of type Coordinate.
+
+	* src/main/java/de/intevation/gnv/transition/CoordinateSelectionTransition.java:
+	Added Transition for the Support of Coordinateinput handling.
+
+2009-10-12	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	* src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java:
+	Closed small file descriptor leak.
+
+2009-10-09  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/**/*.java Edited:
+	Code Formatting and Cleanup.
+	 
+2009-10-09  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/ressources/queries.properties Edited:
+	  Add Parameters to the Queries to select only the Dates where
+	  the Parameters has been measured. 
+	* src/test/ressources/conf.xml Edited:
+	  Set that the ParameterIds should be used in the Query of the Dates. 
+
+2009-10-07	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	RELEASE 0.1
+
+	* Changes, NEWS: Summarized changes.
+
+2009-10-06  Tim Englich  <tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java (HorizontalProfileOutputTransition) Edited :
+	  Switch Lable-Value for Domain-Axis.
+	* src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java (getRessource) Edited:
+	  Added missing Import 
+	* src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java (advance) Edited:
+	  Added i18n Support 
+	* src/main/resources/lang/artifactMessages*.properties Edited:
+	  Added some missing RessourceValues 
+
+2009-10-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	* src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_out_csv.xml,
+	  src/test/ressources/conf.xml,
+	  src/test/ressources/timeseries_mesh/timeseries_step_07_out_csv.xml,
+	  src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_out_csv.xml,
+	  src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_out_csv.xml,
+	  src/test/ressources/verticalprofile/verticalprofile_step_04_out_csv.xml:
+	  s@test/plain@text/plain@g to correct MIME type of CSV export
+
+2009-10-06	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	* src/main/java/de/intevation/gnv/artifacts/ressource/*.properties:
+	Deleted.
+
+	* src/main/resources/lang/*.properties: Re-inserted here. Maven now
+	includes them in the jar package.
+
+	* src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java:
+	Make code more robust. TODO: We need a better implementation here.
+
+	* Changelog -> ChangeLog: To make eclipse happy. Unified changelog style.
+
+	* pom.xml: xmllint-ed and set encoding of filtered resources to UTF-8
+
+2009-10-06  Tim Englich  <tim.englich@intevation.de>
+
+	* src/test/ressources/queries.properties Edited:
+	  Bugfix in Query for getting Data for the Output.
+	  Now the Values will be sorted Correcly. Timevalue
+	  has been removed from the Query because it is not a
+	  Parameter which could be choosen from the User.
+	  Also dummies for XCOORD-Value and YCOORD-Value integrated so 
+	  that is now Possible to visualize the Profile
+	  gnv/issue21
+
+2009-10-05	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/artifacts/ressource/artifactMessages*.properties Edited:
+	  Added further Ressourec Values. 
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalProfileInstantaneousPointArtifact) Edited:
+	  Changed ArtifactName to real FIS. 
+	* src/test/ressources/timeseries_mesh/timeseries_step_01_feed.xml Edited:
+	  Changed Product-Name from timeSeriesMesh to timeSeries to provide a General-Naming-Structure 
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (setup) Edited,
+	  src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java Edited,
+	  src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java Edited:
+	  Added Configurationsupport for the Labeling Data. Now it is possible do define the 
+	  value-names in the Configurationfile. 
+	* src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_feed.xml Edited, 
+	  src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_feed.xml Edited,  
+	  src/test/ressources/queries.properties Edited: 
+	  Changed the Queries for the VerticalProfileInstantaneusPoint to the FIS-Query Mode.
+	  This Mode was send by Mr. Schulz-Ohlberg.
+	* src/test/ressources/conf.xml: 
+	  Changed the Workflow for the VerticalProfileInstantaneusPoint to the FIS-Query Mode.
+	  This Mode was send by Mr. Schulz-Ohlberg.
+	  Also Added the support for value-names to the Configuration of VerticalProfileInstantaneusPoint.
+
+2009-10-05	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/artifacts/ressource/artifactMessages_en.properties Renamed:
+	  Renamed from artifactMessages_en_EN.properties to artifactMessages_en.properties to get a
+	  propper support for PreferedLocale
+	* src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java (getRessource) Edited, 
+	* src/test/java/de/intevation/gnv/artifacts/ressource/RessourceFactoryTestCase.java (setUp) Edited,
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe) Edited,
+	* src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (createSelectBox) Edited:
+	  Changed Method Signature from Locale to PreferedLocale[] to put all Useable Languages to
+	  the RessourceFactory
+	  
+2009-10-02	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/ressource/RessourceFactoryTestCase.java Added: 
+	  TestCase for Testing the RessourceFactory
+	  
+	* src/main/java/de/intevation/gnv/artifacts/ressource/artifactMessages*.properties Added, 
+	  src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java Added: 
+	  Added Factory and Propertiesfiles for getting the localized Values
+	
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/Transition.java Edited,
+	  src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Edited,
+	  src/main/java/de/intevation/gnv/transition/OutputTransition.java Edited,
+	  src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited,
+	  src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java Edited,
+	  src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java Edited, 
+	  src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited,  
+	  src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: 
+	  LanguageSupport Integrated
+	
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (createCallContext) Edited:
+	  Extracted Method and Put CallMeta with Language German to the CallContext. Otherwise
+	  TestCase will produce NPEs. 
+	* src/test/java/de/intevation/gnv/artifacts/TestCallContext.java Edited:
+	  Added Real CallMeta to the Method for usage in Artifacts. Otherwise
+	  TestCase will produce NPEs. 
+	* src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_feed.xml Edited, 
+	  src/test/ressources/timeseries_mesh/timeseries_step_02_feed.xml Edited, 
+	  src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_feed.xml Edited, 
+	  src/test/ressources/conf.xml Edited:
+	  Changed som Identifiers for Localisation. 
+
+2009-10-02	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/conf.xml Edited:
+	  Added the Configuration of the Horizontal-Profile.Mesh.
+	  Also Edited the Workflowq for HorizontalProfile-Instantaneouspoint and
+	  Put three n ew FIS into the Configuration which represents HorizontalProfile-Instantaneouspoint.
+	* src/test/ressources/horizontalProfile_instantaneouspoint/*.xml Edited, 
+	  src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalProfileInstantaneousPointArtifact) Edited:
+	  Edited the Workflowlogic given by new Specification of the BSH.
+	* src/test/ressources/horizontalProfile_mesh/*.xml Added:
+	  The Request for do an Workflow for an HorizontalProfile-Mesh
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalProfileMeshPointArtifact) Edited:
+	  Added TestCase for HorizontalProfiles of Type Mesh.
+	* src/test/java/de/intevation/gnv/artifacts/TestCallContext.java (getMeta) Edited:
+	  Added new Method which is defined in the implemented Interface. 
+	* src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid) Edited:
+	  Added the Validation of InputValues from Type AttributeName which should represent
+	  an QueryValue of Type String which must not put into "'".
+	* src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java Added:
+	  Transition to provide the possibility of choosing the axis of an Grid that should be used. 
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (dataMultiSelect) Edited:
+	  Changed from private to protected so that this mMeber could be accessed by within extending Classes. 
+	* src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileMeshArtifact.java Added:
+	  Class for the Representation of Horizontal Profiles for the Type Mesh.
+	* src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java (HorizontalProfileChartFactory) Edited:
+	  Changed PlotOrientation so that the Profile is displayed correctly. 
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (advance) Edited:
+	  Added Log-Message for better Workflowanalyzis. 
+	  
+2009-10-01	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	* src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java,
+	src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java,
+	src/main/java/de/intevation/gnv/utils/ArtifactFactoryUtilities.java,
+	src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java,
+	src/main/java/de/intevation/gnv/transition/MinMaxTransition.java,
+	src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java,
+	src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java:
+	Removed needless imports.
+
+	* src/main/java/de/intevation/gnv/utils/InputValidator.java:
+	Import org.apache.commons.validator.GenericValidator instead of
+	absolute usage in methods.
+
+2009-09-30	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/queries.properties Edited:
+	  Added the Queries for HorizontalProfiles of InstantaneousPoints.
+	* src/test/ressources/conf.xml Edited:
+	  Added the Configuration for HorizontalProfilArtifact for InstantaneousPoints
+	* src/test/ressources/horizontalProfile_instantaneouspoint/*.xml Added:
+	  Added XML-Requests for the TestCase of HorizontalProfiles of InstantaneousPoints.
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalProfileInstantaneousPointArtifact) Edited:
+	  Added TestCase for HorizontalProfiles of InstantaneousPoints.
+	  
+2009-09-30	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid) Edited:
+	  Added the Validation for Double-Values. 
+	* src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java (createChart) Edited:
+	  The Name of the Method for generaing Charts has changed. 
+	* src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java Added:
+	  New outputTransition for HorizontalProfiles 
+	* src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java Added:
+	  Class which calculates the Statistics for Horizontal Profiles. 
+	* src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileInstantaneousPointArtifact.java Added,  
+	* src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java Added:
+	  Classes which represents HorizontalProfileArtifacts 
+	* src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java (plotOrientation) Edited:
+	  Added Member for the representation of the Plotorientation to overwrite it in 
+	  extende Classes
+	  Rename Method for generatim the Charts in a common Name. 
+	* src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java Added:
+	  Class for drawing Horzontal Profiles
+	  
+2009-09-30	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	* src/test/ressources/conf.xml: s@test/xml@text/xml@g
+
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (doNextStep) Edited:
+	  Add Responsevalidation for feed-Requests. 
+	* pom.xml Edited:
+	  Add required Library ORO to the Dependencies which is required by Commons-Validator
+	  to do matchRegexp Requests.
+	* src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid) Edited:
+	  Add a Validator for the type Point 
+	* src/test/ressources/conf.xml Edited:
+	  Changed mesh_coordinate from type Integer to type Point
+	  
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java (findValueTitle): 
+	   Key of KeyValueDescribeData is a String. So it is not nessessary to parse the
+	   id into an Integer Value.
+	   Also some NP-Access removed.
+	   
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited:
+	  Some Coderedundances refactored.
+	  
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/queries.properties Edited:
+	  Bug fixed: Mesh TimeSeries will now Handle Charts with multiple Depth-Values properly. 
+	  
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/timeseries_mesh/*.xml Added :
+	  TestCaseRequests for Timeseries FIS Mesh  
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testTimeSeriesMeshArtifact) Edited:
+	  Add Testcase for Timeseries Mesh 
+	  
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (check4ExceptionReport) edited:
+	  ExceptionTest for Responsdocuments added.
+	  UnitTest will now fail if the Artifact delivers an ExceptionReport using the advance Request.
+	  
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalProfileMeshArtifact) Edited:
+	  Added TestCase for Vertical Profiles for Mesh 
+	* src/test/ressources/verticalprofile_mesh/*.xml Added:
+	  TestCaseRequests for VerticalProfile FIS Mesh 
+	   
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid) Edited:
+	  Bugfix: Remove leading- and trailingwhitspaces from Date- and Integervalues 
+	  
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalProfileArtifact): 
+	(testVerticalProfileInstantaneousPointArtifact) Edited:
+	 Added Testcases for VerticalProfile and VerticalProfile Instantaneouspoint 
+	* src/test/ressources/verticalprofile_instantaneouspoint/*.xml Added:
+	   TestCaseRequests for VerticalProfile Instantaneouspoint
+	* src/test/ressources/verticalprofile/*.xml Added:
+	  TestCaseRequests for VerticalProfile FIS Marnet
+	  
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/queries.properties Edited:
+	  Remove to_date from TimeSeries-Quueries becaus of Changes in the conf.xml-File 
+	* src/test/ressources/conf.xml Edited:
+	  Correct Types for min- and max-Values from Integer to Date 
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testTimeSeriesArtifact) Edited:
+	  Add CallContext to the Tests. 
+	* src/test/java/de/intevation/gnv/artifacts/TestCallContext.java Add:
+	  A CallContext used only in Junit-Tests
+	  
+2009-09-29	Tim Englich	<tim.englich@intevation.de>
+
+	* pom.xml Edited: 
+	  Added the dependency to Apache-Commons-Validator Version 1.3.1 which is
+	  used for the InputValoue-validation.
+	* src/main/java/de/intevation/gnv/utils/InputValidator.java Added : 
+	  An InputValidator for Validating InputValues.
+	  At this Moment only Integer, String and Date is supported.
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (putInputData) Edited:
+	  Add the InputValidator to validate the incomming Values from the Clients.
+	   
+2009-09-28	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/ChartFactory.java (createTimeSeries) Edited:
+	  Performanceimprovement: The Loop will be interrupted if the Pointer is bigger than the
+	  last Pointer of the Value that must be visualised.
+	  
+2009-09-28	Tim Englich	<tim.englich@intevation.de>
+
+	* pom.xml Edited:
+	  Added the Dependeny to the ehcache-Library
+	* src/test/ressources/ehcache.xml Added:
+	 The ehcache-Configuration. 
+	* src/test/ressources/conf.xml Edited:
+	  Added the Link to the ehcache-Configuration. 
+	* src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java (createArtifactContext) Edited:
+	  Added the Initialisation of the CacheManager. 
+	
+	* src/main/java/de/intevation/gnv/artifacts/cache/CacheFactory.java Added:
+	  An Fractoryimplementation for the central access to the Cache. 
+	  
+	* src/main/java/de/intevation/gnv/transition/MinMaxTransition.java (purifyResult) Edited,
+	* src/main/java/de/intevation/gnv/transition/SingleInputTransition.java (purifyResult) Edited, 
+	* src/main/java/de/intevation/gnv/transition/Transition.java Edited,
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, 
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: 
+	  Signature of Methods purifyResults, advanced and feed Changed to put the uuid to the Transition 
+	* src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java (createChart) Edited:
+	  Methodsignatur of getChartResult change for putting the uuid of an Artifact into it
+	* src/main/java/de/intevation/gnv/transition/OutputTransition.java (out) Edited, 
+	  src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (out) Edited:
+	  Method Signature Changed for putting the uuid of an Artifact to the Transition. 
+	  stored 
+	* src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Edited:
+	  removed the persitence of the Chartresults and put them into an Cache instance. 
+	  
+2009-09-28	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (getStatisticsGenerator) Edited:
+	 Extracted the Instantiation of the Statistics-object to an protected Methode
+	 to make it possible that extending Classes could change it. 
+	* src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java (getStatisticsGenerator) Edited:
+	Overwrite  getStatisticsGenerator to instantiate the VerticalProfileStatistics-
+	* src/main/java/de/intevation/gnv/statistics/VerticalProfileStatistics.java Added:
+	  Class for Calculating Statistics for VerticalProfiles- The Only thing whisch differs to
+	  TimeSeriesStatists is that the XoordinateValue is an double and not an Date-Value 
+	* src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java (calculateXOrdinateValue) Edited:
+	 Added the Methode calculateXOrdinateValue to this Class to switch is Values in extending Classes.
+	* src/main/java/de/intevation/gnv/statistics/Statistics.java (calculateStatistics) Edited:
+	  Added methodsignature to Interface for usage in different Implementations of Statistics.
+	  
+2009-09-28	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java (calculateStatistics) Edited:
+	  Bug fixed. Now all Values will be used to calculate the Statistics
+	  
+2009-09-28	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/conf.xml Edited :
+	  Changed the Output-format of Statistics from text/plain to text/xml.
+	  
+2009-09-28	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Edited:
+	  Moved the calculating-Methods from the Conmstructor to an separat Method.
+	  Switched the ResultContainer from Array to Collection 
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (out) Edited:
+	  Added the Output-Variante for generating Statistics
+
+2009-09-28	Tim Englich	<tim.englich@intevation.de>
+
+	* pom.xml Edited: 
+	  Added Link to Apache-Commons-Math to get the required Classes for the calculation
+	  of Statistics.
+	* src/main/java/de/intevation/gnv/statistics/exception/StatisticsException.java Added:
+	  Specified ExceptionClass for the Statistics Part of the gnv-artifacts 
+	* src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Edited:
+	  Remove compileErrors and switch to new Datastructure 
+
+2009-09-28	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/statistics/Statistic.java Added , 
+	  src/main/java/de/intevation/gnv/statistics/Statistics.java Added , 
+	  src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Added:
+	  Imported Statistics-Classes from old Project. Revision: 3101 Does not compile 
+	  
+2009-09-25	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/conf.xml Edited:
+	  Added with and height Inputparameter to each Chart-OutputMode.
+	   
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (out) Edited:
+	 Added the usage of the Parameters revieved from the client for the ChartRendering
+	  
+	* src/main/java/de/intevation/gnv/transition/DefaultInputValue.java (DefaultInputValue) (getDefaultValue) Edited , 
+	  src/main/java/de/intevation/gnv/transition/InputValue.java (getDefaultValue) Edited:
+	  Added the Method getDefaultValue to the Interface for getting the
+	  deafultvalue of an Parameter.
+	  
+	* src/main/java/de/intevation/gnv/transition/DefaultOutputMode.java Edited, 
+	 src/main/java/de/intevation/gnv/transition/OutputMode.java (getInputParameters) Edited:
+	  Added the Method  getInputParameters to the OutputMode for Handling the required Parameters 
+	  of an OutputMode.  
+	
+	* src/main/java/de/intevation/gnv/transition/OutputTransition.java (out) Edited:
+	  Put the InputParameter recived from the Client to the Methodsignature so that 
+	  they can be used during the outputprocessing. 
+	
+	* src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Edited:
+	  Read rquired Outputparameters from the Configuration 
+	
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited:
+	  Added support for Parameters in OutputNode of Describe-Artifact 
+	  
+2009-09-24	Tim Englich	<tim.englich@intevation.de>
+
+	* pom.xml Edited:
+	  Added Library for CSV-Support 
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (out) Edited:
+	  Add support for CSV-Export 
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (out) Edited:
+	  Add Fag on Context for storing the Artifact status after out. 
+	  
+2009-09-24	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java (createSuccessReport) Edited:
+	  Added a centraL Method for creating an Successreoprt. 
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited, 
+	  src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited: 
+	  Add ResultReporting to the different Metshods of an Artifact
+	  
+2009-09-24	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java Edited:
+	 Obsolet TODOs removed 
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited, 
+	  src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited:
+	  Create Exception Report added 
+	* src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java (createExceptionReport) Edited:
+	  Method for creating Exceptionreports added. 
+	  
+2009-09-24	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/queries.properties Edited:
+	  Queries formatted so that they can be analysed and extended easier.
+	  Some Bugs removed 
+	  
+2009-09-24	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java  Edited, 
+	  src/main/java/de/intevation/gnv/chart/ChartLabels.java Edited,
+	  src/main/java/de/intevation/gnv/chart/ChartFactory.java Edited:
+	  Removed obsolet Parameters an Methods.
+	  Use the ChartLable to put the DomainAxisLable into the Chart. 
+	
+	* src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Edited:
+	  Some more Loggingoutput integrated.
+	  Some Performanceimprovements done. The ResultData will only be refreshed if
+	  the InputValues has changed.
+	  Some Refactoring Work done. Move some Members into from extending Classes
+	  into this implementation.
+	* src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Edited:
+	 Dummywerte f�r Diagrammgenerierung durch Echtwerte ersetzt.
+	 Obsolete �bergabeparameter entfernt. 
+	 
+2009-09-23	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/queries.properties Edited:
+	  Statements for InstantaneousPoint Vertical Profiles added 
+	* src/test/ressources/conf.xml Edited:
+	  Configuration for Vertikal Profiles for InstantaneousPoints added
+	* src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileInstantaneousPointArtifact.java (VerticalProfileInstantaneousPointArtifact) Added:
+	 New Artifact-Class Reperesenting Artifacts for InstantaneousPoints Creating VerticalProfiles added. 
+	
+2009-09-23	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (prepareInputData4DateDBQuery) Edited:
+	  Bug Fixed, now all Inputvalues of String and Date will be put into the Query
+	  
+2009-09-23	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java (createXYSeries) Edited:
+	Bug fixed. Now all Values will be Renderd to the Chart 
+	* src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileMeshArtifact.java Added:
+	  Artifact-class for VerticalProfile Mesh added
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited:
+	  Support for StringQuieries and OracleDateQueries added 
+	* src/test/ressources/queries.properties Edited: 
+	  Queries for VerticalProfile Mesh integrated
+	* src/test/ressources/conf.xml Edited:
+	  Artifact for VerticalProfile Mesh integrated
+	  
+2009-09-22	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/queries.properties Edited:
+	  Added Queries for the Workfloe of collecting the
+	  required Information to generate a vertical Profile 
+	* src/test/ressources/conf.xml Edited: 
+	  Added the Configuration of the VerticalProfileArtifact
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (getCollection) Edited:
+	  Some Codrefactoring done for reuse of Functionality in extended Classes. 
+	* src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java Added:
+	Outputtransition for the Support of VerticalPropfiles 
+	* src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java (getKey),
+	  src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java (getKey) Edietd, 
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java (purifyResult) Edited:
+	 Change KEY-Attribute of KeyValueDescribeData from Integer to String for the required 
+	 Representation of Date-KeyValue-Pairs 
+	* src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java Added:
+	 ArtifactClass for the representation of VerticalProfiles 
+	* src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (createSelectBox) Edited:
+	  Added support for selected Products in static UI. 
+	* src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java Added:
+	  Factory for producing VerticalCharts added. 
+	* src/main/java/de/intevation/gnv/chart/ChartFactory.java Edited:
+	  Names of Getter for Columns Changed. 
+
+2009-09-21	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/queries.properties Edited:
+	 Queryie for TimeSeriesMesh added. 
+	* src/test/ressources/conf.xml Edited: 
+	  New Artifact representing the TimeSeries-Mesh added to the Configuration.
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Edited:
+	 Inputdata for the Chartgeneration will now be allocated by name and not by position in Transitionorder. 
+	* src/main/java/de/intevation/gnv/transition/describedata/SingleValueDescribeData.java Added, 
+	  src/main/java/de/intevation/gnv/transition/describedata/DefaultSingleValueDescribeData.java Added, 
+	  src/main/java/de/intevation/gnv/transition/SingleInputTransition.java Added:
+	  New Class for Representing a single Input Transition 
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited:
+	  Added support of usage inputValues none or multiple times in Queries.
+	  Added support for SingleInputTransitions in Describe-Output
+	* src/main/java/de/intevation/gnv/transition/InputValue.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/DefaultInputValue.java Edited:
+	  An InputValue now is possible to use none or multiple times in Queries. 
+	* src/main/java/de/intevation/gnv/timeseries/TimeSeriesMeshArtifact.java Added:
+	  ArtifactClass for the Representation of an Mesh-Timeseries-Artifact 
+
+2009-09-17	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/conf.xml Edited: 
+	  Database Cleanup Interval set to 5 minutes.
+	  
+2009-09-17	Tim Englich	<tim.englich@intevation.de>
+	* src/test/ressources/conf.xml Edited: 
+	  Some structurechanges done.
+	  
+	* src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java Edited:
+	  Fixed Bug supporting UTF-8 Documents properly. 
+	* src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java Edited, 
+	* src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java Edited,
+	 Added Methods for setting and getting the selection-state of this objects. 
+	
+	* src/main/java/de/intevation/gnv/transition/describedata/DefaultMinMaxDescribeData.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/describedata/MinMaxDescribeData.java Edited:
+	  Added setter for min an max-Values and getters an setters for minName  and maxName
+	   
+	* src/main/java/de/intevation/gnv/transition/describedata/NamedCollection.java Added, 
+	  src/main/java/de/intevation/gnv/transition/describedata/NamedArrayList.java Added:
+	  Collection ans an Implementation of this Collection for Storing Name of the Collection and if 
+	  the Values in it are multiselectable.
+	 
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java :
+	 Static UI-Support and valid SelectionStorage added.
+	 I added also an imporvement of the multiselect Methods for Datasets 
+	* src/main/java/de/intevation/gnv/transition/MinMaxTransition.java Edited:
+	  Storage of changed Values added
+	  
+	* src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited:
+	  Static UI Support Added
+	   
+	   
+2009-09-16	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/conf.xml Edited,
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe) Edited,
+	  src/main/java/de/intevation/gnv/transition/InputValue.java (isMultiselect) Edited,
+	  src/main/java/de/intevation/gnv/transition/InputData.java (concartValue) Edited,
+	  src/main/java/de/intevation/gnv/transition/DefaultInputValue.java (isMultiselect) Edited, 
+	  src/main/java/de/intevation/gnv/transition/DefaultInputData.java (concartValue)Edited, 
+	  src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (createUserInterface) Edited,
+	  src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (parseInputData) Edited:
+	   Added Multiselectsupport for InputValues
+	   
+2009-09-16	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (setup) Edited:
+	  Bug Fixed because of Infrastructure Changes in the Artifact-Module
+	   
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited:
+	  Put only the last DescribeData to the UI-Output bnecause auf Renderingproblems in the Client
+	   
+	* src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/describedata/DefaultMinMaxDescribeData.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java Edited:
+	  Made Interface Serializable, add UIDs to the Implementations of the Interface 
+	  
+2009-09-15	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (createUserInterface) Edited:
+	  Integrate UI-Representation for Describe into the FISArtifact. 
+	* src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java (createXFormElement) Refactoring,
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe) Refactoring: 
+	  Extract the Element-Creation of XForms Nodes into a Common Class to make them available for
+	  other Classes which have to create XForm-Fragments    
+	  
+2009-09-14	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/Transition.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/InputData.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/OutputMode.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/InputValue.java Edited, 
+	  src/main/java/de/intevation/gnv/artifacts/fis/product/Product.java Edited,
+	  src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/describedata/DescribeData.java Edited: 
+	  Make the Interfaces Serializable to make them usable in the Artifactdatabase
+	
+2009-09-14	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/OutputTransition.java Edited , 
+	  src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited,
+	  src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited, 
+	  src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited:
+	  Refactoring Work depending on Infrastructurchanges in the Artifact-Module 
+	  
+2009-09-10	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited, 
+	  src/test/ressources/timeseries/timeseries_step_01_feed.xml Edited,  
+	  src/test/ressources/timeseries/timeseries_step_01_advance.xml Edited, 
+	  src/test/ressources/conf.xml Edited:
+	  TestCase moced from TimeSeriesArtifact to FISArtifact. Used FIS: Marnet 
+	  
+2009-09-10	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java Added:
+	 Utilities-Class for some XML-Stuff that is only for gnv-artifacts
+	 
+	* src/main/java/de/intevation/gnv/utils/ArtifactFactoryUtilities.java Added:
+	 Factory to Instantiiate an ArtifactFactory (TODO: Should be moved to Artifact-database) 
+	
+	* src/main/java/de/intevation/gnv/artifacts/fis/product/Product.java Added, 
+	  src/main/java/de/intevation/gnv/artifacts/fis/product/DefaultProduct.java Added:
+	  Interfcaedefinition and Defaultimplementation for the Representation of the different
+	  Products in an FIS.
+	
+	* src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Added:
+	Artifact to Repersent an FIS. This Artifact is able to switch between different
+	SubArtifacts for handling the different Products  of an FIS. 
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited:
+	  Refactoring Work done because of changes in the artifact-modules 
+	  
+2009-09-10	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited, 
+	  src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited:
+	  Refactoringwork done because of changes in the artifact-module
+	  
+2009-09-10	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited:
+	  src/test/ressources/conf.xml Renamed: 
+	  Project Structure changed in artifact-database. So we have to rename
+	  the Testconfigurationfile in conf.xml. 
+
+	* src/test/ressources/results Added:
+	  Integrated Folder for temporal storing Resultfiles of the TestCases
+	   
+	* src/test/ressources/queries.properties Edited:
+	  Further Queries for Testcases integrated
+	* src/test/ressources/timeseries/timeseries_step_05_out.xml Added,  
+	  src/test/ressources/timeseries/timeseries_step_05_feed.xml Added:
+	  Integrated the last step of the TimeSeries-Workflow.
+	  Now the TestCase is able to render Charts.
+	   
+	* src/test/ressources/timeseries/timeseries_step_04_feed.xml Edited, 
+	  src/test/ressources/timeseries/timeseries_step_03_feed.xml Edited:
+	  Names of the feed-Parametes changed to the Syntax of BSH-Spelling
+	  
+2009-09-09	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java: 
+	  Chart Rendering completed with some Fixes to do
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java: 
+	  Integrated usage of KeyValueDescibeData
+	* src/main/java/de/intevation/gnv/transition/OutputTransition.java (getOutputModes): 
+	 Errorhandling integrated
+	* src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited, 
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited:
+	Refactored out-Method from Extending Class
+	
+2009-09-09	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/exception/TechnicalChartException.java Added, 
+	  src/main/java/de/intevation/gnv/chart/ChartFactory.java Edited:
+	  Refactoring of the ChartFactory so that it colud be use and it is possible to compile 
+	  this class.
+	  
+	* src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java Added, 
+	  src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java Added:
+	  Added an new Representation of Describedata for Key Value Pairs using for the Parameter Lists
+	  of the Transitions an put it into the Chartgeneration 
+	
+2009-09-09	Tim Englich	<tim.englich@intevation.de>
+
+	* pom.xml Edited:
+	Added JfreeChart Dependency to pom-file
+	
+2009-09-09	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/chart/Insets.java Added, 
+	  src/main/java/de/intevation/gnv/chart/ChartStyle.java Added, 
+	  src/main/java/de/intevation/gnv/chart/ChartLabels.java Added, 
+	  src/main/java/de/intevation/gnv/chart/ChartFactory.java Added:
+	  Insert Chart-Classes from OLD-Repository Revision: 3101 Does not compile
+
+2009-09-09	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Added:
+	  The specifed OutputTransition for the Product TimeSeries. 
+	
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited:
+	  Integration of the OutputModes in the DescriberesultDocument.
+	
+	* src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Added,
+	  src/main/java/de/intevation/gnv/transition/OutputTransition.java Added:
+	  The Interface and the abstract Basicimplementation of an Transition which 
+	  can produce different outputs.
+
+	* src/main/java/de/intevation/gnv/transition/DefaultOutputMode.java Added, 
+	  src/main/java/de/intevation/gnv/transition/OutputMode.java Added:
+	  Interfacestructur and Defaultimplementation for the Representation of the
+	  Different OutputModes given in an Artifact.
+	  
+2009-09-09	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe) Edited:
+	  Changed DateoutputFormat from German- to Anericanstyle 
+	  
+2009-09-09	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/timeseries/timeseries_step_04_feed.xml Added,  
+	* src/test/ressources/timeseries/timeseries_step_04_advance.xml Added:
+	  Two more ArtifactCommands for the next Step in TimeSeriesArtifactTestCase 
+	* src/test/ressources/queries.properties Edited:
+	  New Queries for timeseries_timeinterval added.
+	  Also use KEY ,VALUE, MIN and MAX as Identifiers for the different Columns. 
+	* src/test/ressources/GNVArtifactsTestCase_Configuration.xml Edited, 
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited:
+	   Modified the TimeseriesArtifact and added one further TransitionStep 
+
+2009-09-09	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/describedata/DefaultMinMaxDescribeData.java , 
+	* src/main/java/de/intevation/gnv/transition/describedata/MinMaxDescribeData.java,
+	* src/main/java/de/intevation/gnv/transition/describedata/DescribeData.java Added:
+	  Interface Structure and Defaultimplementation for Representing DescribeData of an
+	  Transition added. In this Way we are able to switch between different Renderingmethods
+	  for descibe. 
+	* src/main/java/de/intevation/gnv/transition/MinMaxTransition.java Added:
+	 Added MinMaxTransition for representing Min-/Max-Value Results in a Tansition
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited:
+	 Integrated Min- / MAX-Value Support for Describe. Also done some Refactoring Work
+	 for easy creating Extensions of this Class. 
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited:
+	  Userinterface Informations were integrated in the wrong Method. Now the
+	  Informations are put into the ui-Node 
+
+2009-09-08	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/timeseries/timeseries_step_01_advance.xml Edited, 
+	  src/test/ressources/timeseries/timeseries_step_01_feed.xml Edited, 
+	  src/test/ressources/timeseries/timeseries_step_02_advance.xml Added, 
+	  src/test/ressources/timeseries/timeseries_step_02_feed.xml Added, 
+	  src/test/ressources/timeseries/timeseries_step_03_advance.xml Added, 
+	  src/test/ressources/timeseries/timeseries_step_03_feed.xml Added, 
+	  src/test/ressources/GNVArtifactsTestCase_Configuration.xml: Edited,
+	  src/test/ressources/queries.properties Added,  
+	  src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited: 
+	  TestCase implemented until Choosing the TimeInetval of an TimeSeries
+	  
+	  One Entry is Missing
+	  
+2009-09-08	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/Transition.java Edited, 
+	  src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited,
+	  src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited,
+	  src/test/ressources/GNVArtifactsTestCase_Configuration.xml Edited,
+	  src/test/ressources/timeseries/timeseries_step_01_feed.xml Added , 
+	  src/test/ressources/timeseries/timeseries_step_01_advance.xml Added :
+	  Artifact.advance initial implementiert
+	  
+2009-09-08	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited,
+	  src/main/java/de/intevation/gnv/transition/DefaultInputData.java Added,
+	  src/main/java/de/intevation/gnv/transition/InputData.java Added,
+	  src/main/java/de/intevation/gnv/transition/exception/TransitionException.java Added,
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/Transition.java Edited, 
+	  src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited:
+	  Funktionalit�t Feed initial bereitgestellt.
+	  
+2009-09-08	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/GNVArtifactsTestCase_Configuration.xml,
+	  src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java, 
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java, 
+	  src/main/java/de/intevation/gnv/transition/DefaultInputValue.java Edited:
+	  Required Inputelements integrated in BasicArtifact-Descibe-Output
+	  
+2009-09-08	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/transition/DefaultInputValue.java Added,  
+	  src/main/java/de/intevation/gnv/transition/InputValue.java Added,
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, 
+	  src/main/java/de/intevation/gnv/transition/Transition.java Edited, 
+	  src/test/ressources/GNVArtifactsTestCase_Configuration.xml Edited:
+	  Constructs for the required Inputvalues for an Transition created 
+	  
+2009-09-08	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java, 
+	* src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java:,
+	* src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java: Edited
+	Added Output for Describe to the Artifactimplementation
+	
+2009-09-08	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/GNVArtifactsTestCase_Configuration.xml, 
+	  src/main/java/de/intevation/gnv/transition/Transition.java (getDescription), 
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java (setup), (getDescription): 
+	  Added Description to a Transition
+	  
+2009-09-07	Tim Englich	<tim.englich@intevation.de>
+
+	* src/test/ressources/GNVArtifactsTestCase_Configuration.xml, 
+	  src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java: ADD 
+	  TestClass for GNV-Artifacts an TimeSeriesArtifacs
+	
+	* src/main/java/de/intevation/gnv/transition/TransitionFactory.java,
+	  src/main/java/de/intevation/gnv/transition/TransitionBase.java, 
+	  src/main/java/de/intevation/gnv/transition/Transition.java, 
+	  src/main/java/de/intevation/gnv/transition/DefaultTransition.java: ADD
+	  Transitionimplementation for handling the substeps of an Artifact Livecycle
+	 
+	* src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java: ADD
+	  The Artifact for handling the TimeSeries
+	* src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java,
+	  src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContext.java,
+	  src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java:
+	  The Basic-Classes for providing GNC Artifacts. this Classes should be the Fundament
+	  for the Implementation of Specialized Artifacts e.g. TimeSeries
+	  * pom: Edited Projectreferences to the other GNV-Projects added
+	  
+2009-09-04	Tim Englich	<tim.englich@intevation.de>
+
+	* src/main/java/de/intevation/gnv/artifacts/ArtifactFactoryBase.java: 
+	Implementation of the General ArtifactFactory
+	
+2009-09-04	Tim Englich	<tim.englich@intevation.de>
+
+	* pom.xml: Created with maven and put the Moduledependencies into it
+	* target | .settings | .project | .classpath: Add to SVN-Ignore
+	* Changes | Changelog | NEWS | README | TODO: Added
+	* src/**: Added to the Project
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/Changes	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,37 @@
+2009-11-13      RELEASE 0.2
+
+	* Adding support for relative pathnames relating to central 
+        config document (issue 59)
+
+        * Splitting of configuration documents (Issue 40)
+
+        * Corrected data model of artifacs (issue 3)
+
+        * Added FIS Sea State, SEACAT, Current Meter, Ice Station Reports 
+
+        * Implemented gaps for spatial and temportal gaps (issue 45)
+
+        * TG_0040.005: Added a first ODV support
+
+        * Added more input validation to make it more user-friendly
+
+        * Added a first documentation of configuration documents
+
+
+2009-10-07	RELEASE 0.1
+
+	* Initial release of the artifacts special for the
+	  BSH Generic Viewer. They are to be configured to live
+	  inside an artifact database via conf.xml.
+
+	* The collection of parameters is modelled by transistions
+	  inside the XML.
+
+	* src/test/ressources/conf.xml gives a setup to use all
+	  the provided artifacts.
+
+	* Products can be produced for following FIS:
+	  Marnet, IMIS, STAUN, Modeldata, Delphin, Thermosalinograph,
+	  Chemusurvey, GTS, CTD, CBT in form of time series,
+	  vertical profiles and horizontal profiles on meshes
+	  and instantaneous points.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/NEWS	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,29 @@
+2009-11-13      RELEASE 0.2
+
+	* Added support for all required FIS:
+        Marnet, IMIS, STAUN, Modelldaten, Eisklimatologie, Eismeldungen, SST,
+        Delphin, Thermosalinograph, Chemusurvey, GTS, CTD, XBT, SeaCat,
+        Seegangsarchiv, Strommesser (Req. TG_0020.001)
+
+        * Added support for vertical profiles (Chapter 3.3.3.2.2)
+
+        * Added support for horizontal profiles (Chapter 3.3.3.2.3);
+        part independent of MapViewer
+
+        * Added a first support for ODV format (Req. TG_0040.005)
+
+        * Enabling client for multi-instances (Req. 00_0000.007)
+
+        * Adding of support of internal area filter (Req. TG_0020.012 b)
+
+        * Added more support for internationalization (TG_0050.004)
+
+        * Improved error handling with more user-friendly messages
+
+        * Added required statistical support (Chapter 3.3.3.3.1)
+
+
+2009-10-07	RELEASE 0.1
+
+        * Initial release of the artifacts special for the Generic BSH Viewer.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/bin/run.sh	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+DIR=`dirname $0`/..
+CLASSPATH=
+for l in `find -name \*.jar -print`; do
+   CLASSPATH=$CLASSPATH:$l
+done
+
+export CLASSPATH
+
+exec java -Xmx256m \
+     -server \
+     -Djava.io.tmpdir=/tmp/ \
+     -Dartifact.database.dir="$DIR/conf" \
+     de.intevation.artifactdatabase.App \
+     2>&1 > /dev/null
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/arcsdeconnectionpool.properties	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,31 @@
+###############################################################################
+###############################################################################
+# In this File it is possible to configure the Connectionpool to the the 
+# ArcSDE-DataBackend.
+# maxActive: Number of maximal Connection which can be used.
+# testOnBorrow: Should the Pool test the Connection which will be borrowed
+#               if it is Valid
+# testOnReturn: Should the Pool test the Connection which will be returned
+#               if it is Valid
+# testWhileIdle: Should the Pool test the Connection while it is Idl
+#                if it is Valid
+# timeBetweenEvictionRunsMillis : Time in Milliseconds which is allowed
+#                                 to reused a returned Connection.
+# server: The URL of the Server where the Database is reachable.
+# username: The Username which should be used to Connect to the Databackend.
+# credentials: The Credentials to the given username
+# port: The Communicationport which must be used to connect to the Databackend
+# database: The Name of the Instance which should be connected to.
+###############################################################################
+###############################################################################
+
+maxActive=2
+testOnBorrow=true
+testOnReturn=false
+testWhileIdle=false
+timeBetweenEvictionRunsMillis=360000
+server=localhost
+username=gast
+credentials=gast
+port=22119
+database=esri_sde
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/conf.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,408 @@
+<artifact-database>
+    <factories>
+        <context-factory>de.intevation.gnv.artifacts.context.GNVArtifactContextFactory</context-factory>
+        <artifact-factories>
+            <artifact-factory name="fis_marnet" description="Artiefactfactory for Instantiating the Artifact for the FIS Marnet"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_imis" description="Artiefactfactory for Instantiating the Artifact for the FIS IMIS"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_staun" description="Artiefactfactory for Instantiating the Artifact for the FIS STAUN"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_modeldata" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_eisklimatologie" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_icestations" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_sst" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_delphin" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_thermosalinograph" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_chemusurvey" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_gts" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_bsh_ctd" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_bsh_xbt" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_seacat" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_seastate" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+            <artifact-factory name="fis_currentmeter" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+        </artifact-factories>
+    </factories>
+    
+    <!--  Artifacts which represent one FIS. Each FIS can have several Products 
+          which will be Access using separate Artifacts.
+          Those Artifacts are configured below these Section.-->
+    <artifacts>
+        <artifact name="fis_marnet">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="4"/>
+                        <parameter name="fisname" value="fis_marnet"/>
+                    </parameters>
+                </product>
+                 <product name= "verticalProfile">
+                    <artifact-factory name="verticalProfile" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="4"/>
+                        <parameter name="fisname" value="fis_marnet"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_seacat">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="30"/>
+                        <parameter name="fisname" value="fis_seacat"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_currentmeter">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="33"/>
+                        <parameter name="fisname" value="fis_currentmeter"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_seastate">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="20"/>
+                        <parameter name="fisname" value="fis_seastate"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_imis">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="18"/>
+                        <parameter name="fisname" value="fis_imis"/>
+                    </parameters>
+                </product>
+                <product name= "verticalProfile">
+                    <artifact-factory name="verticalProfile" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="18"/>
+                        <parameter name="fisname" value="fis_imis"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_staun">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="17"/>
+                        <parameter name="fisname" value="fis_staun"/>
+                    </parameters>
+                </product>
+                <product name= "verticalProfile">
+                    <artifact-factory name="verticalProfile" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="17"/>
+                        <parameter name="fisname" value="fis_staun"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_modeldata">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeriesMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                         <parameter name="sourceid" value="2"/>
+                         <parameter name="fisname" value="fis_modeldata"/>
+                    </parameters>
+                </product>
+                <product name= "verticalProfile">
+                    <artifact-factory name="verticalProfileMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="2"/>
+                        <parameter name="fisname" value="fis_modeldata"/>
+                    </parameters>
+                </product>
+                <product name= "horizontalProfile">
+                    <artifact-factory name="horizontalProfilehorizontalProfileMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="2"/>
+                        <parameter name="fisname" value="fis_modeldata"/>
+                    </parameters>
+                </product>
+                 <product name= "verticalcrosssection">
+                    <artifact-factory name="verticalCrossSectionMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.verticalcrosssection.VerticalCrossSectionMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="2"/>
+                        <parameter name="fisname" value="fis_modeldata"/>
+                    </parameters>
+                </product>
+                <product name= "horizontalCrossSection">
+                    <artifact-factory name="horizontalCrossSectionMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.horizontalcrosssection.HorizontalCrossSectionMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="2"/>
+                        <parameter name="fisname" value="fis_modeldata"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+
+        <artifact name="fis_eisklimatologie">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeriesMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                         <parameter name="sourceid" value="38"/>
+                         <parameter name="fisname" value="fis_eisklimatologie"/>
+                    </parameters>
+                </product>
+                <product name= "horizontalProfile">
+                    <artifact-factory name="horizontalProfilehorizontalProfileMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="38"/>
+                        <parameter name="fisname" value="fis_eisklimatologie"/>
+                    </parameters>
+                </product>
+                <product name= "horizontalCrossSection">
+                    <artifact-factory name="horizontalCrossSectionMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.horizontalcrosssection.HorizontalCrossSectionMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="38"/>
+                        <parameter name="fisname" value="fis_eisklimatologie"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_icestations">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="38"/>
+                        <parameter name="fisname" value="fis_icestations"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_sst">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeriesMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                              ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                         <parameter name="sourceid" value="39"/>
+                         <parameter name="sourceid" value="40"/>
+                         <parameter name="sourceid" value="41"/>
+                         <parameter name="sourceid" value="42"/>
+                         <parameter name="fisname" value="fis_sst"/>
+                    </parameters>
+                </product>
+                <product name= "horizontalProfile">
+                    <artifact-factory name="horizontalProfilehorizontalProfileMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                         <parameter name="sourceid" value="39"/>
+                         <parameter name="sourceid" value="40"/>
+                         <parameter name="sourceid" value="41"/>
+                         <parameter name="sourceid" value="42"/>
+                         <parameter name="fisname" value="fis_sst"/>
+                    </parameters>
+                </product>
+                 <product name= "horizontalCrossSection">
+                    <artifact-factory name="horizontalCrossSectionMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.horizontalcrosssection.HorizontalCrossSectionMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="39"/>
+                         <parameter name="sourceid" value="40"/>
+                         <parameter name="sourceid" value="41"/>
+                         <parameter name="sourceid" value="42"/>
+                        <parameter name="fisname" value="fis_sst"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_delphin">
+            <products>
+                <product name= "horizontalProfile">
+                    <artifact-factory name="horizontalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="34"/>
+                        <parameter name="fisname" value="fis_delphin"/>
+                    </parameters>
+                </product>
+                
+            </products>
+        </artifact>
+        
+        <artifact name="fis_thermosalinograph">
+            <products>
+                <product name= "horizontalProfile">
+                    <artifact-factory name="horizontalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="35"/>
+                        <parameter name="fisname" value="fis_thermosalinograph"/>
+                    </parameters>
+                </product>
+                
+            </products>
+        </artifact>
+        
+        <artifact name="fis_chemusurvey">
+            <products>
+                <product name= "horizontalProfile">
+                    <artifact-factory name="horizontalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="37"/>
+                        <parameter name="fisname" value="fis_chemusurvey"/>
+                    </parameters>
+                </product>
+                
+            </products>
+        </artifact>
+        
+        <artifact name="fis_gts">
+            <products>
+                <product name= "timeSeries">
+                    <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="5"/>
+                        <parameter name="fisname" value="fis_gts"/>
+                    </parameters>
+                </product>
+                <product name= "verticalProfile">
+                    <artifact-factory name="verticalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="5"/>
+                        <parameter name="fisname" value="fis_gts"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_bsh_ctd">
+            <products>
+                <product name= "verticalProfile">
+                    <artifact-factory name="verticalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="32"/>
+                        <parameter name="fisname" value="fis_bsh_ctd"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <artifact name="fis_bsh_xbt">
+            <products>
+                <product name= "verticalProfile">
+                    <artifact-factory name="verticalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata"  
+                             ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory>
+                    <parameters>
+                        <parameter name="sourceid" value="36"/>
+                        <parameter name="fisname" value="fis_bsh_xbt"/>
+                    </parameters>
+                </product>
+            </products>
+        </artifact>
+        
+        <!--  Product specific Artifacts which are referenced by the Artifacts
+              of the FIS above.
+              The product-Artifacts can be configured here or can be referenced
+              using an xlink:href-Attribute. -->
+              
+        <artifact name="timeSeries" xlink:href="${artifacts.config.dir}/products/timeseries/conf_timeseriespoint.xml" />
+        <artifact name="timeSeriesMesh" xlink:href="${artifacts.config.dir}/products/timeseries/conf_mesh.xml" />
+        
+        <artifact name="verticalProfile" xlink:href="${artifacts.config.dir}/products/verticalprofile/conf_timeseriespoint.xml" />
+        <artifact name="verticalProfileMesh" xlink:href="${artifacts.config.dir}/products/verticalprofile/conf_mesh.xml" />
+        <artifact name="verticalProfileInstantaneousPoint" xlink:href="${artifacts.config.dir}/products/verticalprofile/conf_instantaneouspoint.xml" />
+        
+        <artifact name="horizontalProfileMesh" xlink:href="${artifacts.config.dir}/products/horizontalprofile/conf_mesh.xml" />
+        <artifact name="horizontalProfileInstantaneousPoint" xlink:href="${artifacts.config.dir}/products/horizontalprofile/conf_instantaneouspoint.xml" />
+        
+        <artifact name="verticalCrossSectionMesh" xlink:href="${artifacts.config.dir}/products/verticalcrosssection/conf_mesh.xml" />
+        
+        <artifact name="horizontalCrossSectionMesh" xlink:href="${artifacts.config.dir}/products/horizontalcrosssection/conf_mesh.xml" />
+    </artifacts>
+    <ehcache>
+        <!--  In this Section the Path to Configurationfile for the EHCache,
+              which is unsed to store the Results of the Artifacts ,
+              is given.-->
+        <configuration>${artifacts.config.dir}/ehcache.xml</configuration>
+    </ehcache>
+    <geo-backend>
+        <!--  In this Section the required Configuration for the geo-backend is
+              given. It is possible to configue the Path of the  ConnectionPool-
+              Properties and the Query-Properties-File where all required 
+              Queries of the System are stored. -->
+        <backend-configuration>${artifacts.config.dir}/arcsdeconnectionpool.properties</backend-configuration>
+        <query-configuration>${artifacts.config.dir}/queries.properties</query-configuration>
+    </geo-backend>
+    <rest-server>
+        <!--  at this Point it is possible to Change the Port the ArtifactDatabase will bind to.-->
+        <port>8181</port>
+    </rest-server>
+    <!-- garbage collection of outdated artifacts -->
+    <cleaner>
+        <sleep-time>300000</sleep-time>
+    </cleaner>
+    <database>
+        <user>SA</user>
+        <password></password>
+        <!--url>jdbc:h2:src/test/ressources/artifacts.db</url>
+        <driver>org.h2.Driver</driver> 
+        <sql></sql> -->
+    </database>
+</artifact-database>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/ehcache.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ehcache>
+    <defaultCache maxElementsInMemory="1000"
+        eternal="true"
+        overflowToDisk="false"
+        memoryStoreEvictionPolicy="FIFO"
+         />
+</ehcache>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/log.conf	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,4 @@
+.level=FINEST
+handlers=java.util.logging.ConsoleHandler
+java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
+java.util.logging.FileHandler.pattern=rest-%u-%g.log
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/log4j.properties	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,17 @@
+###############################################################################
+# Developmentconfiguration for the Loggingengine.
+# The Configuration will only log the Information to the Console.
+# For Test- and Productionenviroment it is necessary to create a
+# separate Configuration which will be log the Informations e.g. into
+# a File (RolingFileAppender).
+###############################################################################
+
+# Set root logger level to DEBUG and its only appender to A1.
+log4j.rootLogger=DEBUG, A1
+
+# A1 is set to be a ConsoleAppender.
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/horizontalcrosssection/conf_mesh.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<artifact name="horizontalCrossSectionMesh">
+    <transitions>
+        <transition id="horizontalcrosssection_area" description="horizontalcrosssection_area_one" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>area_filter</queryID>
+            <dataname>areaid</dataname>
+            <data-multiselect>false</data-multiselect>
+             <data-noselect>true</data-noselect>
+            <reachableTransitions>
+                   <transition>horizontalcrosssection_subarea</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        <transition id="horizontalcrosssection_subarea" description="horizontalcrosssection_area_one" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>subarea_filter</queryID>
+            <dataname>subareaid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                   <transition>horizontalcrosssection_mesh</transition>
+            </reachableTransitions>
+            <alternativeTransition>
+                   <transition id="horizontalcrosssection_mesh" description="horizontalcrosssection_mesh" transition="de.intevation.gnv.transition.DefaultTransition">
+                        <queryID>verticalprofile_mesh</queryID>
+                        <dataname>meshid</dataname>
+                        <data-multiselect>false</data-multiselect>
+                        <reachableTransitions>
+                               <transition>horizontalcrosssection_meshpoint_depth</transition>
+                        </reachableTransitions>
+                        <inputvalues>
+                            <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                            <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                        </inputvalues>
+                    </transition>
+            </alternativeTransition>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="areaid" type="Integer" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="horizontalcrosssection_mesh" description="horizontalcrosssection_mesh" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>verticalprofile_mesh</queryID>
+            <dataname>meshid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                   <transition>horizontalcrosssection_meshpoint_depth</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="subareaid" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="horizontalcrosssection_meshpoint_depth" description="horizontalcrosssection_meshpoint_depth" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>horizontalcrosssection_meshpoint_depth</queryID>
+            <dataname>depthid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                <transition>horizontalcrosssection_meshpoint_parameter</transition>
+            </reachableTransitions>
+            <inputvalues>
+                 <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+
+        <transition id="horizontalcrosssection_meshpoint_parameter" description="horizontalcrosssection_meshpoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>verticalprofile_mesh_parameter</queryID>
+            <dataname>parameterid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                <transition>horizontalcrosssection_mesh_date</transition>
+            </reachableTransitions>
+            <inputvalues>
+                 <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="depthid" type="Integer" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="horizontalcrosssection_mesh_date" description="horizontalcrosssection_mesh_date" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>horizontalcrosssection_mesh_date</queryID>
+           <dataname>dateid</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+                <transition>horizontalcrosssection_mesh_calculate_results</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+               <inputvalue name="depthid" type="Integer" multiselect="false" usedinquery="0"/>
+               <inputvalue name="parameterid" type="Integer" multiselect="false" usedinquery="1" />
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+        </transition>
+        
+        <transition id="horizontalcrosssection_mesh_calculate_results" description="horizontalcrosssection_mesh_calculate_results" transition="de.intevation.gnv.transition.profile.horizontalcrosssection.HorizontalCrossSectionMeshOutputTransition">
+            <queryID>horizontalcrosssection_mesh_data</queryID>
+            <queryID-odv>horizontalcrosssection_mesh_odv_data</queryID-odv>
+            <inputvalues>
+                <inputvalue name="parameterid" type="Integer" multiselect="false" usedinquery="1" />
+                <inputvalue name="dateid" type="Date" multiselect="false" usedinquery="1" />
+                <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="depthid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+            <value-names>
+                <value-name name="feature" value="meshid"></value-name>
+                <value-name name="parameter" value="parameterid"></value-name>
+                <value-name name="measurement" value="depthid"></value-name>
+            </value-names>
+            <outputsModes>
+                <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png">
+                    <parameters>
+                        <inputvalue name="width" type="Integer" value="600"/>
+                        <inputvalue name="height" type="Integer" value="400"/>
+                    </parameters>
+                </outputsMode>
+                <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/>
+                <outputsMode name="odv" description="ODV-Export der Daten" mime-type="text/plain"/>
+            </outputsModes>
+        </transition>
+        
+    </transitions>
+</artifact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/horizontalprofile/conf_instantaneouspoint.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<artifact name="horizontalProfileInstantaneousPoint">
+   <transitions>
+       <transition id="horizontalprofile_instantaneouspoint_vehicle" description="horizontalprofile_instantaneouspoint_vehicle" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>horizontalprofile_instantaneouspoint_vehicle</queryID>
+           <dataname>vehicleid</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+               <transition>horizontalprofile_instantaneouspoint_cruise</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="sourceid" type="Integer" multiselect="false"/>
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       <transition id="horizontalprofile_instantaneouspoint_cruise" description="horizontalprofile_instantaneouspoint_cruise" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>horizontalprofile_instantaneouspoint_cruise</queryID>
+           <dataname>cruiseid</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+                  <transition>horizontalprofile_instantaneouspoint_track</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="vehicleid" type="Integer" multiselect="false"/>
+               <inputvalue name="sourceid" type="Integer" multiselect="false"/>
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       <transition id="horizontalprofile_instantaneouspoint_track" description="horizontalprofile_instantaneouspoint_track" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>horizontalprofile_instantaneouspoint_track</queryID>
+           <dataname>trackid</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+                  <transition>horizontalprofile_instantaneouspoint_surveyinfo</transition>
+           </reachableTransitions>Eisklimatologie
+           <inputvalues>
+               <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="1" />
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       <transition id="horizontalprofile_instantaneouspoint_surveyinfo" description="horizontalprofile_instantaneouspoint_surveyinfo" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>horizontalprofile_instantaneouspoint_surveyinfo</queryID>
+           <dataname>surveyid</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+                  <transition>horizontalprofile_instantaneouspoint_parameter</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="0" />
+               <inputvalue name="trackid" type="Integer" multiselect="false" usedinquery="1" />
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       <transition id="horizontalprofile_instantaneouspoint_parameter" description="horizontalprofile_instantaneouspoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>horizontalprofile_instantaneouspoint_parameter</queryID>
+           <dataname>parameterid</dataname>
+           <data-multiselect>true</data-multiselect>
+           <reachableTransitions>
+                  <transition>horizontalprofile_instantaneouspoint_depth</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="0" />
+               <inputvalue name="trackid" type="Integer" multiselect="false" usedinquery="0" />
+               <inputvalue name="surveyid" type="Integer" multiselect="false" usedinquery="1" />
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       <transition id="horizontalprofile_instantaneouspoint_depth" description="horizontalprofile_instantaneouspoint_depth" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>horizontalprofile_instantaneouspoint_depth</queryID>
+           <dataname>measurementid</dataname>
+           <data-multiselect>true</data-multiselect>
+           <reachableTransitions>
+                  <transition>horizontalprofile_instantaneouspoint_calculate_results</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="0" />
+               <inputvalue name="trackid" type="Integer" multiselect="false" usedinquery="0" />
+               <inputvalue name="surveyid" type="Integer" multiselect="false" usedinquery="1" />
+               <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="0" />
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       <transition id="horizontalprofile_instantaneouspoint_calculate_results" description="horizontalprofile_instantaneouspoint_calculate_results" transition="de.intevation.gnv.transition.profile.horizontal.HorizontalProfileOutputTransition">
+           <queryID>horizontalprofile_instantaneouspoint_chart_data</queryID>
+           <queryID-odv>horizontalprofile_instantaneouspoint_odv_data</queryID-odv>
+           <inputvalues>
+               <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="0" />
+               <inputvalue name="trackid" type="Integer" multiselect="false" usedinquery="0" />
+               <inputvalue name="surveyid" type="Integer" multiselect="false" usedinquery="1" />
+               <inputvalue name="measurementid" type="Double" multiselect="true" usedinquery="1" />
+               <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1" />
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+           <value-names>
+               <value-name name="feature" value="trackid"></value-name>
+               <value-name name="parameter" value="parameterid"></value-name>
+               <value-name name="measurement" value="measurementid"></value-name>
+           </value-names>
+           <outputsModes>
+               <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png">
+                   <parameters>
+                       <inputvalue name="width" type="Integer" value="600"/>
+                       <inputvalue name="height" type="Integer" value="400"/>
+                   </parameters>
+               </outputsMode>
+               <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/>
+               <outputsMode name="odv" description="ODV-Export der Daten" mime-type="text/plain"/>
+               <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/>
+           </outputsModes>
+       </transition>
+   </transitions>
+</artifact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/horizontalprofile/conf_mesh.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<artifact name="horizontalProfileMesh">
+  <transitions>
+        <transition id="horizontalprofile_mesh_area" description="horizontalprofile_mesh_area_one" transition="de.intevation.gnv.transition.DefaultTransition">
+               <queryID>area_filter</queryID>
+               <dataname>areaid</dataname>
+               <data-multiselect>false</data-multiselect>
+                <data-noselect>true</data-noselect>
+               <reachableTransitions>
+                      <transition>horizontalprofile_mesh_subarea</transition>
+               </reachableTransitions>
+               <inputvalues>
+                   <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                   <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+               </inputvalues>
+          </transition>
+          <transition id="horizontalprofile_mesh_subarea" description="horizontalprofile_mesh_subaera" transition="de.intevation.gnv.transition.DefaultTransition">
+               <queryID>subarea_filter</queryID>
+               <dataname>subareaid</dataname>
+               <data-multiselect>false</data-multiselect>
+               <reachableTransitions>
+                      <transition>horizontalprofile_mesh</transition>
+               </reachableTransitions>
+               <alternativeTransition>
+                   <transition id="horizontalprofile_mesh_without_geom" description="horizontalprofile_mesh_without_geom" transition="de.intevation.gnv.transition.DefaultTransition">
+                       <queryID>verticalprofile_mesh</queryID>
+                       <dataname>meshid</dataname>
+                       <data-multiselect>false</data-multiselect>
+                       <reachableTransitions>
+                              <transition>horizontalprofile_mesh_coordinate</transition>
+                       </reachableTransitions>
+                       <inputvalues>
+                           <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                           <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                       </inputvalues>
+                   </transition>
+               </alternativeTransition>
+               <inputvalues>
+                   <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                   <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                   <inputvalue name="areaid" type="Integer" multiselect="false" usedinquery="1"/>
+               </inputvalues>
+         </transition>
+    <transition id="horizontalprofile_mesh" description="horizontalprofile_mesh" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>verticalprofile_mesh_with_area</queryID>
+           <dataname>meshid</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+                  <transition>horizontalprofile_mesh_coordinate</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+               <inputvalue name="subareaid" type="Integer" multiselect="false" usedinquery="1"/>
+           </inputvalues>
+       </transition>
+       
+       <transition id="horizontalprofile_mesh_coordinate" description="horizontalprofile_mesh_coordinate" transition="de.intevation.gnv.transition.SingleInputTransition">
+           <dataname>mesh_coordinate</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+                  <transition>horizontalprofile_mesh_point</transition>
+           </reachableTransitions>
+           <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       
+       <transition id="horizontalprofile_mesh_point" description="horizontalprofile_mesh_point" transition="de.intevation.gnv.transition.CoordinateSelectionTransition">
+           <queryID>verticalprofile_mesh_point</queryID>
+           <dataname>mesh_point</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+               <transition>horizontalprofile_mesh_axis</transition>
+           </reachableTransitions>
+           <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                <inputvalue name="mesh_coordinate" type="Coordinate" multiselect="false"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+        <transition id="horizontalprofile_mesh_axis" description="horizontalprofile_mesh_point" transition="de.intevation.gnv.transition.profile.horizontal.NorthSouthEastWestTransition">
+          <dataname>axisid</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+               <transition>horizontalprofile_meshpoint_parameter</transition>
+           </reachableTransitions>
+           <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                <inputvalue name="mesh_point" type="Integer" multiselect="false"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       <transition id="horizontalprofile_meshpoint_parameter" description="horizontalprofile_meshpoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>verticalprofile_mesh_parameter</queryID>
+           <dataname>parameterid</dataname>
+           <data-multiselect>true</data-multiselect>
+           <reachableTransitions>
+               <transition>horizontalprofile_meshpoint_depth</transition>
+           </reachableTransitions>
+           <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       
+       
+        <transition id="horizontalprofile_meshpoint_depth" description="horizontalprofile_meshpoint_depth" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>horizontalprofile_meshpoint_depth</queryID>
+           <dataname>depthid</dataname>
+           <data-multiselect>true</data-multiselect>
+           <reachableTransitions>
+               <transition>horizontalprofile_mesh_date</transition>
+           </reachableTransitions>
+           <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="2"/>
+                <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="0"/>
+                <inputvalue name="parameterid" type="Integer" multiselect="true" useinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       
+       <transition id="horizontalprofile_mesh_date" description="horizontalprofile_mesh_date" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>verticalprofile_mesh_date</queryID>
+           <dataname>dateid</dataname>
+           <data-multiselect>true</data-multiselect>
+           <reachableTransitions>
+                <transition>horizontalprofile_mesh_calculate_results</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+               <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/>
+               <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="0"/>
+               <inputvalue name="parameterid" type="Integer" multiselect="true"  usedinquery="1"/>
+               <inputvalue name="depthid" type="Integer" multiselect="true"  usedinquery="0"/>
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       
+       <transition id="horizontalprofile_mesh_calculate_results" description="horizontalprofile_mesh_calculate_results" transition="de.intevation.gnv.transition.profile.horizontal.HorizontalProfileOutputTransition">
+           <queryID>horizontalprofile_mesh_chart_data</queryID>
+           <queryID-odv>horizontalprofile_mesh_odv_data</queryID-odv>
+           <inputvalues>
+               <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/>
+               <inputvalue name="dateid" type="Date" multiselect="true" usedinquery="1"/>
+               <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="2"/>
+               <inputvalue name="depthid" type="Integer" multiselect="true"  usedinquery="1"/>
+               <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="2"/>
+               <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="1"/> 
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+           <value-names>
+               <value-name name="feature" value="mesh_point"></value-name>
+               <value-name name="parameter" value="parameterid"></value-name>
+               <value-name name="measurement" value="depthid"></value-name>
+           </value-names>
+           <outputsModes>
+               <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png">
+                   <parameters>
+                       <inputvalue name="width" type="Integer" value="600"/>
+                       <inputvalue name="height" type="Integer" value="400"/>
+                   </parameters>
+               </outputsMode>
+               <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/>
+               <outputsMode name="odv" description="ODV-Export der Daten" mime-type="text/plain"/>
+               <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/>
+           </outputsModes>
+       </transition>
+    </transitions>
+</artifact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/timeseries/conf_mesh.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<artifact name="timeSeriesMesh">
+    <transitions>
+        <transition id="timeseries_mesh_area" description="timeseries_mesh_area_one" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>area_filter</queryID>
+            <dataname>areaid</dataname>
+            <data-multiselect>false</data-multiselect>
+             <data-noselect>true</data-noselect>
+            <reachableTransitions>
+                   <transition>timeseries_mesh_subarea</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        <transition id="timeseries_mesh_subarea" description="timeseries_mesh_subaera" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>subarea_filter</queryID>
+            <dataname>subareaid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                   <transition>timeseries_mesh</transition>
+            </reachableTransitions>
+            <alternativeTransition>
+                <transition id="timeseries_mesh_without_geom" description="timeseries_mesh_without_geom" transition="de.intevation.gnv.transition.DefaultTransition">
+                    <queryID>verticalprofile_mesh</queryID>
+                    <dataname>meshid</dataname>
+                    <data-multiselect>false</data-multiselect>
+                    <reachableTransitions>
+                           <transition>timeseries_mesh_coordinate</transition>
+                    </reachableTransitions>
+                    <inputvalues>
+                        <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                        <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                    </inputvalues>
+                </transition>
+            </alternativeTransition>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="areaid" type="Integer" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+        </transition>
+        <transition id="timeseries_mesh" description="timeseries_mesh" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>verticalprofile_mesh_with_area</queryID>
+            <dataname>meshid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                   <transition>timeseries_mesh_coordinate</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="subareaid" type="Integer" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="timeseries_mesh_coordinate" description="timeseries_mesh_coordinate" transition="de.intevation.gnv.transition.SingleInputTransition">
+            <dataname>mesh_coordinate</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                   <transition>timeseries_meshpoint</transition>
+            </reachableTransitions>
+            <inputvalues>
+                 <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="timeseries_meshpoint" description="timeseries_meshpoint" transition="de.intevation.gnv.transition.CoordinateSelectionTransition">
+            <queryID>timeseries_meshpoint</queryID>
+            <dataname>mesh_point</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                <transition>timeseries_meshpoint_depth</transition>
+            </reachableTransitions>
+            <inputvalues>
+                 <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                 <inputvalue name="mesh_coordinate" type="Coordinate" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="timeseries_meshpoint_depth" description="timeseries_meshpoint_depth" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>timeseries_meshpoint_depth</queryID>
+            <dataname>depthid</dataname>
+            <data-multiselect>true</data-multiselect>
+            <reachableTransitions>
+                <transition>timeseries_meshpoint_parameter</transition>
+            </reachableTransitions>
+            <inputvalues>
+                 <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                 <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="2"/>
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+
+        <transition id="timeseries_meshpoint_parameter" description="timeseries_meshpoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>timeseries_mesh_parameter</queryID>
+            <dataname>parameterid</dataname>
+            <data-multiselect>true</data-multiselect>
+            <reachableTransitions>
+                <transition>timeseries_meshpoint_interval</transition>
+            </reachableTransitions>
+            <inputvalues>
+                 <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="depthid" type="Integer" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="timeseries_meshpoint_interval" description="timeseries_interval" transition="de.intevation.gnv.transition.MinMaxTransition">
+            <queryID>timeseries_mesh_interval</queryID>
+            <dataname>timeinterval</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                <transition>timeseries_meshpoint_calculate_results</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="depthid" type="Integer" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="timeseries_meshpoint_calculate_results" description="timeseries_interval" transition="de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition">
+            <queryID>timeseries_mesh_chart_data</queryID>
+            <queryID-odv>timeseries_mesh_odv_data</queryID-odv>
+            <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/>
+                 <inputvalue name="depthid" type="Integer" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="minvalue" type="Date" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="maxvalue" type="Date" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+            <value-names>
+                <value-name name="feature" value="mesh_point"></value-name>
+                <value-name name="parameter" value="parameterid"></value-name>
+                <value-name name="measurement" value="depthid"></value-name>
+            </value-names>
+            <outputsModes>
+                <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png">
+                    <parameters>
+                        <inputvalue name="width" type="Integer" value="600"/>
+                        <inputvalue name="height" type="Integer" value="400"/>
+                    </parameters>
+                </outputsMode>
+                <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/>
+                <outputsMode name="odv" description="ODV-Export der Daten" mime-type="text/plain"/>
+                <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/>
+            </outputsModes>
+        </transition>
+        
+    </transitions>
+</artifact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/timeseries/conf_timeseriespoint.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<artifact name="timeSeries">
+<!--  This is the Artifact which represents the required Businesslogic to
+      collect the required Data for rendering specified OutputFormats
+      for TimeSeries on TimeSeriesPoint-Data.
+      * Charts
+      * Statistics
+      * CSV
+      * ODV -->
+    <transitions>
+        
+        <!--  The required Transitionsteps which must be done until rendering
+              the OutputFormats. Each Transition is represented one required 
+              Step. One Steps can consume specified InputParameters an after 
+              that it can calculate new Data which will be used as possible 
+              InputValues in the next Transition-Step from each Transition it 
+              is only possible to move to those Transitions which are Configured 
+              in the rechableTransitions-Tag  -->
+              
+         <!-- Description of the Transition-Attributes:
+              * id: The id of the Transition. This must be unique in one Artifact.
+                    It is used to reference the Transition eg. in 
+                    reachableTransitions.
+              * description: A short description which should describe the Transition
+              * transition: The Class which must be load to handle the required logic,
+                            This class will be load using reflection. -->
+              
+        <transition id="timeseries_area" description="timeseries_area_one" transition="de.intevation.gnv.transition.DefaultTransition">
+            
+            <!-- The QueryID which identifies the Query which is configured in 
+                 the Queries-Properties-File.
+                 It is possible to define no Query. 
+                 In this case you have to remove this Element from the 
+                 Configuration.-->
+            <queryID>area_filter</queryID>
+            
+            <!-- The ID of the Data which will be fetched using this Transition.
+                 The Name must be unique in one Artifact.
+                 The Name is used for the localization and must be set into the
+                 several PropertiesFiles for the localization.  -->
+            <dataname>areaid</dataname>
+            
+            <!-- This Flag will be used to switch between single and
+                 multiselect possibility of the Data which will be fetched 
+                 using this transition.  -->
+            <data-multiselect>false</data-multiselect>
+            
+            <!-- Optional Flag which can be used to set that is is possible 
+                 to select no entry in the Data which will be fetched using
+                 this transition. -->
+            <data-noselect>true</data-noselect>
+            
+            <reachableTransitions>
+                   <!-- reachableTransitions are those Transition which can be
+                        reached as next Step. The Transition notifies in 
+                        describe-output which Transitions can be reached.
+                        The User / calling program can choose which Transition 
+                        he/it wants to use next  -->
+                   <transition>timeseries_subarea</transition>
+            </reachableTransitions>
+            
+            <inputvalues>
+                <!-- At this place it is necessary to configure the Elements
+                     which must be feed and can be used in this transition.
+                     It is possible to set if the Values should be used in 
+                     the DatabaseQuery of this Transition and how often it
+                     must be used.
+                     The order of the Elements is also the Order of usage setting
+                     the Values into the SQL-Query. -->
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="timeseries_subarea" description="timeseries_subaera" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>subarea_filter</queryID>
+            <dataname>subareaid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                   <transition>timeseries_timeseriespoint</transition>
+            </reachableTransitions>
+            <alternativeTransition>
+                <!-- It is possible  to configure an alternative Transition which 
+                     will be used if the feed put the Information that no Data 
+                     was selected. -->
+                <transition id="timeseries_without_geom" description="timeseries_mesh_without_geom" transition="de.intevation.gnv.transition.DefaultTransition">
+                    <queryID>timeseries_timeseriespoint</queryID>
+                    <dataname>featureid</dataname>
+                    <data-multiselect>false</data-multiselect>
+                    <reachableTransitions>
+                           <transition>timeseries_parameter</transition>
+                    </reachableTransitions>
+                    <inputvalues>
+                        <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                        <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                    </inputvalues>
+                </transition>
+            </alternativeTransition>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="areaid" type="Integer" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+        </transition>
+        <transition id="timeseries_timeseriespoint" description="timeseries_timeseriespoint" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>timeseries_timeseriespoint_with_area</queryID>
+            <dataname>featureid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                <transition>timeseries_parameter</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="subareaid" type="Integer" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="timeseries_parameter" description="timeseries_parameter" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>timeseries_parameter</queryID>
+            <dataname>parameterid</dataname>
+            <data-multiselect>true</data-multiselect>
+            <reachableTransitions>
+                <transition>timeseries_depth_height</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="featureid" type="Integer" multiselect="false"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>           
+        
+         <transition id="timeseries_depth_height" description="timeseries_depth_height" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>timeseries_depth_height</queryID>
+            <dataname>measurementid</dataname>
+            <data-multiselect>true</data-multiselect>
+            <reachableTransitions>
+                 <transition>timeseries_interval</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="featureid" type="Integer" multiselect="false"/>
+                <inputvalue name="parameterid" type="Integer" multiselect="true"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="timeseries_interval" description="timeseries_interval" transition="de.intevation.gnv.transition.MinMaxTransition">
+            <queryID>timeseries_interval</queryID>
+            <dataname>timeinterval</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                <transition>timeseries_calculate_results</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="parameterid" type="Integer" multiselect="true"/>
+                <inputvalue name="measurementid" type="Integer" multiselect="true"/>
+            </inputvalues>
+        </transition>
+        
+        <!--  Last Transition is the Output-Transition. At this place the differen OutputModes are configured.
+              For each OutputMode it might be necessary to configure separat Databasequery which collect the
+              Data. -->
+        <transition id="timeseries_calculate_results" description="timeseries_interval" transition="de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition">
+            <queryID>timeseries_chart_data</queryID>
+            <queryID-odv>timeseries_odv_data</queryID-odv>
+            <inputvalues>
+                <inputvalue name="parameterid" type="Integer" multiselect="true"/>
+                <inputvalue name="measurementid" type="Integer" multiselect="true"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="minvalue" type="Date" multiselect="false"/>
+                <inputvalue name="maxvalue" type="Date" multiselect="false"/>
+            </inputvalues>
+            <outputsModes>
+                <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png">
+                    <parameters>
+                        <inputvalue name="width" type="Integer" value="600"/>
+                        <inputvalue name="height" type="Integer" value="400"/>
+                    </parameters>
+                </outputsMode>
+                <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/>
+                <outputsMode name="odv" description="ODV-Export der Daten" mime-type="text/plain"/>
+                <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/>
+            </outputsModes>
+            <!--  Definition of the TimeGaps which are required to render the Charts properly.
+                  each Parameter in each FIS can have   -->
+            <time-gap-definition xlink:href="${artifacts.config.dir}/products/timeseries/timegap_definition.xml" />
+        </transition>
+        
+    </transitions>
+</artifact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/timeseries/timegap_definition.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<time-gaps>
+    <time-gap key = "1" gap="1" unit = "m"/>
+    <time-gap key = "2" gap="2" unit = "m"/>
+    <time-gap key = "3" gap="3" unit = "m"/>
+    <time-gap key = "4" gap="4" unit = "m"/>
+    <time-gap key = "5" gap="5" unit = "m"/>
+    <time-gap key = "6" gap="10" unit = "m"/>
+    <time-gap key = "7" gap="15" unit = "m"/>
+    <time-gap key = "8" gap="20" unit = "m"/>
+    <time-gap key = "9" gap="30" unit = "m"/>
+    <time-gap key = "10" gap="1" unit = "h"/>
+    <time-gap key = "11" gap="2" unit = "h"/>
+    <time-gap key = "12" gap="3" unit = "h"/>
+    <time-gap key = "13" gap="4" unit = "h"/>
+    <time-gap key = "14" gap="6" unit = "h"/>
+    <time-gap key = "15" gap="8" unit = "h"/>
+    <time-gap key = "16" gap="12" unit = "h"/>
+    <time-gap key = "17" gap="1" unit = "D"/>
+    <time-gap key = "18" gap="1" unit = "W"/>
+    <time-gap key = "19" gap="1" unit = "M"/>
+    <time-gap key = "20" gap="1" unit = "Y"/>
+</time-gaps>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/verticalcrosssection/conf_mesh.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<artifact name="verticalCrossSectionMesh">
+     <transitions>
+        <transition id="verticalcrosssection_mesh_area" description="verticalcrosssection_mesh_area_one" transition="de.intevation.gnv.transition.DefaultTransition">
+               <queryID>area_filter</queryID>
+               <dataname>areaid</dataname>
+               <data-multiselect>false</data-multiselect>
+                <data-noselect>true</data-noselect>
+               <reachableTransitions>
+                      <transition>verticalcrosssection_mesh_subarea</transition>
+               </reachableTransitions>
+               <inputvalues>
+                   <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                   <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+               </inputvalues>
+          </transition>
+          <transition id="verticalcrosssection_mesh_subarea" description="verticalcrosssection_mesh_area_one" transition="de.intevation.gnv.transition.DefaultTransition">
+               <queryID>subarea_filter</queryID>
+               <dataname>subareaid</dataname>
+               <data-multiselect>false</data-multiselect>
+               <reachableTransitions>
+                      <transition>verticalcrosssection_mesh</transition>
+               </reachableTransitions>
+               <alternativeTransition>
+                      <transition id="verticalcrosssection_mesh_without_geom" description="verticalcrosssection_mesh" transition="de.intevation.gnv.transition.DefaultTransition">
+                           <queryID>verticalprofile_mesh</queryID>
+                           <dataname>meshid</dataname>
+                           <data-multiselect>false</data-multiselect>
+                           <reachableTransitions>
+                                  <transition>verticalcrosssection_mesh_coordinate</transition>
+                           </reachableTransitions>
+                           <inputvalues>
+                               <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                           </inputvalues>
+                       </transition>
+               </alternativeTransition>
+               <inputvalues>
+                   <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                   <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                   <inputvalue name="areaid" type="Integer" multiselect="false" usedinquery="1"/>
+               </inputvalues>
+         </transition>
+         <transition id="verticalcrosssection_mesh" description="verticalcrosssection_mesh" transition="de.intevation.gnv.transition.DefaultTransition">
+             <queryID>verticalprofile_mesh_with_area</queryID>
+             <dataname>meshid</dataname>
+             <data-multiselect>false</data-multiselect>
+             <reachableTransitions>
+                    <transition>verticalcrosssection_mesh_coordinate</transition>
+             </reachableTransitions>
+             <inputvalues>
+                 <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="subareaid" type="Integer" multiselect="false" usedinquery="1"/>
+             </inputvalues>
+         </transition>
+         
+         <transition id="verticalcrosssection_mesh_coordinate" description="verticalcrosssection_mesh_coordinate" transition="de.intevation.gnv.transition.SingleInputTransition">
+             <dataname>mesh_coordinate</dataname>
+             <data-multiselect>false</data-multiselect>
+             <reachableTransitions>
+                    <transition>verticalcrosssection_mesh_point</transition>
+             </reachableTransitions>
+             <inputvalues>
+                  <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                  <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+             </inputvalues>
+         </transition>
+         
+         <transition id="verticalcrosssection_mesh_point" description="verticalcrosssection_mesh__point" transition="de.intevation.gnv.transition.CoordinateSelectionTransition">
+             <queryID>verticalprofile_mesh_point</queryID>
+             <dataname>mesh_point</dataname>
+             <data-multiselect>false</data-multiselect>
+             <reachableTransitions>
+                 <transition>verticalcrosssection_mesh_axis</transition>
+             </reachableTransitions>
+             <inputvalues>
+                  <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                  <inputvalue name="mesh_coordinate" type="Coordinate" multiselect="false"/>
+                  <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+             </inputvalues>
+         </transition>
+          <transition id="verticalcrosssection_mesh_axis" description="verticalcrosssection_mesh_axis" transition="de.intevation.gnv.transition.profile.horizontal.NorthSouthEastWestTransition">
+            <dataname>axisid</dataname>
+             <data-multiselect>false</data-multiselect>
+             <reachableTransitions>
+                 <transition>verticalcrosssection_mesh_parameter</transition>
+             </reachableTransitions>
+             <inputvalues>
+                  <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                  <inputvalue name="mesh_point" type="Integer" multiselect="false"/>
+                  <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+             </inputvalues>
+         </transition>
+         <transition id="verticalcrosssection_mesh_parameter" description="verticalcrosssection_mesh_parameter" transition="de.intevation.gnv.transition.DefaultTransition">
+             <queryID>verticalprofile_mesh_parameter</queryID>
+             <dataname>parameterid</dataname>
+             <data-multiselect>false</data-multiselect>
+             <reachableTransitions>
+                 <transition>verticalcrosssection_mesh_date</transition>
+             </reachableTransitions>
+             <inputvalues>
+                  <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                  <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/>
+                  <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="0"/>
+                  <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+             </inputvalues>
+         </transition>
+         
+         
+         <transition id="verticalcrosssection_mesh_date" description="verticalcrosssection_mesh_date" transition="de.intevation.gnv.transition.DefaultTransition">
+             <queryID>verticalcrosssection_mesh_date</queryID>
+             <dataname>dateid</dataname>
+             <data-multiselect>false</data-multiselect>
+             <reachableTransitions>
+                  <transition>verticalcrosssection_mesh_calculate_results</transition>
+             </reachableTransitions>
+             <inputvalues>
+                 <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="0"/>
+                 <inputvalue name="parameterid" type="Integer" multiselect="true"  usedinquery="1"/>
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+             </inputvalues>
+         </transition>
+         
+         <transition id="verticalcrosssection_mesh_calculate_results" description="verticalcrosssection_mesh_calculate_results" transition="de.intevation.gnv.transition.profile.verticalcrosssection.VerticalCrossSectionOutputTransition">
+             <queryID>verticalcrosssection_mesh_chart_data</queryID>
+             <queryID-odv>verticalcrosssection_mesh_odv_data</queryID-odv>
+             <inputvalues>
+                 <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/>
+                 <inputvalue name="dateid" type="Date" multiselect="true" usedinquery="1"/>
+                 <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="2"/>
+                 <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="2"/>
+                 <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="1"/> 
+                 <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+             </inputvalues>
+             <value-names>
+                 <value-name name="feature" value="mesh_point"></value-name>
+                 <value-name name="parameter" value="parameterid"></value-name>
+                 <value-name name="measurement" value="depthid"></value-name>
+             </value-names>
+             <outputsModes>
+                 <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png">
+                     <parameters>
+                         <inputvalue name="width" type="Integer" value="600"/>
+                         <inputvalue name="height" type="Integer" value="400"/>
+                     </parameters>
+                 </outputsMode>
+                 <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/>
+             </outputsModes>
+         </transition>
+     </transitions>
+</artifact>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/verticalprofile/conf_instantaneouspoint.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<artifact name="verticalProfileInstantaneousPoint">
+   <transitions>
+     <transition id="verticalprofile_instantaneouspoint_series" description="verticalprofile_instantaneouspoint_series" transition="de.intevation.gnv.transition.DefaultTransition">
+         <queryID>verticalprofile_instantaneouspoint_series</queryID>
+         <dataname>seriesid</dataname>
+         <data-multiselect>false</data-multiselect>
+         <reachableTransitions>
+             <transition>verticalprofile_instantaneouspoint_point</transition>
+         </reachableTransitions>
+         <inputvalues>
+             <inputvalue name="sourceid" type="Integer" multiselect="false"/>
+              <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+         </inputvalues>
+     </transition>
+     <transition id="verticalprofile_instantaneouspoint_point" description="verticalprofile_instantaneouspoint_point" transition="de.intevation.gnv.transition.CoordinateSelectionTransition">
+         <queryID>verticalprofile_instantaneouspoint_point</queryID>
+         <dataname>instantaneouspoint_point</dataname>
+         <data-multiselect>false</data-multiselect>
+         <reachableTransitions>
+             <transition>verticalprofile_instantaneouspoint_parameter</transition>
+         </reachableTransitions>
+         <inputvalues>
+              <inputvalue name="seriesid" type="Integer" multiselect="false"/>
+               <inputvalue name="sourceid" type="Integer" multiselect="false"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+         </inputvalues>
+     </transition>
+     <transition id="verticalprofile_instantaneouspoint_parameter" description="verticalprofile_instantaneouspoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition">
+         <queryID>verticalprofile_instantaneouspoint_parameter</queryID>
+         <dataname>parameterid</dataname>
+         <data-multiselect>true</data-multiselect>
+         <reachableTransitions>
+             <transition>verticalprofile_instantaneouspoint_minmaxdepth</transition>
+         </reachableTransitions>
+         <inputvalues>
+              <inputvalue name="seriesid" type="Integer" multiselect="false" usedinquery="0" />
+              <inputvalue name="instantaneouspoint_point" type="Integer" multiselect="false" usedinquery="1"/>
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+         </inputvalues>
+     </transition>
+     <transition id="verticalprofile_instantaneouspoint_minmaxdepth" description="verticalprofile_instantaneouspoint_minmaxdepth" transition="de.intevation.gnv.transition.MinMaxTransition">
+         <queryID>verticalprofile_instantaneouspoint_minmaxdepth</queryID>
+         <dataname>depthrange</dataname>
+         <data-multiselect>true</data-multiselect>
+         <reachableTransitions>
+             <transition>verticalprofile_instantaneouspoint_calculate_results</transition>
+         </reachableTransitions>
+         <inputvalues>
+              <inputvalue name="seriesid" type="Integer" multiselect="false" usedinquery="0" />
+              <inputvalue name="instantaneouspoint_point" type="Integer" multiselect="false" usedinquery="1"/>
+              <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+              <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/>
+         </inputvalues>
+     </transition>
+     <transition id="verticalprofile_instantaneouspoint_calculate_results" description="verticalprofile_mesh_calculate_results" transition="de.intevation.gnv.transition.profile.vertical.VerticalProfileOutputTransition">
+         <queryID>verticalprofile_instantaneouspoint_chart_data</queryID>
+         <queryID-odv>verticalprofile_instantaneouspoint_odv_data</queryID-odv>
+         <inputvalues>
+             <inputvalue name="seriesid" type="Integer" multiselect="false" usedinquery="0" />
+             <inputvalue name="instantaneouspoint_point" type="Integer" multiselect="false" usedinquery="1"/>
+             <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/>
+             <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+             <inputvalue name="minvalue" type="Double" multiselect="false" usedinquery="1"/>
+             <inputvalue name="maxvalue" type="Double" multiselect="false" usedinquery="1"/>
+         </inputvalues>
+         <value-names>
+             <value-name name="feature" value="instantaneouspoint_point"></value-name>
+             <value-name name="parameter" value="parameterid"></value-name>
+             <value-name name="measurement" value="dateid"></value-name>
+         </value-names>
+         <outputsModes>
+             <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png">
+                 <parameters>
+                     <inputvalue name="width" type="Integer" value="600"/>
+                     <inputvalue name="height" type="Integer" value="400"/>
+                 </parameters>
+             </outputsMode>
+             <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/>
+             <outputsMode name="odv" description="ODV-Export der Daten" mime-type="text/plain"/>
+             <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/>
+         </outputsModes>
+     </transition>
+  </transitions>
+</artifact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/verticalprofile/conf_mesh.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<artifact name="verticalProfileMesh">
+   <transitions>
+       <transition id="verticalprofile_mesh_area" description="verticalprofile_mesh_area_one" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>area_filter</queryID>
+           <dataname>areaid</dataname>
+           <data-multiselect>false</data-multiselect>
+            <data-noselect>true</data-noselect>
+           <reachableTransitions>
+                  <transition>verticalprofile_mesh_subarea</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       <transition id="verticalprofile_mesh_subarea" description="verticalprofile_mesh_subaera" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>subarea_filter</queryID>
+           <dataname>subareaid</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+                  <transition>verticalprofile_mesh</transition>
+           </reachableTransitions>
+           <alternativeTransition>
+               <transition id="verticalprofile_mesh_without_geom" description="timeseries_mesh_without_geom" transition="de.intevation.gnv.transition.DefaultTransition">
+                   <queryID>verticalprofile_mesh</queryID>
+                   <dataname>meshid</dataname>
+                   <data-multiselect>false</data-multiselect>
+                   <reachableTransitions>
+                          <transition>verticalprofile_mesh_coordinate</transition>
+                   </reachableTransitions>
+                   <inputvalues>
+                       <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                       <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                   </inputvalues>
+               </transition>
+           </alternativeTransition>
+           <inputvalues>
+               <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+               <inputvalue name="areaid" type="Integer" multiselect="false" usedinquery="1"/>
+           </inputvalues>
+       </transition>
+       <transition id="verticalprofile_mesh" description="verticalprofile_mesh" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>verticalprofile_mesh_with_area</queryID>
+           <dataname>meshid</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+                  <transition>verticalprofile_mesh_coordinate</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+               <inputvalue name="subareaid" type="Integer" multiselect="false" usedinquery="1"/>
+           </inputvalues>
+       </transition>
+       
+       <transition id="verticalprofile_mesh_coordinate" description="verticalprofile_mesh_coordinate" transition="de.intevation.gnv.transition.SingleInputTransition">
+           <dataname>mesh_coordinate</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+                  <transition>verticalprofile_mesh_point</transition>
+           </reachableTransitions>
+           <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       
+       <transition id="verticalprofile_mesh_point" description="verticalprofile_mesh_point" transition="de.intevation.gnv.transition.CoordinateSelectionTransition">
+           <queryID>verticalprofile_mesh_point</queryID>
+           <dataname>mesh_point</dataname>
+           <data-multiselect>false</data-multiselect>
+           <reachableTransitions>
+               <transition>verticalprofile_mesh_mindepth</transition>
+           </reachableTransitions>
+           <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false"/>
+                <inputvalue name="mesh_coordinate" type="Coordinate" multiselect="false"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       
+        <transition id="verticalprofile_mesh_mindepth" description="verticalprofile_mesh_mindepth" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>verticalprofile_mesh_mindepth</queryID>
+            <dataname>mindepthid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                <transition>verticalprofile_mesh_maxdepth</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="2"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="verticalprofile_mesh_maxdepth" description="verticalprofile_mesh_maxdepth" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>verticalprofile_mesh_maxdepth</queryID>
+            <dataname>maxdepthid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                <transition>verticalprofile_meshpoint_parameter</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="2"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="mindepthid" type="Double" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+        </transition>
+       <transition id="verticalprofile_meshpoint_parameter" description="verticalprofile_meshpoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>verticalprofile_mesh_parameter</queryID>
+           <dataname>parameterid</dataname>
+           <data-multiselect>true</data-multiselect>
+           <reachableTransitions>
+               <transition>verticalprofile_mesh_date</transition>
+           </reachableTransitions>
+           <inputvalues>
+                <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+                <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="mindepthid" type="Double" multiselect="false" usedinquery="0"/>
+                <inputvalue name="maxdepthid" type="Double" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       
+       <transition id="verticalprofile_mesh_date" description="verticalprofile_mesh_date" transition="de.intevation.gnv.transition.DefaultTransition">
+           <queryID>verticalprofile_mesh_date</queryID>
+           <dataname>dateid</dataname>
+           <data-multiselect>true</data-multiselect>
+           <reachableTransitions>
+                <transition>verticalprofile_mesh_calculate_results</transition>
+           </reachableTransitions>
+           <inputvalues>
+               <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/>
+               <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/>
+               <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1" />
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+               <inputvalue name="mindepthid" type="Double" multiselect="false" usedinquery="0"/>
+               <inputvalue name="maxdepthid" type="Double" multiselect="false" usedinquery="0"/>
+           </inputvalues>
+       </transition>
+       
+       <transition id="verticalprofile_mesh_calculate_results" description="verticalprofile_mesh_calculate_results" transition="de.intevation.gnv.transition.profile.vertical.VerticalProfileOutputTransition">
+           <queryID>verticalprofile_mesh_chart_data</queryID>
+           <queryID-odv>verticalprofile_mesh_odv_data</queryID-odv>
+           <inputvalues>
+               <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/>
+               <inputvalue name="dateid" type="Date" multiselect="true" usedinquery="1"/>
+               <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="2"/>
+               <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="2"/> 
+               <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+               <inputvalue name="mindepthid" type="Double" multiselect="false" usedinquery="1"/>
+               <inputvalue name="maxdepthid" type="Double" multiselect="false" usedinquery="1"/>
+           </inputvalues>
+           <value-names>
+               <value-name name="feature" value="mesh_point"></value-name>
+               <value-name name="parameter" value="parameterid"></value-name>
+               <value-name name="measurement" value="dateid"></value-name>
+           </value-names>
+           <outputsModes>
+               <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png">
+                   <parameters>
+                       <inputvalue name="width" type="Integer" value="600"/>
+                       <inputvalue name="height" type="Integer" value="400"/>
+                   </parameters>
+               </outputsMode>
+               <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/>
+               <outputsMode name="odv" description="ODV-Export der Daten" mime-type="text/plain"/>
+               <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/>
+           </outputsModes>
+       </transition>
+   </transitions>
+</artifact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/products/verticalprofile/conf_timeseriespoint.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<artifact name="verticalProfile">
+    <transitions>
+        <transition id="verticalprofile_area" description="verticalprofile_area_one" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>area_filter</queryID>
+            <dataname>areaid</dataname>
+            <data-multiselect>false</data-multiselect>
+             <data-noselect>true</data-noselect>
+            <reachableTransitions>
+                   <transition>verticalprofile_subarea</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        <transition id="verticalprofile_subarea" description="verticalprofile_subaera" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>subarea_filter</queryID>
+            <dataname>subareaid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                   <transition>verticalprofile_timeseriespoint</transition>
+            </reachableTransitions>
+            <alternativeTransition>
+                <transition id="verticalprofile_without_geom" description="verticalprofile_without_geom" transition="de.intevation.gnv.transition.DefaultTransition">
+                    <queryID>verticalprofile_point</queryID>
+                    <dataname>featureid</dataname>
+                    <data-multiselect>false</data-multiselect>
+                    <reachableTransitions>
+                           <transition>verticalprofile_parameter</transition>
+                    </reachableTransitions>
+                    <inputvalues>
+                        <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="1"/>
+                        <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                    </inputvalues>
+                </transition>
+            </alternativeTransition>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false" usedinquery="0"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="areaid" type="Integer" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+        </transition>
+        <transition id="verticalprofile_timeseriespoint" description="timeseries_timeseriespoint" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>timeseries_timeseriespoint_with_area</queryID>
+            <dataname>featureid</dataname>
+            <data-multiselect>false</data-multiselect>
+            <reachableTransitions>
+                <transition>verticalprofile_parameter</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="sourceid" type="Integer" multiselect="false"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="subareaid" type="Integer" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="verticalprofile_parameter" description="timeseries_parameter" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>verticalprofile_parameter</queryID>
+            <dataname>parameterid</dataname>
+            <data-multiselect>true</data-multiselect>
+            <reachableTransitions>
+                <transition>verticalprofile_date</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="featureid" type="Integer" multiselect="false"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="verticalprofile_date" description="verticalprofile_date" transition="de.intevation.gnv.transition.DefaultTransition">
+            <queryID>verticalprofile_date</queryID>
+            <dataname>dateid</dataname>
+            <data-multiselect>true</data-multiselect>
+            <reachableTransitions>
+                 <transition>verticalprofile_minmaxdepth</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="featureid" type="Integer" multiselect="false"/>
+                <inputvalue name="parameterid" type="Integer" multiselect="true"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="verticalprofile_minmaxdepth" description="verticalprofile_minmaxdepth" transition="de.intevation.gnv.transition.MinMaxTransition">
+            <queryID>verticalprofile_minmaxdepth</queryID>
+            <dataname>depthrange</dataname>
+            <data-multiselect>true</data-multiselect>
+            <reachableTransitions>
+                 <transition>verticalprofile_calculate_results</transition>
+            </reachableTransitions>
+            <inputvalues>
+                <inputvalue name="featureid" type="Integer" multiselect="false"/>
+                <inputvalue name="parameterid" type="Integer" multiselect="true"/>
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="dateid" type="Date" multiselect="true" usedinquery="0"/>
+            </inputvalues>
+        </transition>
+        
+        <transition id="verticalprofile_calculate_results" description="verticalprofile_calculate_results" transition="de.intevation.gnv.transition.profile.vertical.VerticalProfileOutputTransition">
+            <queryID>verticalprofile_chart_data</queryID>
+            <queryID-odv>verticalprofile_odv_data</queryID-odv>
+            <inputvalues>
+                <inputvalue name="featureid" type="Integer" multiselect="false"/>
+                <inputvalue name="parameterid" type="Integer" multiselect="true"/>
+                <inputvalue name="dateid" type="Date" multiselect="true" />
+                <inputvalue name="fisname" type="String" multiselect="false" usedinquery="0"/>
+                <inputvalue name="minvalue" type="Double" multiselect="false" usedinquery="1"/>
+                 <inputvalue name="maxvalue" type="Double" multiselect="false" usedinquery="1"/>
+            </inputvalues>
+            <value-names>
+                <value-name name="feature" value="featureid"></value-name>
+                <value-name name="parameter" value="parameterid"></value-name>
+                <value-name name="measurement" value="dateid"></value-name>
+            </value-names>
+            <outputsModes>
+                <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png">
+                    <parameters>
+                        <inputvalue name="width" type="Integer" value="600"/>
+                        <inputvalue name="height" type="Integer" value="400"/>
+                    </parameters>
+                </outputsMode>
+                <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/>
+                <outputsMode name="odv" description="ODV-Export der Daten" mime-type="text/plain"/>
+                <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/>
+            </outputsModes>
+        </transition>
+    </transitions>
+</artifact>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/doc/conf/queries.properties	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,978 @@
+#############################################
+#############################################
+##########     Zeitserie       ##############
+#############################################
+#############################################
+
+timeseries_timeseriespoint=SELECT DISTINCT \
+        tsp.FEATUREID KEY, \
+        tsp.NAME VALUE \
+    FROM MEDIAN.TIMESERIESPOINT tsp, \
+         MEDIAN.MEASUREMENT mmt \
+    WHERE tsp.FEATUREID =  mmt.FEATUREID AND \
+          mmt.SOURCEID = ? \
+    order by tsp.name
+
+timeseries_timeseriespoint_with_area=SELECT \
+        MEDIAN.TIMESERIESPOINT.FEATUREID KEY, \
+        MEDIAN.TIMESERIESPOINT.NAME VALUE \
+    FROM MEDIAN.TIMESERIESPOINT, \
+         MEDIAN.MEASUREMENT MMT \
+    WHERE MEDIAN.TIMESERIESPOINT.FEATUREID =  MMT.FEATUREID AND \
+          MMT.SOURCEID = ? AND \
+          INTERSECTS(SHAPE, \
+                      (SELECT st_astext(SHAPE) \
+                       FROM MEDIAN.FEATUREAREA \
+                       WHERE (FEATURETYPE = 7 OR FEATURETYPE = 8) AND \
+                              FEATURECODE = ? )\
+                      )\
+    ORDER BY MEDIAN.TIMESERIESPOINT.NAME
+
+timeseries_parameter=SELECT DISTINCT \
+        p.PARAMETERID KEY, \
+        p.GERMANNAME VALUE \
+    FROM MEDIAN.PARAMETER P, \
+         MEDIAN.TIMESERIES TS, \
+         MEDIAN.TIMESERIESVALUE TSV, \
+         MEDIAN.MEASUREMENT M, \
+         MEDIAN.TIMESERIESPOINT TSP \
+    WHERE M.FEATUREID = TSP.FEATUREID AND \
+          M.MEASUREMENTID = TSV.MEASUREMENTID AND \
+          TS.TIMESERIESID = TSV.TIMESERIESID AND \
+          P.PARAMETERID = TS.PARAMETERID AND \
+          TSP.FEATUREID = ? \
+    ORDER BY P.GERMANNAME
+    
+timeseries_depth_height=SELECT DISTINCT \
+        M.MEASUREMENTID KEY, \
+        M.ZLOCATION VALUE \
+    FROM MEDIAN.MEASUREMENT M, \
+         MEDIAN.TIMESERIESVALUE TSV, \
+         MEDIAN.TIMESERIES T, \
+         MEDIAN.PARAMETER P \
+    WHERE M.MEASUREMENTID = TSV.MEASUREMENTID AND \
+          TSV.TIMESERIESID = T.TIMESERIESID AND \
+          T.PARAMETERID = P.PARAMETERID AND \
+          M.FEATUREID = ? AND \
+          P.PARAMETERID IN (?)\
+    ORDER BY m.ZLOCATION DESC
+
+timeseries_interval=select min(tv.TIMEVALUE) MIN, \
+        max(tv.TIMEVALUE) MAX \
+    from MEDIAN.TIMESERIES t , \
+         MEDIAN.TIMESERIESVALUE tv \
+    where tv.TIMESERIESID = t.TIMESERIESID AND \
+          t.PARAMETERID IN ( ? ) AND \
+          tv.MEASUREMENTID IN ( ? )
+          
+timeseries_chart_data=SELECT tv.TIMEVALUE XORDINATE, \
+        tv.DATAVALUE YORDINATE, \
+        t.PARAMETERID GROUP1, \
+        tv.MEASUREMENTID GROUP2, \
+        tv.TIMESERIESID GROUP3, \
+        t.TIMEINTERVAL GAPID \
+    FROM MEDIAN.TIMESERIESVALUE tv, \
+         MEDIAN.TIMESERIES t \
+    WHERE tv.TIMESERIESID = t.TIMESERIESID AND \
+          t.PARAMETERID IN ( ? ) AND \
+          tv.MEASUREMENTID IN ( ? ) AND \
+          tv.TIMEVALUE >= ? AND \
+          tv.TIMEVALUE <= ? \
+    ORDER BY tv.MEASUREMENTID , \
+             tv.TIMESERIESID , \
+             t.PARAMETERID , \
+             tv.TIMEVALUE
+             
+timeseries_odv_data = SELECT SI.NAME CRUISE, \
+            MEDIAN.TIMESERIESPOINT.NAME STATION, \
+            '*' TYPE, \
+            ST_ASTEXT(SHAPE), \
+            0 BOTDEPTH, \
+            (M.ZLOCATION *-1) DEPTH, \
+            TSV.TIMEVALUE, \
+            TSV.DATAVALUE, \
+            TS.PARAMETERID PARAMETER, \
+            TSV.MEASUREMENTID, \
+            TSV.TIMESERIESID \
+     FROM MEDIAN.TIMESERIESPOINT , \
+          MEDIAN.TIMESERIESVALUE TSV, \
+          MEDIAN.TIMESERIES TS, \
+          MEDIAN.MEASUREMENT M, \
+          MEDIAN.SOURCEINFO SI \
+     WHERE SI.SOURCEID = M.SOURCEID AND \
+           M.FEATUREID = MEDIAN.TIMESERIESPOINT.FEATUREID AND \
+           M.MEASUREMENTID = TSV.MEASUREMENTID AND \
+           TSV.TIMESERIESID = TS.TIMESERIESID AND \
+           TS.PARAMETERID IN ( ? ) AND \
+           TSV.MEASUREMENTID IN ( ? ) AND \
+           TSV.TIMEVALUE >= ? AND \
+           TSV.TIMEVALUE <= ? \
+     ORDER BY TSV.MEASUREMENTID , \
+              TSV.TIMESERIESID , \
+              TS.PARAMETERID , \
+              TSV.TIMEVALUE
+
+#############################################
+#############################################
+##########   Zeitserie Mesh    ##############
+#############################################
+#############################################
+
+timeseries_mesh = SELECT OBJECTID KEY, \
+        m.NAME VALUE \
+    FROM MEDIAN.MESH m \
+    WHERE SOURCEID IN (?) \
+    ORDER BY m.NAME
+timeseries_meshpoint = SELECT MEDIAN.MESHPOINT.FEATUREID, \
+        ST_ASTEXT(SHAPE) \
+    FROM MEDIAN.MESHPOINT, \
+         MEDIAN.MESH M \
+    WHERE MEDIAN.MESHPOINT.MESHID = M.MESHID AND \
+         KPOSITION = 1 AND \
+         M.OBJECTID = ? AND \
+         INTERSECTS(SHAPE,"?")
+
+timeseries_meshpoint_depth = SELECT MP.FEATUREID KEY, \
+        'Layer ' || ML.KPOSITION || ': ' || -ML.UPPERZLOCATION || ' - '|| -ML.LOWERZLOCATION VALUE \
+    from MEDIAN.MESHLAYER ML, \
+         MEDIAN.MESHPOINT MP, \
+         MEDIAN.MESH M \
+    WHERE ML.KPOSITION = MP.KPOSITION AND \
+          ML.MESHID = MP.MESHID AND \
+          M.OBJECTID = ? AND \
+          MP.MESHID = M.MESHID  AND \
+          IPOSITION = (select IPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) AND \
+          JPOSITION = (select JPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) \
+    ORDER BY ML.UPPERZLOCATION DESC
+
+timeseries_mesh_parameter=SELECT distinct \
+        p.PARAMETERID KEY , \
+        p.GERMANNAME VALUE \
+    from MEDIAN.PARAMETER p, \
+         MEDIAN.MESHSCALARVALUE msc, \
+         MEDIAN.MESH m \
+    where m.OBJECTID = ? AND \
+          msc.PARTID = m.PARTIDMIN AND \
+          msc.PARAMETERID = p.PARAMETERID \
+    order by p.GERMANNAME
+timeseries_mesh_interval=select /*+ parallel(TIMEVALUE,5) */ \
+        min(TIMEVALUE) MIN, \
+        max(TIMEVALUE) MAX \
+    from MEDIAN.MESHSCALARVALUE msc , \
+         MEDIAN.MESH m \
+    where m.OBJECTID = ? AND \
+          msc.PARTID >= m.PARTIDMIN AND \
+          msc.PARTID <= m.PARTIDMAX AND \
+          msc.PARAMETERID IN (?)
+
+timeseries_mesh_chart_data=select /*+ parallel(timevalue,10) */ \
+        msv.TIMEVALUE XORDINATE, \
+        msv.DATAVALUE YORDINATE, \
+        msv.PARAMETERID GROUP1, \
+        msv.FEATUREID GROUP2, \
+        mp.FEATUREID GROUP3, \
+        -1 GAPID \
+    from MEDIAN.MESHSCALARVALUE msv , \
+         MEDIAN.MESHPOINT mp, \
+         MEDIAN.MESH m \
+    where (m.OBJECTID = ? AND \
+           msv.PARTID >= m.PARTIDMIN AND \
+           msv.PARTID <= m.PARTIDMAX ) AND \
+          msv.FEATUREID in ( ? ) AND \
+          msv.PARAMETERID in ( ? ) AND \
+          mp.FEATUREID in ( ? ) AND \
+          msv.TIMEVALUE >= ? AND \
+          msv.TIMEVALUE <= ? \
+    order by mp.FEATUREID, \
+             msv.FEATUREID, \
+             msv.PARAMETERID, \
+             msv.TIMEVALUE
+             
+timeseries_mesh_odv_data = select /*+ parallel(timevalue,10) */ \
+        SI.NAME CRUISE, \
+        m.MESHID || '-' || MEDIAN.MESHPOINT.IPOSITION || '-' || MEDIAN.MESHPOINT.JPOSITION STATION, \
+        '*' TYPE, \
+        ST_ASTEXT(SHAPE), \
+        0 BOTDEPTH, \
+        (((ML.UPPERZLOCATION + ML.LOWERZLOCATION) / 2)*-1) DEPTH, \
+        msv.TIMEVALUE, \
+        msv.DATAVALUE , \
+        msv.PARAMETERID PARAMETER \
+    from MEDIAN.MESHSCALARVALUE msv , \
+         MEDIAN.MESHPOINT, \
+         MEDIAN.MESH m, \
+         MEDIAN.SOURCEINFO SI, \
+         MEDIAN.MESHLAYER ML \
+    where (m.OBJECTID = ? AND \
+           msv.PARTID >= m.PARTIDMIN AND \
+           msv.PARTID <= m.PARTIDMAX ) AND \
+          m.SOURCEID = SI.SOURCEID AND \
+          ML.MESHID = MEDIAN.MESHPOINT.MESHID AND \
+          ML.KPOSITION = MEDIAN.MESHPOINT.KPOSITION AND \
+          msv.FEATUREID in ( ? ) AND \
+          msv.PARAMETERID in (? ) AND \
+          MEDIAN.MESHPOINT.FEATUREID in ( ? ) AND \
+          msv.TIMEVALUE >= ? AND \
+          msv.TIMEVALUE <= ? \
+    order by MEDIAN.MESHPOINT.FEATUREID, \
+             msv.FEATUREID, \
+             msv.PARAMETERID, \
+             msv.TIMEVALUE
+
+
+#############################################
+#############################################
+##########   Vertikalprofil    ##############
+#############################################
+#############################################
+
+verticalprofile_point=SELECT DISTINCT \
+           tsp.FEATUREID KEY, \
+           tsp.NAME VALUE \
+    FROM MEDIAN.TIMESERIESPOINT tsp, \
+           MEDIAN.MEASUREMENT mmt \
+    WHERE tsp.FEATUREID =  mmt.FEATUREID AND \
+           mmt.SOURCEID = ? \
+    order by tsp.name
+
+verticalprofile_parameter=SELECT DISTINCT \
+           p.PARAMETERID KEY, \
+           p.GERMANNAME VALUE \
+    from MEDIAN.PARAMETER p, \
+           MEDIAN.TIMESERIES ts, \
+           MEDIAN.TIMESERIESVALUE tsv, \
+           MEDIAN.MEASUREMENT m \
+    where ts.PARAMETERID = p.PARAMETERID and \
+          ts.TIMESERIESID = tsv.TIMESERIESID and \
+          m.MEASUREMENTID = tsv.MEASUREMENTID and \
+          m.FEATUREID = ? \
+    ORDER BY p.GERMANNAME
+    
+verticalprofile_minmaxdepth= SELECT min(M.ZLOCATION) MIN, \
+           max(M.ZLOCATION) MAX \
+    FROM MEDIAN.MEASUREMENT M, \
+         MEDIAN.TIMESERIES TS, \
+         MEDIAN.TIMESERIESVALUE TSV \
+    WHERE TS.TIMESERIESID = TSV.TIMESERIESID and \
+          M.MEASUREMENTID = TSV.MEASUREMENTID and \
+          M.FEATUREID = ? and \
+          TS.PARAMETERID IN ( ? )
+          
+verticalprofile_date=select distinct \
+           tsv.TIMEVALUE KEY, \
+           tsv.TIMEVALUE VALUE \
+    from MEDIAN.TIMESERIES ts , \
+         MEDIAN.TIMESERIESVALUE tsv, \
+         MEDIAN.MEASUREMENT m \
+    where ts.TIMESERIESID = tsv.TIMESERIESID and \
+          m.MEASUREMENTID = tsv.MEASUREMENTID and \
+          m.FEATUREID = ? and \
+          ts.PARAMETERID IN ( ? ) \
+    order by tsv.TIMEVALUE 
+
+verticalprofile_chart_data= SELECT M.ZLOCATION XORDINATE, \
+           TSV.DATAVALUE YORDINATE, \
+           TS.PARAMETERID GROUP1, \
+           TSV.TIMEVALUE GROUP2, \
+           1 GROUP3 \
+    from MEDIAN.TIMESERIES TS, \
+         MEDIAN.TIMESERIESVALUE TSV, \
+         MEDIAN.MEASUREMENT M \
+    where TS.TIMESERIESID = TSV.TIMESERIESID AND \
+          M.MEASUREMENTID = TSV.MEASUREMENTID AND \
+          M.FEATUREID = ? AND \
+          TS.PARAMETERID IN ( ? ) AND \
+          TSV.TIMEVALUE IN (?) AND \
+          M.ZLOCATION >= ? AND \
+          M.ZLOCATION <= ? \
+    ORDER BY TSV.TIMEVALUE , \
+             TSV.TIMESERIESID , \
+             TS.PARAMETERID , \
+             TSV.TIMEVALUE
+             
+verticalprofile_odv_data = SELECT SI.NAME CRUISE, \
+            MEDIAN.TIMESERIESPOINT.NAME STATION, \
+            '*' TYPE, \
+            ST_ASTEXT(SHAPE), \
+            0 BOTDEPTH, \
+            (M.ZLOCATION *-1) DEPTH, \
+            TSV.TIMEVALUE, \
+            TSV.DATAVALUE, \
+            TS.PARAMETERID PARAMETER, \
+            TSV.MEASUREMENTID, \
+            TSV.TIMESERIESID \
+     FROM MEDIAN.TIMESERIESPOINT , \
+          MEDIAN.TIMESERIESVALUE TSV, \
+          MEDIAN.TIMESERIES TS, \
+          MEDIAN.MEASUREMENT M, \
+          MEDIAN.SOURCEINFO SI \
+     WHERE SI.SOURCEID = M.SOURCEID AND \
+           M.FEATUREID = MEDIAN.TIMESERIESPOINT.FEATUREID AND \
+           M.MEASUREMENTID = TSV.MEASUREMENTID AND \
+           TSV.TIMESERIESID = TS.TIMESERIESID AND \
+           M.FEATUREID = ? AND \
+           TS.PARAMETERID IN ( ? ) AND \
+           TSV.TIMEVALUE IN (?) AND \
+           M.ZLOCATION >= ? AND \
+           M.ZLOCATION <= ? \
+     ORDER BY TSV.MEASUREMENTID , \
+              TSV.TIMESERIESID , \
+              TS.PARAMETERID , \
+              TSV.TIMEVALUE
+             
+#############################################
+#############################################
+########## Vertikalprofil Mesh ##############
+#############################################
+#############################################
+
+verticalprofile_mesh = SELECT OBJECTID KEY, \
+        m.NAME VALUE \
+    FROM MEDIAN.MESH m \
+    WHERE SOURCEID IN (?) \
+    order by m.NAME
+    
+verticalprofile_mesh_with_area = SELECT M.OBJECTID KEY, \
+         M.NAME VALUE \
+     FROM MEDIAN.MESHPOINT, \
+          MEDIAN.MESH M \
+     WHERE M.SOURCEID IN (?) AND \
+           M.MESHID = MEDIAN.MESHPOINT.MESHID AND \
+           INTERSECTS(SHAPE, \
+                      (SELECT st_astext(SHAPE) \
+                       FROM MEDIAN.FEATUREAREA \
+                       WHERE (FEATURETYPE = 7 OR FEATURETYPE = 8) AND \
+                              FEATURECODE = ? )\
+                      ) \
+     order by M.NAME
+    
+verticalprofile_mesh_point = SELECT FEATUREID, \
+        ST_ASTEXT(SHAPE) \
+    FROM MEDIAN.MESHPOINT \
+    WHERE MESHID  in \
+        (SELECT DISTINCT MESHID \
+         FROM MEDIAN.MESH \
+         WHERE OBJECTID = ?) AND \
+         KPOSITION = 1 AND \
+         INTERSECTS(SHAPE,"?")
+          
+verticalprofile_mesh_mindepth = SELECT MP.KPOSITION KEY, \
+        'Layer ' || ML.KPOSITION || ': ' || -ML.UPPERZLOCATION || ' - '|| -ML.LOWERZLOCATION VALUE \
+    from MEDIAN.MESHLAYER ML, \
+         MEDIAN.MESHPOINT MP, \
+         MEDIAN.MESH M \
+    WHERE ML.KPOSITION = MP.KPOSITION AND \
+          ML.MESHID = MP.MESHID AND \
+          M.OBJECTID = ? AND \
+          MP.MESHID = M.MESHID  AND \
+          IPOSITION = (select IPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) AND \
+          JPOSITION = (select JPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) \
+    ORDER BY ML.UPPERZLOCATION DESC
+
+verticalprofile_mesh_maxdepth = SELECT MP.KPOSITION KEY, \
+        'Layer ' || ML.KPOSITION || ': ' || -ML.UPPERZLOCATION || ' - '|| -ML.LOWERZLOCATION VALUE \
+    from MEDIAN.MESHLAYER ML, \
+         MEDIAN.MESHPOINT MP, \
+         MEDIAN.MESH M \
+    WHERE ML.KPOSITION = MP.KPOSITION AND \
+          ML.MESHID = MP.MESHID AND \
+          M.OBJECTID = ? AND \
+          MP.MESHID = M.MESHID  AND \
+          IPOSITION = (select IPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) AND \
+          JPOSITION = (select JPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) AND \
+          MP.KPOSITION < ? \
+    ORDER BY ML.UPPERZLOCATION DESC
+    
+verticalprofile_mesh_parameter=SELECT distinct \
+        p.PARAMETERID KEY , \
+        p.GERMANNAME VALUE \
+    from MEDIAN.PARAMETER p, \
+         MEDIAN.MESHSCALARVALUE msc, \
+         MEDIAN.MESH m  \
+    where m.OBJECTID = ? AND \
+          m.PARTIDMIN = msc.PARTID AND \
+          msc.PARAMETERID = p.PARAMETERID \
+    order by p.GERMANNAME
+          
+verticalprofile_mesh_date= select  distinct \
+        msv.TIMEVALUE KEY, \
+        msv.TIMEVALUE VALUE \
+    from MEDIAN.MESHSCALARVALUE msv , \
+         MEDIAN.MESH m \
+    where m.OBJECTID = ?  AND \
+          msv.PARTID >= m.PARTIDMIN AND \
+          msv.PARTID <= m.PARTIDMAX AND \
+          msv.PARAMETERID in (?) \
+    order by msv.TIMEVALUE
+
+verticalprofile_mesh_chart_data=select ml.UPPERZLOCATION XORDINATE, \
+           msv.DATAVALUE YORDINATE, \
+           msv.PARAMETERID GROUP1, \
+           msv.TIMEVALUE GROUP2, \
+           1 GROUP3 \
+    from MEDIAN.MESHLAYER ml, \
+         MEDIAN.MESHPOINT mp, \
+         MEDIAN.MESH m, \
+         MEDIAN.MESHSCALARVALUE msv \
+    where msv.FEATUREID = mp. FEATUREID AND \
+          ml.KPOSITION = mp.KPOSITION and \
+          ml.MESHID = mp.MESHID and \
+          m.MESHID = mp.MESHID AND \
+          m.PARTIDMIN <= msv.PARTID AND \
+          m.PARTIDMAX >= msv.PARTID AND \
+          msv.PARAMETERID in (?) AND \
+          msv.TIMEVALUE in (?) AND \
+          m.OBJECTID = ? AND \
+          mp.FEATUREID in \
+            ( select FEATUREID \
+              from MEDIAN.MESHPOINT mp, \
+                   MEDIAN.MESH m \
+              where m.OBJECTID = ? AND \
+                    mp.MESHID = m.MESHID  AND \
+                    IPOSITION = (select IPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) and \
+                    JPOSITION = (select JPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?)) AND \
+          mp.KPOSITION <= ? AND \
+          mp.KPOSITION >= ? \
+   order by msv.PARAMETERID, \
+            msv.TIMEVALUE, \
+            ml.UPPERZLOCATION
+            
+verticalprofile_mesh_odv_data=select SI.NAME CRUISE, \
+        m.MESHID || '-' || MEDIAN.MESHPOINT.IPOSITION || '-' || MEDIAN.MESHPOINT.JPOSITION STATION, \
+        '*' TYPE, \
+        ST_ASTEXT(SHAPE), \
+        0 BOTDEPTH, \
+        (((ML.UPPERZLOCATION + ML.LOWERZLOCATION) / 2)*-1) DEPTH, \
+        msv.DATAVALUE , \
+        msv.PARAMETERID PARAMETER, \
+        msv.TIMEVALUE , \
+    from MEDIAN.MESHLAYER ml, \
+         MEDIAN.MESHPOINT, \
+         MEDIAN.MESH m, \
+         MEDIAN.MESHSCALARVALUE msv, \
+         MEDIAN.SOURCEINFO SI \
+    where m.SOURCEID = SI.SOURCEID AND \
+          msv.FEATUREID = MEDIAN.MESHPOINT. FEATUREID AND \
+          ml.KPOSITION = MEDIAN.MESHPOINT.KPOSITION and \
+          ml.MESHID = MEDIAN.MESHPOINT.MESHID and \
+          m.MESHID = MEDIAN.MESHPOINT.MESHID AND \
+          m.PARTIDMIN <= msv.PARTID AND \
+          m.PARTIDMAX >= msv.PARTID AND \
+          msv.PARAMETERID in (?) AND \
+          msv.TIMEVALUE in (?) AND \
+          m.OBJECTID = ? AND \
+          MEDIAN.MESHPOINT.FEATUREID in \
+                          ( select FEATUREID \
+                            from MEDIAN.MESHPOINT mp, \
+                                 MEDIAN.MESH m \
+                             where m.OBJECTID = ? AND \
+                                   mp.MESHID = m.MESHID  AND \
+                                  IPOSITION = (select IPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) and \
+                                  JPOSITION = (select JPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?)) AND \
+          MEDIAN.MESHPOINT.KPOSITION <= ? AND \
+          MEDIAN.MESHPOINT.KPOSITION >= ? \
+    order by msv.PARAMETERID, \
+             msv.TIMEVALUE, \
+             ml.UPPERZLOCATION
+            
+#############################################
+#############################################
+##### Vertikalprofil InstantaneousPoint #####
+#############################################
+#############################################
+
+verticalprofile_instantaneouspoint_series = SELECT DISTINCT \
+        S.SERIESID KEY , \
+        S.DESCRIPTION VALUE \
+    FROM MEDIAN.SERIES S, \
+         MEDIAN.INSTANTANEOUSPOINT I, \
+         MEDIAN.MEASUREMENT M \
+    WHERE S.SERIESID = I.SERIESID AND \
+          I.POINTSPEC = 4 AND \
+          I.FEATUREID = M.FEATUREID AND \
+          M.SOURCEID= ? \
+    ORDER BY S.DESCRIPTION
+    
+verticalprofile_instantaneouspoint_point = SELECT \
+        MEDIAN.INSTANTANEOUSPOINT.FEATUREID, \
+        to_char(MEDIAN.INSTANTANEOUSPOINT.TIMEVALUE,'DD.MM.YYYY HH24:MI') VALUE, \
+        MEDIAN.INSTANTANEOUSPOINT.TIMEVALUE, \
+         ST_ASTEXT(SHAPE) \
+    FROM MEDIAN.INSTANTANEOUSPOINT, \
+         MEDIAN.MEASUREMENT M \
+    WHERE MEDIAN.INSTANTANEOUSPOINT.SERIESID = ? AND \
+          MEDIAN.INSTANTANEOUSPOINT.POINTSPEC = 4 AND \
+          MEDIAN.INSTANTANEOUSPOINT.FEATUREID = M.FEATUREID AND \
+          M.SOURCEID = ? \
+    ORDER BY MEDIAN.INSTANTANEOUSPOINT.FEATUREID, \
+             MEDIAN.INSTANTANEOUSPOINT.TIMEVALUE
+
+verticalprofile_instantaneouspoint_parameter = SELECT DISTINCT \
+        P.PARAMETERID KEY , \
+        P.GERMANNAME VALUE \
+    FROM MEDIAN.PARAMETER P, \
+         MEDIAN.INSTANTANEOUSPOINT IP, \
+         MEDIAN.MEASUREMENT M, \
+         MEDIAN.MEASUREDSCALARVALUE MSV \
+    WHERE IP.FEATUREID = M.FEATUREID AND \
+          M.MEASUREMENTID = MSV.MEASUREMENTID AND \
+          MSV.PARAMETERID = P.PARAMETERID AND \
+          IP.FEATUREID = ? \
+    ORDER BY P.GERMANNAME
+    
+verticalprofile_instantaneouspoint_minmaxdepth = SELECT min(M.ZLOCATION) MIN, \
+        max(M.ZLOCATION) MAX  \
+    FROM MEDIAN.INSTANTANEOUSPOINT IP, \
+         MEDIAN.MEASUREMENT M, \
+         MEDIAN.MEASUREDSCALARVALUE MSV \
+    WHERE IP.FEATUREID = M.FEATUREID AND \
+          M.MEASUREMENTID = MSV.MEASUREMENTID AND \
+          IP.FEATUREID = ? AND \
+          MSV.PARAMETERID in (?)
+          
+verticalprofile_instantaneouspoint_chart_data = SELECT M.ZLOCATION XORDINATE, \
+        MSV.DATAVALUE  YORDINATE, \
+        MSV.PARAMETERID GROUP1, \
+        IP.TIMEVALUE GROUP2, \
+        1 GROUP3 \
+    FROM MEDIAN.INSTANTANEOUSPOINT IP, \
+         MEDIAN.MEASUREMENT M, \
+         MEDIAN.MEASUREDSCALARVALUE MSV \
+    WHERE IP.FEATUREID = M.FEATUREID AND \
+          M.MEASUREMENTID = MSV.MEASUREMENTID AND \
+          IP.FEATUREID = ? AND \
+          MSV.PARAMETERID in (?) AND \
+          M.ZLOCATION >= ? AND \
+          M.ZLOCATION <= ? \
+    ORDER BY IP.TIMEVALUE, \
+          MSV.PARAMETERID, \
+          M.ZLOCATION
+          
+verticalprofile_instantaneouspoint_odv_data = SELECT S.DESCRIPTION CRUISE, \
+        MEDIAN.INSTANTANEOUSPOINT.FEATUREID STATION, \
+        '*' TYPE, \
+        ST_ASTEXT(SHAPE), \
+        0 BOTDEPTH, \
+        (M.ZLOCATION * -1) DEPTH, \
+        MSV.DATAVALUE, \
+        MSV.PARAMETERID PARAMETER, \
+        MEDIAN.INSTANTANEOUSPOINT.TIMEVALUE \
+    FROM MEDIAN.SERIES S, \
+         MEDIAN.INSTANTANEOUSPOINT, \
+         MEDIAN.MEASUREMENT M, \
+         MEDIAN.MEASUREDSCALARVALUE MSV \
+    WHERE S.SERIESID = MEDIAN.INSTANTANEOUSPOINT.SERIESID AND \
+          MEDIAN.INSTANTANEOUSPOINT.FEATUREID = M.FEATUREID AND \
+          M.MEASUREMENTID = MSV.MEASUREMENTID AND \
+          MEDIAN.INSTANTANEOUSPOINT.FEATUREID = ? AND \
+          MSV.PARAMETERID in (?) AND \
+          M.ZLOCATION >= ? AND \
+          M.ZLOCATION <= ? \
+    ORDER BY MEDIAN.INSTANTANEOUSPOINT.TIMEVALUE, \
+          MSV.PARAMETERID, \
+          M.ZLOCATION
+          
+#############################################
+#############################################
+#### Horizontalprofil InstantaneousPoint ####
+#############################################
+#############################################
+horizontalprofile_instantaneouspoint_vehicle = SELECT DISTINCT \
+        V.VEHICLEID KEY, \
+        V.NAME VALUE \
+    FROM MEDIAN.VEHICLE V, \
+         MEDIAN.CRUISE C, \
+         MEDIAN.TRACK T, \
+         MEDIAN.SURVEYINFO S, \
+         MEDIAN.INSTANTANEOUSPOINT I, \
+         MEDIAN.MEASUREMENT M \
+    WHERE V.VEHICLEID = C.VEHICLEID AND \
+          C.CRUISEID = T.CRUISEID AND \
+          T.TRACKID = S.TRACKID AND \
+          S.SURVEYID  = I.SURVEYID AND \
+          I.FEATUREID =  M.FEATUREID AND \
+          M.SOURCEID = ? \
+    ORDER BY V.NAME
+horizontalprofile_instantaneouspoint_cruise = SELECT DISTINCT \
+        C.CRUISEID KEY , \
+        V.NAME || ' ' || \
+        C.NAME || ' ' || \
+        TO_CHAR(C.STARTDATE,'DD.MM.YYYY') || ' - ' || \
+        TO_CHAR(C.ENDDATE,'DD.MM.YYYY') VALUE , \
+        V.NAME , \
+        C.NAME \
+     FROM MEDIAN.CRUISE C, \
+         MEDIAN.VEHICLE V, \
+         MEDIAN.TRACK T, \
+         MEDIAN.SURVEYINFO S, \
+         MEDIAN.INSTANTANEOUSPOINT I, \
+         MEDIAN.MEASUREMENT M \
+    WHERE C.VEHICLEID = V.VEHICLEID AND \
+          C.CRUISEID = T.CRUISEID AND \
+          T.TRACKID = S.TRACKID AND \
+          S.SURVEYID  = I.SURVEYID AND \
+          I.FEATUREID =  M.FEATUREID AND \
+          C.VEHICLEID  = ? AND \
+          M.SOURCEID = ? \
+    ORDER BY V.NAME, C.NAME
+horizontalprofile_instantaneouspoint_track= SELECT \
+        T.TRACKID KEY , \
+        to_char(T.STARTDATE,'DD.MM.YYYY HH24:MI') || ' - '|| to_char(T.ENDDATE,'DD.MM.YYYY HH24:MI') || ' - '|| T.NAME VALUE \
+    FROM MEDIAN.TRACK T \
+    WHERE T.CRUISEID = ? \
+    ORDER BY T.STARTDATE, \
+             T.ENDDATE, \
+             T.NAME
+horizontalprofile_instantaneouspoint_surveyinfo = SELECT \
+        SURVEYID KEY , \
+        to_char(STARTDATE,'DD.MM.YYYY HH24:MI') || ' - '|| to_char(ENDDATE,'DD.MM.YYYY HH24:MI') || ' - '|| DESCRIPTION VALUE \
+    FROM MEDIAN.SURVEYINFO \
+    WHERE TRACKID = ? \
+    ORDER BY STARTDATE, \
+             ENDDATE, \
+             DESCRIPTION
+horizontalprofile_instantaneouspoint_parameter = SELECT DISTINCT \
+        P.PARAMETERID KEY , \
+        P.GERMANNAME VALUE \
+    FROM MEDIAN.PARAMETER P , \
+         MEDIAN.MEASUREMENT M , \
+         MEDIAN.INSTANTANEOUSPOINT IP , \
+         MEDIAN.MEASUREDSCALARVALUE MSV \
+    WHERE P.PARAMETERID = MSV.PARAMETERID AND \
+          MSV.MEASUREMENTID = M.MEASUREMENTID AND \
+          M.FEATUREID = IP.FEATUREID AND \
+          IP.SURVEYID = ? \
+    ORDER BY P.GERMANNAME
+horizontalprofile_instantaneouspoint_depth = SELECT DISTINCT \
+        M.ZLOCATION KEY, \
+        M.ZLOCATION VALUE \
+    FROM MEDIAN.MEASUREMENT M , \
+         MEDIAN.INSTANTANEOUSPOINT IP \
+    WHERE M.FEATUREID = IP.FEATUREID AND \
+          IP.SURVEYID = ? \
+    ORDER BY M.ZLOCATION
+horizontalprofile_instantaneouspoint_chart_data = SELECT ST_ASTEXT(SHAPE) , \
+        MEDIAN.INSTANTANEOUSPOINT.TIMEVALUE TIME , \
+        MSV.DATAVALUE  YORDINATE , \
+        MSV.PARAMETERID GROUP1 , \
+        ZLOCATION GROUP2 , \
+        1 GROUP3 \
+    FROM MEDIAN.INSTANTANEOUSPOINT, \
+         MEDIAN.MEASUREMENT M, \
+         MEDIAN.MEASUREDSCALARVALUE MSV \
+    WHERE MEDIAN.INSTANTANEOUSPOINT.FEATUREID = M.FEATUREID AND \
+          M.MEASUREMENTID = MSV.MEASUREMENTID AND \
+          MEDIAN.INSTANTANEOUSPOINT.SURVEYID = ? AND \
+          M.ZLOCATION IN (?) AND \
+          MSV.PARAMETERID in (?) \
+    ORDER BY MSV.PARAMETERID, \
+             M.ZLOCATION, \
+             MEDIAN.INSTANTANEOUSPOINT.TIMEVALUE
+horizontalprofile_instantaneouspoint_odv_data = SELECT V.NAME || ' ' || C.NAME  CRUISE, \
+        MEDIAN.InstantaneousPoint.FEATUREID STATION, \
+        '*' TYPE, \
+        0 BOTDEPTH, \
+        (M.ZLOCATION * -1) DEPTH , \
+        ST_ASTEXT(SHAPE) , \
+        MEDIAN.INSTANTANEOUSPOINT.TIMEVALUE, \
+        MSV.DATAVALUE, \
+        MSV.PARAMETERID PARAMETER \
+    FROM MEDIAN.INSTANTANEOUSPOINT, \
+         MEDIAN.VEHICLE V, \
+         MEDIAN.CRUISE C, \
+         (SELECT TRACKID,CRUISEID FROM MEDIAN.TRACK) T, \
+         MEDIAN.SURVEYINFO S, \
+         MEDIAN.MEASUREMENT M, \
+         MEDIAN.MEASUREDSCALARVALUE MSV \
+    WHERE V.VEHICLEID = C.VEHICLEID AND \
+          C.CRUISEID = T.CRUISEID AND \
+          T.TRACKID = S.TRACKID AND \
+          S.SURVEYID = MEDIAN.INSTANTANEOUSPOINT.SURVEYID AND \
+          MEDIAN.INSTANTANEOUSPOINT.FEATUREID = M.FEATUREID AND \
+          M.MEASUREMENTID = MSV.MEASUREMENTID AND \
+          MEDIAN.INSTANTANEOUSPOINT.SURVEYID = ? AND \
+          M.ZLOCATION IN (?) AND \
+          MSV.PARAMETERID in (?) \
+    ORDER BY MSV.PARAMETERID, \
+             M.ZLOCATION, \
+             MEDIAN.INSTANTANEOUSPOINT.TIMEVALUE
+             
+#############################################
+#############################################
+########### Horizontalprofil MESH ###########
+#############################################
+#############################################
+horizontalprofile_meshpoint_depth = SELECT DISTINCT \
+         mp.KPOSITION KEY, \
+        'Layer ' || ml.KPOSITION || ': ' || -ml.UPPERZLOCATION || ' - '|| -ml.LOWERZLOCATION VALUE \
+    from MEDIAN.MESHLAYER ml, \
+         MEDIAN.MESHPOINT mp \
+    where ml.KPOSITION = mp.KPOSITION and \
+          ml.MESHID = mp.MESHID and \
+          mp.FEATUREID in \
+    ( select FEATUREID \
+      from MEDIAN.MESHPOINT mp, \
+           MEDIAN.MESH m \
+      where m.OBJECTID = ? AND \
+            mp.MESHID = m.MESHID  AND \
+            IPOSITION = (select IPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) and \
+            JPOSITION = (select JPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?)) \
+    order by mp.KPOSITION
+    
+horizontalprofile_mesh_chart_data =  SELECT ST_ASTEXT(SHAPE), \
+           msv.DATAVALUE YORDINATE, \
+           msv.PARAMETERID GROUP1, \
+           MEDIAN.MESHPOINT.KPOSITION GROUP2, \
+           msv.TIMEVALUE GROUP3, \
+           MEDIAN.MESHPOINT.JPOSITION , \
+           MEDIAN.MESHPOINT.IPOSITION \
+    from MEDIAN.MESHLAYER ml, \
+         MEDIAN.MESHPOINT , \
+         MEDIAN.MESH m, \
+         MEDIAN.MESHSCALARVALUE msv \
+    where msv.FEATUREID = MEDIAN.MESHPOINT. FEATUREID AND \
+          ml.KPOSITION = MEDIAN.MESHPOINT.KPOSITION and \
+          ml.MESHID = MEDIAN.MESHPOINT.MESHID and \
+          m.MESHID = MEDIAN.MESHPOINT.MESHID AND \
+          m.PARTIDMIN <= msv.PARTID AND \
+          m.PARTIDMAX >= msv.PARTID AND \
+          msv.PARAMETERID in (?) AND \
+          msv.TIMEVALUE in (?) AND \
+          m.OBJECTID = ? AND \
+          MEDIAN.MESHPOINT.FEATUREID in \
+            ( select FEATUREID \
+              from MEDIAN.MESHPOINT mp, \
+                   MEDIAN.MESH m \
+              where m.OBJECTID = ? AND \
+                    mp.MESHID = m.MESHID  AND \
+                    KPOSITION in ( ? ) and \
+                    ? = (select ? from MEDIAN.MESHPOINT where FEATUREID = ?)) \
+   order by msv.TIMEVALUE, \
+            MEDIAN.MESHPOINT.KPOSITION, \
+            msv.PARAMETERID, \
+            MEDIAN.MESHPOINT.JPOSITION , \
+            MEDIAN.MESHPOINT.IPOSITION
+            
+horizontalprofile_mesh_odv_data =  SELECT SI.NAME CRUISE, \
+          m.MESHID || '-' || MEDIAN.MESHPOINT.IPOSITION || '-' || MEDIAN.MESHPOINT.JPOSITION STATION, \
+          '*' TYPE, \
+          ST_ASTEXT(SHAPE), \
+          0 BOTDEPTH, \
+          (((ML.UPPERZLOCATION + ML.LOWERZLOCATION) / 2)*-1) DEPTH, \
+          msv.DATAVALUE , \
+          msv.PARAMETERID PARAMETER, \
+          msv.TIMEVALUE, \
+          MEDIAN.MESHPOINT.JPOSITION , \
+          MEDIAN.MESHPOINT.IPOSITION \
+    from MEDIAN.MESHLAYER ml, \
+         MEDIAN.MESHPOINT , \
+         MEDIAN.MESH m, \
+         MEDIAN.MESHSCALARVALUE msv, \
+         MEDIAN.SOURCEINFO SI \
+    where msv.FEATUREID = MEDIAN.MESHPOINT. FEATUREID AND \
+          ml.KPOSITION = MEDIAN.MESHPOINT.KPOSITION and \
+          ml.MESHID = MEDIAN.MESHPOINT.MESHID and \
+          m.MESHID = MEDIAN.MESHPOINT.MESHID AND \
+          m.SOURCEID = SI.SOURCEID AND \
+          m.PARTIDMIN <= msv.PARTID AND \
+          m.PARTIDMAX >= msv.PARTID AND \
+          msv.PARAMETERID in (?) AND \
+          msv.TIMEVALUE in (?) AND \
+          m.OBJECTID = ? AND \
+          MEDIAN.MESHPOINT.FEATUREID in \
+            ( select FEATUREID \
+              from MEDIAN.MESHPOINT mp, \
+                   MEDIAN.MESH m \
+              where m.OBJECTID = ? AND \
+                    mp.MESHID = m.MESHID  AND \
+                    KPOSITION in ( ? ) and \
+                    ? = (select ? from MEDIAN.MESHPOINT where FEATUREID = ?)) \
+   order by msv.TIMEVALUE, \
+            MEDIAN.MESHPOINT.KPOSITION, \
+            msv.PARAMETERID, \
+            MEDIAN.MESHPOINT.JPOSITION , \
+            MEDIAN.MESHPOINT.IPOSITION
+             
+             
+#############################################
+#############################################
+############# Profilschnitt MESH ############
+#############################################
+#############################################
+verticalcrosssection_mesh_date = select  distinct \
+        msv.TIMEVALUE KEY, \
+        msv.TIMEVALUE VALUE \
+    from MEDIAN.MESHSCALARVALUE msv , \
+         MEDIAN.MESH m \
+    where m.OBJECTID = ?  AND \
+          msv.PARTID >= m.PARTIDMIN AND \
+          msv.PARTID <= m.PARTIDMAX AND \
+          msv.PARAMETERID = ? \
+    order by msv.TIMEVALUE
+verticalcrosssection_mesh_chart_data = SELECT ST_ASTEXT(SHAPE), \
+           msv.DATAVALUE YORDINATE, \
+           msv.PARAMETERID GROUP1, \
+           msv.TIMEVALUE GROUP2, \
+           MEDIAN.MESHPOINT.JPOSITION, \
+           MEDIAN.MESHPOINT.IPOSITION, \
+           MEDIAN.MESHPOINT.KPOSITION \
+    from MEDIAN.MESHLAYER ml, \
+         MEDIAN.MESHPOINT , \
+         MEDIAN.MESH m, \
+         MEDIAN.MESHSCALARVALUE msv \
+    where msv.FEATUREID = MEDIAN.MESHPOINT. FEATUREID AND \
+          ml.KPOSITION = MEDIAN.MESHPOINT.KPOSITION and \
+          ml.MESHID = MEDIAN.MESHPOINT.MESHID and \
+          m.MESHID = MEDIAN.MESHPOINT.MESHID AND \
+          m.PARTIDMIN <= msv.PARTID AND \
+          m.PARTIDMAX >= msv.PARTID AND \
+          msv.PARAMETERID = ? AND \
+          msv.TIMEVALUE = ? AND \
+          m.OBJECTID = ? AND \
+          MEDIAN.MESHPOINT.FEATUREID in \
+            ( select FEATUREID \
+              from MEDIAN.MESHPOINT mp, \
+                   MEDIAN.MESH m \
+              where m.OBJECTID = ? AND \
+                    mp.MESHID = m.MESHID  AND \
+                    ? = (select ? from MEDIAN.MESHPOINT where FEATUREID = ?)) \
+    order by msv.TIMEVALUE, \
+             msv.PARAMETERID, \
+             MEDIAN.MESHPOINT.JPOSITION , \
+             MEDIAN.MESHPOINT.IPOSITION, \
+             MEDIAN.MESHPOINT.KPOSITION
+             
+verticalcrosssection_mesh_odv_data = SELECT SI.NAME CRUISE, \
+            M.MESHID || '-' || MEDIAN.MESHPOINT.IPOSITION || '-' || MEDIAN.MESHPOINT.JPOSITION STATION, \
+           '*' TYPE, \
+           ST_ASTEXT(SHAPE), \
+           0 BOTDEPTH, \
+           (((ML.UPPERZLOCATION + ML.LOWERZLOCATION) / 2)*-1) DEPTH, \
+           MSV.TIMEVALUE, \
+           MSV.DATAVALUE , \
+           MSV.PARAMETERID PARAMETER, \
+           MEDIAN.MESHPOINT.JPOSITION, \
+           MEDIAN.MESHPOINT.IPOSITION, \
+           MEDIAN.MESHPOINT.KPOSITION \
+    from MEDIAN.MESHLAYER ml, \
+         MEDIAN.MESHPOINT , \
+         MEDIAN.MESH m, \
+         MEDIAN.SOURCEINFO SI, \
+         MEDIAN.MESHSCALARVALUE msv \
+    where msv.FEATUREID = MEDIAN.MESHPOINT. FEATUREID AND \
+          ml.KPOSITION = MEDIAN.MESHPOINT.KPOSITION and \
+          ml.MESHID = MEDIAN.MESHPOINT.MESHID and \
+          m.MESHID = MEDIAN.MESHPOINT.MESHID AND \
+          m.PARTIDMIN <= msv.PARTID AND \
+          m.PARTIDMAX >= msv.PARTID AND \
+          M.SOURCEID = SI.SOURCEID AND \
+          msv.PARAMETERID = ? AND \
+          msv.TIMEVALUE = ? AND \
+          m.OBJECTID = ? AND \
+          MEDIAN.MESHPOINT.FEATUREID in \
+            ( select FEATUREID \
+              from MEDIAN.MESHPOINT mp, \
+                   MEDIAN.MESH m \
+              where m.OBJECTID = ? AND \
+                    mp.MESHID = m.MESHID  AND \
+                    ? = (select ? from MEDIAN.MESHPOINT where FEATUREID = ?)) \
+    order by msv.TIMEVALUE, \
+             msv.PARAMETERID, \
+             MEDIAN.MESHPOINT.JPOSITION , \
+             MEDIAN.MESHPOINT.IPOSITION, \
+             MEDIAN.MESHPOINT.KPOSITION
+             
+#############################################
+#############################################
+########## Horizontalschnitt MESH ###########
+#############################################
+#############################################
+horizontalcrosssection_meshpoint_depth = SELECT DISTINCT MP.KPOSITION KEY, \
+        'Layer ' || ML.KPOSITION || ': ' || -ML.UPPERZLOCATION || ' - '|| -ML.LOWERZLOCATION VALUE \
+    from MEDIAN.MESHLAYER ML, \
+         MEDIAN.MESHPOINT MP, \
+         MEDIAN.MESH M \
+    WHERE ML.KPOSITION = MP.KPOSITION AND \
+          ML.MESHID = MP.MESHID AND \
+          M.OBJECTID = ? AND \
+          MP.MESHID = M.MESHID \
+    ORDER BY MP.KPOSITION
+    
+horizontalcrosssection_mesh_date = select  distinct \
+        msv.TIMEVALUE KEY, \
+        msv.TIMEVALUE VALUE \
+    from MEDIAN.MESHSCALARVALUE msv , \
+         MEDIAN.MESH m \
+    where m.OBJECTID = ?  AND \
+          msv.PARTID >= m.PARTIDMIN AND \
+          msv.PARTID <= m.PARTIDMAX AND \
+          msv.PARAMETERID = ? \
+    order by msv.TIMEVALUE
+    
+horizontalcrosssection_mesh_data = SELECT ST_ASTEXT(SHAPE), \
+           MSV.DATAVALUE YORDINATE, \
+           MEDIAN.MESHFACE.JPOSITION, \
+           MEDIAN.MESHFACE.IPOSITION, \
+           MEDIAN.MESHFACE.KPOSITION \
+    from MEDIAN.MESHLAYER ML, \
+         MEDIAN.MESHFACE, \
+         MEDIAN.MESH M, \
+         MEDIAN.MESHSCALARVALUE MSV \
+    where MSV.FEATUREID = MEDIAN.MESHFACE.FEATUREID AND \
+          ML.KPOSITION = MEDIAN.MESHFACE.KPOSITION and \
+          ML.MESHID = MEDIAN.MESHFACE.MESHID and \
+          M.MESHID = MEDIAN.MESHFACE.MESHID AND \
+          M.PARTIDMIN <= MSV.PARTID AND \
+          M.PARTIDMAX >= MSV.PARTID AND \
+          MSV.PARAMETERID = ? AND \
+          MSV.TIMEVALUE = ? AND \
+          M.OBJECTID = ? AND \
+          MEDIAN.MESHFACE.KPOSITION = ? \
+    order by MEDIAN.MESHFACE.JPOSITION , \
+             MEDIAN.MESHFACE.IPOSITION
+horizontalcrosssection_mesh_odv_data = SELECT SI.NAME CRUISE, \
+            M.MESHID || '-' || MEDIAN.MESHPOINT.IPOSITION || '-' || MEDIAN.MESHPOINT.JPOSITION STATION, \
+           '*' TYPE, \
+           ST_ASTEXT(SHAPE), \
+           0 BOTDEPTH, \
+           (((ML.UPPERZLOCATION + ML.LOWERZLOCATION) / 2)*-1) DEPTH, \
+           MSV.TIMEVALUE, \
+           MSV.DATAVALUE , \
+           MSV.PARAMETERID PARAMETER, \
+           MEDIAN.MESHPOINT.JPOSITION, \
+           MEDIAN.MESHPOINT.IPOSITION, \
+           MEDIAN.MESHPOINT.KPOSITION \
+    from MEDIAN.MESHLAYER ML, \
+         MEDIAN.MESHPOINT, \
+         MEDIAN.MESH M, \
+         MEDIAN.SOURCEINFO SI, \
+         MEDIAN.MESHSCALARVALUE MSV \
+    where MSV.FEATUREID = MEDIAN.MESHPOINT.FEATUREID AND \
+          ML.KPOSITION = MEDIAN.MESHPOINT.KPOSITION and \
+          ML.MESHID = MEDIAN.MESHPOINT.MESHID and \
+          M.MESHID = MEDIAN.MESHPOINT.MESHID AND \
+          M.PARTIDMIN <= MSV.PARTID AND \
+          M.PARTIDMAX >= MSV.PARTID AND \
+          M.SOURCEID = SI.SOURCEID AND \
+          MSV.PARAMETERID = ? AND \
+          MSV.TIMEVALUE = ? AND \
+          M.OBJECTID = ? AND \
+          MEDIAN.MESHPOINT.KPOSITION = ? \
+    order by MEDIAN.MESHPOINT.JPOSITION , \
+             MEDIAN.MESHPOINT.IPOSITION
+             
+area_filter = SELECT DISTINCT \
+       FEATUREID KEY ,\
+       DESCRIPTION VALUE \
+    FROM MEDIAN.FEATUREAREA \
+    WHERE (FEATURETYPE = 7 OR FEATURETYPE = 8) AND \
+          FEATUREID > 0 \
+    ORDER BY FEATUREID
+    
+subarea_filter = SELECT \
+       FEATURECODE KEY, \
+       NAME VALUE \
+    FROM MEDIAN.FEATUREAREA \
+    WHERE (FEATURETYPE = 7 OR FEATURETYPE = 8) AND \
+          FEATUREID = ? \
+    ORDER BY NAME
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/pom.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>de.intevation.bsh.artifacts</groupId>
+  <artifactId>gnv-artifacts</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <name>gnv-artifacts</name>
+  <url>http://maven.apache.org</url>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-eclipse-plugin</artifactId>
+        <version>2.5.1</version>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.0.2</version>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>de.intevation.bsh.artifact-database</groupId>
+      <artifactId>artifact-database</artifactId>
+      <version>1.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>de.intevation.bsh.geo-backend</groupId>
+      <artifactId>geo-backend</artifactId>
+      <version>1.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>[1.2,)</version>
+    </dependency>
+    <dependency>
+      <groupId>jfree</groupId>
+      <artifactId>jfreechart</artifactId>
+      <version>1.0.7</version>
+    </dependency>
+    <dependency>
+      <groupId>net.sf.opencsv</groupId>
+      <artifactId>opencsv</artifactId>
+      <version>2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-math</groupId>
+      <artifactId>commons-math</artifactId>
+      <version>1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>net.sf.ehcache</groupId>
+      <artifactId>ehcache</artifactId>
+      <version>1.6.2</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-validator</groupId>
+      <artifactId>commons-validator</artifactId>
+      <version>1.3.1</version>
+    </dependency>
+    <dependency>
+      <groupId>oro</groupId>
+      <artifactId>oro</artifactId>
+      <version>2.0.8</version>
+    </dependency>
+  <dependency>
+      <groupId>com.vividsolutions</groupId>
+      <artifactId>jts</artifactId>
+      <version>1.9</version>
+    </dependency>
+  </dependencies>
+  <repositories>
+    <repository>
+      <id>gt2.repo</id>
+      <name>GeoTools2 Repository including JTS</name>
+      <url>http://maven.geotools.fr/repository</url>
+    </repository>
+  </repositories>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/APP.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,21 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts;
+
+import de.intevation.artifactdatabase.App;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class APP {
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        App.main(args);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,457 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.xpath.XPathConstants;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import de.intevation.artifactdatabase.Config;
+import de.intevation.artifactdatabase.DefaultArtifact;
+import de.intevation.artifactdatabase.XMLUtils;
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.artifacts.ArtifactNamespaceContext;
+import de.intevation.artifacts.CallContext;
+import de.intevation.artifacts.CallMeta;
+import de.intevation.gnv.artifacts.context.GNVArtifactContext;
+import de.intevation.gnv.transition.DefaultInputData;
+import de.intevation.gnv.transition.InputData;
+import de.intevation.gnv.transition.InputValue;
+import de.intevation.gnv.transition.OutputMode;
+import de.intevation.gnv.transition.OutputTransition;
+import de.intevation.gnv.transition.Transition;
+import de.intevation.gnv.transition.TransitionFactory;
+import de.intevation.gnv.transition.exception.TransitionException;
+import de.intevation.gnv.utils.ArtifactXMLUtilities;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public abstract class GNVArtifactBase extends DefaultArtifact {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(GNVArtifactBase.class);
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = -8907096744400741458L;
+
+    /**
+     * The Identifier for the Replacement of the Artifactname
+     */
+    public static final String XPATH_IDENTIFIER_REPLACE = "IDENTIFIER";
+
+    /**
+     * The XPATH to the XML-Fragment that should be used for the Configuration
+     */
+    public static final String XPATH_ARTIFACT_CONFIGURATION = "/artifact-database/artifacts/artifact[@name='"
+                                                              + XPATH_IDENTIFIER_REPLACE
+                                                              + "']";
+
+    /**
+     * The current Transition
+     */
+    protected Transition current = null;
+
+    /**
+     * The Transitions that can be used
+     */
+    protected Map<String, Transition> transitions = null;
+
+    /**
+     * The Name of the Artifact
+     */
+    protected String name = null;
+
+    private ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities();
+
+    /**
+     * Constructor
+     */
+    public GNVArtifactBase() {
+        super();
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#advance(org.w3c.dom.Document,
+     *      de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public Document advance(Document target, CallContext context) {
+        log.debug("GNVArtifactBase.advance");
+        Document result = XMLUtils.newDocument();
+        try {
+            if (this.current != null) {
+                String transitionName = this.readTransitionName(target);
+                log.debug("Transitionsname: " + transitionName);
+                if (this.current.isTransitionReachable(transitionName)) {
+                    try {
+                        Transition nextStep = this.transitions
+                                .get(transitionName);
+                        // 1.Ergebnisse Berechnen
+                        this.current.advance(super.identifier, context.getMeta());
+                        // 2. Ergebnisse Übergeben
+                        nextStep.putInputData(this.current.getInputData(), 
+                                              super.identifier);
+                        // 3. Umschalten auf neue Transistion
+                        this.current = nextStep;
+                        result = new ArtifactXMLUtilities()
+                                .createSuccessReport("Advance success",
+                                        XMLUtils.newDocument());
+                    } catch (TransitionException e) {
+                        log.error(e, e);
+                        result = new ArtifactXMLUtilities()
+                                .createExceptionReport(e
+                                        .getLocalizedMessage(), XMLUtils
+                                        .newDocument());
+                    }
+                } else {
+                    String msg = "Transitionsübergang wird nicht unterstützt.";
+                    log.error(msg);
+                    result = new ArtifactXMLUtilities().createExceptionReport(
+                            msg, XMLUtils.newDocument());
+                }
+            } else {
+                String msg = "Kein Transitionsschritt aktiviert.";
+                log.error(msg);
+                result = new ArtifactXMLUtilities().createExceptionReport(msg,
+                        XMLUtils.newDocument());
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            result = new ArtifactXMLUtilities().createExceptionReport(e
+                    .getLocalizedMessage(), XMLUtils.newDocument());
+        }
+        return result;
+    }
+
+    protected String readTransitionName(Document document) {
+        String returnValue = Config.getStringXPath(document,
+                "action/target/@name");
+        return returnValue;
+    }
+
+    protected Node getConfigurationFragment(Document document) {
+        log.debug("GNVArtifactBase.getConfigurationFragment");
+        String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(
+                XPATH_IDENTIFIER_REPLACE, this.name);
+        log.debug(xpathQuery);
+        
+        Element configurationNode = (Element)Config.getNodeXPath(document, xpathQuery);
+        
+        String link = configurationNode.getAttribute("xlink:href");
+        if (link != null ){
+            String absolutFileName = Config.replaceConfigDir(link);
+            configurationNode = (Element)new ArtifactXMLUtilities().readConfiguration(absolutFileName);
+        }
+        
+        return configurationNode;
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#feed(org.w3c.dom.Document,
+     *      de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public Document feed(Document target, CallContext context) {
+        log.debug("GNVArtifactBase.feed");
+        Document result = XMLUtils.newDocument();
+        try {
+            if (this.current != null) {
+                Collection<InputData> inputData = this.parseInputData(target,
+                                                                      "/action/data/input");
+                if (!inputData.isEmpty()){
+                    this.current.putInputData(inputData, super.identifier);
+                    result = new ArtifactXMLUtilities().createSuccessReport(
+                            "Feed success", XMLUtils.newDocument());
+                }else{
+                    String msg = "No Inputdata given. Please select at least one Entry.";
+                    log.warn(msg);
+                    result = new ArtifactXMLUtilities().createExceptionReport(msg,
+                            XMLUtils.newDocument());
+                }
+            } else {
+                String msg = "No Transition instantiated";
+                log.warn(msg);
+                result = new ArtifactXMLUtilities().createExceptionReport(msg,
+                        XMLUtils.newDocument());
+            }
+        } catch (TransitionException e) {
+            log.error(e, e);
+            result = new ArtifactXMLUtilities().createExceptionReport(e
+                    .getLocalizedMessage(), XMLUtils.newDocument());
+        }
+        return result;
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#setup(java.lang.String,
+     *      java.lang.Object)
+     */
+    @Override
+    public void setup(String identifier, ArtifactFactory factory, Object context) {
+        log.debug("GNVArtifactBase.setup");
+        super.setup(identifier, factory, context);
+
+        Object localContext = context;
+        if (context instanceof CallContext) {
+            localContext = ((CallContext) context).globalContext();
+
+        }
+
+        if (localContext instanceof GNVArtifactContext) {
+            GNVArtifactContext gnvContext = (GNVArtifactContext) localContext;
+            Document doc = gnvContext.getConfig();
+            Node artifactNode = this.getConfigurationFragment(doc);
+                        
+            NodeList transitionList = Config.getNodeSetXPath(artifactNode,
+                    "transitions/transition");
+            this.transitions = new HashMap<String, Transition>(transitionList
+                    .getLength());
+            for (int i = 0; i < transitionList.getLength(); i++) {
+                Transition tmpTransition = TransitionFactory.getInstance()
+                        .createTransition(transitionList.item(i));
+                if (tmpTransition != null) {
+                    this.transitions.put(tmpTransition.getID(), tmpTransition);
+                    if (this.current == null) {
+                        this.current = tmpTransition;
+                    }
+                }
+            }
+
+        }
+    }
+
+    protected Document createDescibeOutput(CallMeta callMeta, String uuid, boolean incudeUI) {
+        log.debug("GNVArtifactBase.createDescibeOutput");
+        Document document = XMLUtils.newDocument();
+        Element rootNode = this.createRootNode(document);
+        this.createHeader(rootNode, document, "describe");
+        this.createOutputs(rootNode, document);
+        this.createCurrentState(rootNode, document);
+        this.createReachableStates(rootNode, document);
+        this.createModel(rootNode, document);
+        if (incudeUI){
+            this.createUserInterface(rootNode, document, callMeta, uuid);
+        }
+        return document;
+    }
+    
+    protected boolean getIncludeUIFromDocument(Document document){
+        String value = Config.getStringXPath(document, "action/include-ui");
+        boolean includeUI = false;
+        if (value != null){
+            includeUI = Boolean.parseBoolean(value);
+        }
+        return includeUI;
+    }
+
+    protected Element createRootNode(Document document) {
+        Element rootNode = xmlUtilities.createArtifactElement(document,
+                "result");
+        document.appendChild(rootNode);
+        return rootNode;
+    }
+
+    protected void createHeader(Element parent, Document document,
+                                String documentType) {
+        Element typeNode = xmlUtilities.createArtifactElement(document, "type");
+        typeNode.setAttribute("name", documentType);
+        parent.appendChild(typeNode);
+
+        Element uuidNode = xmlUtilities.createArtifactElement(document, "uuid");
+        uuidNode.setAttribute("value", super.identifier);
+        parent.appendChild(uuidNode);
+
+        Element hashNode = xmlUtilities.createArtifactElement(document, "hash");
+        hashNode.setAttribute("value", this.hash());
+        parent.appendChild(hashNode);
+    }
+
+    protected void createReachableStates(Element parent, Document document) {
+        Element stateNode = xmlUtilities.createArtifactElement(document,
+                "reachable-states");
+        if (this.current != null) {
+            Iterator<String> states = this.current.reachableTransitions()
+                    .iterator();
+            while (states.hasNext()) {
+                String value = states.next();
+                Element currentNode = xmlUtilities.createArtifactElement(
+                        document, "state");
+                currentNode.setAttribute("name", value);
+                log.debug("Reachable State: " + value);
+                currentNode.setAttribute("description", transitions.get(value)
+                        .getDescription());
+                stateNode.appendChild(currentNode);
+            }
+        }
+        parent.appendChild(stateNode);
+    }
+
+    protected void createCurrentState(Element parent, Document document) {
+        Element stateNode = xmlUtilities.createArtifactElement(document,
+                "state");
+        stateNode.setAttribute("name", this.current.getID());
+        stateNode.setAttribute("description", this.current.getDescription());
+        parent.appendChild(stateNode);
+    }
+
+    protected void createModel(Element parent, Document document) {
+        Element modelNode = xmlUtilities.createArtifactElement(document,
+                "model");
+        if (this.current != null) {
+            Collection<InputValue> inputValues = this.current
+                    .getRequiredInputValues();
+            if (inputValues != null) {
+                Iterator<InputValue> it = inputValues.iterator();
+                while (it.hasNext()) {
+                    InputValue inputValue = it.next();
+                    Element inputNode = xmlUtilities.createArtifactElement(
+                            document, "input");
+                    inputNode.setAttribute("name", inputValue.getName());
+                    inputNode.setAttribute("type", inputValue.getType());
+                    modelNode.appendChild(inputNode);
+                }
+            }
+        }
+        parent.appendChild(modelNode);
+    }
+
+    protected void createUserInterface(Element parent, Document document,
+                                       CallMeta callMeta, String uuid) {
+        Element uiNode = xmlUtilities.createArtifactElement(document, "ui");
+
+        if (this.current != null) {
+            this.current.describe(document, uiNode, callMeta, uuid);
+        }
+
+        parent.appendChild(uiNode);
+    }
+
+    protected void createOutputs(Element parent, Document document) {
+        log.debug("GNVArtifactBase.createOutputs");
+        Element outputsNode = xmlUtilities.createArtifactElement(document,
+                "outputs");
+        if (this.current instanceof OutputTransition) {
+            Collection<OutputMode> outputModes = ((OutputTransition) this.current)
+                    .getOutputModes();
+            if (outputModes != null) {
+                Iterator<OutputMode> it = outputModes.iterator();
+                while (it.hasNext()) {
+                    OutputMode outputMode = it.next();
+                    log.debug("Write Outputnode for " + outputMode.toString());
+                    Element outputModeNode = xmlUtilities
+                            .createArtifactElement(document, "output");
+                    outputModeNode.setAttribute("name", outputMode.getName());
+                    outputModeNode.setAttribute("description", outputMode
+                            .getDescription());
+                    outputModeNode.setAttribute("mime-type", outputMode
+                            .getMimeType());
+                    outputsNode.appendChild(outputModeNode);
+
+                    Collection<InputValue> inputParameters = outputMode
+                            .getInputParameters();
+                    if (inputParameters != null) {
+                        Element inputParametersNode = xmlUtilities
+                                .createArtifactElement(document, "parameter");
+                        outputModeNode.appendChild(inputParametersNode);
+                        Iterator<InputValue> it2 = inputParameters.iterator();
+                        while (it2.hasNext()) {
+                            InputValue inputValue = it2.next();
+                            Element inputParameterNode = xmlUtilities
+                                    .createArtifactElement(document,
+                                            "parameter");
+                            inputParametersNode.appendChild(inputParameterNode);
+                            inputParameterNode.setAttribute("name", inputValue
+                                    .getName());
+                            inputParameterNode.setAttribute("type", inputValue
+                                    .getType());
+                            inputParameterNode.setAttribute("value", inputValue
+                                    .getDefaultValue());
+                        }
+                    }
+                }
+            } else {
+                log.warn("No Outputmodes given.");
+            }
+        }
+        parent.appendChild(outputsNode);
+    }
+
+    protected Collection<InputData> parseInputData(Document document,
+                                                   String xPath) {
+        log.debug("GNVArtifactBase.parseInputData");
+        HashMap<String, InputData> returnValue = null;
+
+        log.debug(new ArtifactXMLUtilities().writeDocument2String(document));
+
+        NodeList inputElemets = (NodeList) XMLUtils.xpath(document, xPath,
+                XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE);// Config.getNodeSetXPath(document,
+                                                                           // "");
+        if (inputElemets != null) {
+            returnValue = new HashMap<String, InputData>(inputElemets
+                    .getLength());
+            for (int i = 0; i < inputElemets.getLength(); i++) {
+                Element inputDataNode = (Element)inputElemets.item(i);
+                String name = inputDataNode.getAttribute("name");
+                String value = inputDataNode.getAttribute("value");
+
+                if (returnValue.containsKey(name)) {
+                    InputData inputData = returnValue.get(name);
+                    inputData.concartValue(value);
+                    log.debug(inputData.toString());
+                    returnValue.put(name, inputData);
+                } else {
+                    InputData inputData = new DefaultInputData(name, value);
+
+                    returnValue.put(name, inputData);
+                }
+            }
+        }
+        return returnValue.values();
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#out(org.w3c.dom.Document,
+     *      java.io.OutputStream, de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public void out(Document format, OutputStream outputStream,
+                    CallContext context) throws IOException {
+        log.debug("TGNVArtifactBase.out");
+        try {
+
+            if (current != null && current instanceof OutputTransition) {
+                ((OutputTransition) current)
+                        .out(this.readOutputType(format), this.parseInputData(
+                                format, "/action/out/params/input"),
+                                outputStream, super.identifier, context.getMeta());
+            }
+        } catch (TransitionException e) {
+            log.error(e, e);
+            throw new IOException(e.getMessage());
+        }
+    }
+
+    protected String readOutputType(Document document) {
+        String value = Config.getStringXPath(document, "action/out/@name");
+        return value;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/cache/CacheFactory.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,86 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts.cache;
+
+import net.sf.ehcache.Cache;
+import net.sf.ehcache.CacheManager;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class CacheFactory {
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(CacheFactory.class);
+
+    private final static String CACHENAME = "artifactdata";
+
+    /**
+     * The singleton Instance of this Factory.
+     */
+    private static CacheFactory instance = null;
+
+    /**
+     * 
+     */
+    private CacheManager cacheManager = null;
+
+    /**
+     * Basic-Constructor of this Class
+     */
+    private CacheFactory() {
+        super();
+    }
+
+    /**
+     * This Method provides an singleton Instance of this Class.
+     * 
+     * @return an singleton Instance of this Class
+     */
+    public static CacheFactory getInstance() {
+        if (instance == null) {
+            instance = new CacheFactory();
+        }
+        return instance;
+    }
+
+    /**
+     * Getting the ConnectionPool
+     * 
+     * @return the ConnectionPool
+     */
+    public Cache getCache() {
+        return this.cacheManager.getCache(CACHENAME);
+    }
+
+    /**
+     * Initializes the ConnectionPool. Should only be called once on system
+     * startup
+     * 
+     * @param properties
+     *            the Properties for the Individual Configuration of the
+     *            ConnectionPool
+     */
+    public void initializeCache(String configurationFileName) {
+        if (cacheManager == null) {
+            cacheManager = new CacheManager(configurationFileName);
+            cacheManager.addCache(CACHENAME);
+        }
+    }
+
+    /**
+     * Checks if the ConnectionPool has already been initialized.
+     * 
+     * @return true if the ConnectionPool is initialized.
+     */
+    public boolean isInitialized() {
+        return this.cacheManager != null;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContext.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,31 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts.context;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+
+import de.intevation.artifactdatabase.DefaultArtifactContext;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class GNVArtifactContext extends DefaultArtifactContext {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(GNVArtifactContext.class);
+
+    public GNVArtifactContext() {
+        super();
+        log.debug("GNVArtifactContext.Constructor");
+    }
+
+    public GNVArtifactContext(Document config) {
+        super(config);
+        log.debug("GNVArtifactContext.Constructor(config)");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,112 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts.context;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+
+import de.intevation.artifactdatabase.Config;
+import de.intevation.artifacts.ArtifactContextFactory;
+import de.intevation.gnv.artifacts.cache.CacheFactory;
+import de.intevation.gnv.geobackend.base.connectionpool.ConnectionPoolFactory;
+import de.intevation.gnv.geobackend.base.query.container.QueryContainerFactory;
+import de.intevation.gnv.geobackend.base.query.container.exception.QueryContainerException;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class GNVArtifactContextFactory implements ArtifactContextFactory {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(GNVArtifactContext.class);
+
+    public static final String XPATH_GEOBACKEND_CONFIGURATION = "artifact-database/geo-backend/backend-configuration";
+
+    public static final String XPATH_GEOBACKEND_QUERYCONFIGURATION = "artifact-database/geo-backend/query-configuration";
+
+    private final static String CACHECONFIGNODEPATH = "/artifact-database/ehcache/configuration";
+
+    /**
+     * Constructor
+     */
+    public GNVArtifactContextFactory() {
+        super();
+        log.debug("GNVArtifactContextFactory.Constructor");
+    }
+
+    /**
+     * @see de.intevation.artifacts.ArtifactContextFactory#createArtifactContext(org.w3c.dom.Document)
+     */
+    public Object createArtifactContext(Document config) {
+        Object returnValue = null;
+        try {
+            log.debug("GNVArtifactContextFactory.createArtifactContext");
+            log.info("Initialisation of the Geo-BackendConnectionPool");
+            String backendConfigurationFile = Config.getStringXPath(config,
+                    XPATH_GEOBACKEND_CONFIGURATION);
+            backendConfigurationFile = Config.replaceConfigDir(backendConfigurationFile);
+            
+            Properties properties = getProperties(backendConfigurationFile);
+            ConnectionPoolFactory cpf = ConnectionPoolFactory.getInstance();
+            cpf.initializeConnectionPool(properties);
+
+            log.info("Initialisation of the QueryContainer");
+            String queryConfigurationFile = Config.getStringXPath(config,
+                    XPATH_GEOBACKEND_QUERYCONFIGURATION);
+            queryConfigurationFile = Config.replaceConfigDir(queryConfigurationFile);
+            
+            Properties queryProperties = getProperties(queryConfigurationFile);
+            QueryContainerFactory qcf = QueryContainerFactory.getInstance();
+            qcf.initializeQueryContainer(queryProperties);
+
+            log.info("Initialisation of the Cache");
+            String cacheConfigurationFile = Config.getStringXPath(config,
+                    CACHECONFIGNODEPATH);
+            cacheConfigurationFile = Config.replaceConfigDir(cacheConfigurationFile);
+            CacheFactory cf = CacheFactory.getInstance();
+            cf.initializeCache(cacheConfigurationFile);
+
+            returnValue = new GNVArtifactContext(config);
+        } catch (FileNotFoundException e) {
+            log.error(e, e);
+        } catch (IOException e) {
+            log.error(e, e);
+        } catch (QueryContainerException e) {
+            log.error(e, e);
+        }
+        return returnValue;
+    }
+
+    /**
+     * @param filePath
+     * @return
+     * @throws FileNotFoundException
+     * @throws IOException
+     */
+    private Properties getProperties(String filePath)
+                                                     throws FileNotFoundException,
+                                                     IOException {
+        InputStream inputStream = null;
+        try {
+            inputStream = new FileInputStream(filePath);
+            Properties properties = new Properties();
+            properties.load(inputStream);
+            return properties;
+        }
+        finally {
+            if (inputStream != null) {
+                try { inputStream.close(); }
+                catch (IOException ioe) {}
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,497 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts.fis;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import de.intevation.artifactdatabase.Config;
+import de.intevation.artifactdatabase.DefaultArtifact;
+import de.intevation.artifactdatabase.XMLUtils;
+import de.intevation.artifacts.Artifact;
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.artifacts.CallContext;
+import de.intevation.artifacts.CallMeta;
+import de.intevation.gnv.artifacts.GNVArtifactBase;
+import de.intevation.gnv.artifacts.context.GNVArtifactContext;
+import de.intevation.gnv.artifacts.fis.product.DefaultProduct;
+import de.intevation.gnv.artifacts.fis.product.Product;
+import de.intevation.gnv.artifacts.ressource.RessourceFactory;
+import de.intevation.gnv.transition.DefaultInputData;
+import de.intevation.gnv.transition.InputData;
+import de.intevation.gnv.utils.ArtifactFactoryUtilities;
+import de.intevation.gnv.utils.ArtifactXMLUtilities;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class FISArtifact extends DefaultArtifact {
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(GNVArtifactBase.class);
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = 2874044542701727083L;
+
+    /**
+     * The Identifier for the Replacement of the Artifactname
+     */
+    public static final String XPATH_IDENTIFIER_REPLACE = "IDENTIFIER";
+
+    /**
+     * The XPATH to the XML-Fragment that should be used for the Configuration
+     */
+    public static final String XPATH_ARTIFACT_CONFIGURATION = "/artifact-database/artifacts/artifact[@name='"
+                                                              + XPATH_IDENTIFIER_REPLACE
+                                                              + "']";
+
+    /**
+     * The Name of the Artifact
+     */
+    private String name = null;
+
+    private Map<String, Product> products = null;
+
+    private Artifact productArtifact = null;
+
+    private Product current = null;
+
+    private ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities();
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#advance(org.w3c.dom.Document,
+     *      de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public Document advance(Document target, CallContext context) {
+
+        Document result = null;
+        if (this.productArtifact == null) {
+            if (this.current != null) {
+
+                String uuid = Config.getStringXPath(target,
+                        "action/uuid/@value");
+                String hash = Config.getStringXPath(target,
+                        "action/hash/@value");
+                this.productArtifact = this.current.getArtifactFactory()
+                        .createArtifact(uuid, context);
+                Document feedDocument = xmlUtilities.reInitDocument(this
+                        .createFeedProductArtifactDocument(uuid, hash));
+                log.debug("Feed ==> "
+                          + this.xmlUtilities
+                                  .writeDocument2String(feedDocument));
+                Document descibeDocument = xmlUtilities
+                        .reInitDocument(this.
+                                        productArtifact.
+                                        describe(xmlUtilities.
+                                                 reInitDocument(this.
+                                                 createDescribeRequestBody(uuid, 
+                                                                           hash, 
+                                                                           false)),
+                                                 context));
+                log.debug("Descibe ==> "
+                          + this.xmlUtilities
+                                  .writeDocument2String(descibeDocument));
+                this.productArtifact.feed(feedDocument, context);
+                String targetName = Config.getStringXPath(descibeDocument,
+                        "result/reachable-states/state/@name");
+                Document advanceDocument = xmlUtilities.reInitDocument(this
+                        .createAdvanceProductArtifactDocument(uuid, hash,
+                                targetName));
+                log.debug("Advance ==> "
+                          + this.xmlUtilities
+                                  .writeDocument2String(advanceDocument));
+                result = this.productArtifact.advance(advanceDocument, context);
+            } else {
+                String msg = "Artifact is not configured properly. Call feed first.";
+                log.error(msg);
+                result = new ArtifactXMLUtilities().createExceptionReport(msg,
+                        XMLUtils.newDocument());
+            }
+        } else {
+            result = this.productArtifact.advance(target, context);
+        }
+        return result;
+    }
+    
+    private Document createDescribeRequestBody(String uuid, 
+                                               String hash,
+                                               boolean includeUI){
+        Document document = XMLUtils.newDocument();
+        
+        Element rootNode = xmlUtilities.createArtifactElement(document,"action");
+        document.appendChild(rootNode);
+        
+        Element typeNode = this.xmlUtilities.createArtifactElement(document, "type");
+        typeNode.setAttribute("name", "describe");
+        rootNode.appendChild(typeNode);
+        
+        Element uuidNode = this.xmlUtilities.createArtifactElement(document, "uuid");
+        uuidNode.setAttribute("value",uuid);
+        rootNode.appendChild(uuidNode);
+        
+        Element hashNode = this.xmlUtilities.createArtifactElement(document, "hash");
+        hashNode.setAttribute("value", hash);
+        rootNode.appendChild(hashNode);
+        
+        Element includeUINode =  this.xmlUtilities.createArtifactElement(document, "include-ui");
+        includeUINode.setTextContent(""+includeUI);
+        rootNode.appendChild(includeUINode);
+        
+        return document;
+    }
+
+    private Document createAdvanceProductArtifactDocument(String uuid,
+                                                          String hash,
+                                                          String targetName) {
+        Document document = XMLUtils.newDocument();
+        Element rootNode = xmlUtilities.createArtifactElement(document,
+                "action");
+
+        Element typeNode = xmlUtilities.createArtifactElement(document, "type");
+        typeNode.setAttribute("name", "advanve");
+        rootNode.appendChild(typeNode);
+
+        Element uuidNode = xmlUtilities.createArtifactElement(document, "uuid");
+        uuidNode.setAttribute("value", uuid);
+        rootNode.appendChild(uuidNode);
+
+        Element hashNode = xmlUtilities.createArtifactElement(document, "hash");
+        hashNode.setAttribute("value", hash);
+        rootNode.appendChild(hashNode);
+        Element targetNode = xmlUtilities.createArtifactElement(document,
+                "target");
+        targetNode.setAttribute("name", targetName);
+        rootNode.appendChild(targetNode);
+
+        document.appendChild(rootNode);
+        return document;
+    }
+
+    private Document createFeedProductArtifactDocument(String uuid, String hash) {
+        Document document = XMLUtils.newDocument();
+        Element rootNode = xmlUtilities.createArtifactElement(document,
+                "action");
+
+        Element typeNode = xmlUtilities.createArtifactElement(document, "type");
+        typeNode.setAttribute("name", "feed");
+        rootNode.appendChild(typeNode);
+
+        Element uuidNode = xmlUtilities.createArtifactElement(document, "uuid");
+        uuidNode.setAttribute("value", uuid);
+        rootNode.appendChild(uuidNode);
+
+        Element hashNode = xmlUtilities.createArtifactElement(document, "hash");
+        hashNode.setAttribute("value", hash);
+        rootNode.appendChild(hashNode);
+
+        Element dataNode = xmlUtilities.createArtifactElement(document, "data");
+        rootNode.appendChild(dataNode);
+
+        Collection<InputData> parameter = this.current.getParameter();
+        if (parameter != null) {
+            Iterator<InputData> parameterIt = parameter.iterator();
+            while (parameterIt.hasNext()) {
+                InputData inputData = parameterIt.next();
+                Element inputNode = xmlUtilities.createArtifactElement(
+                        document, "input");
+                inputNode.setAttribute("name", inputData.getName());
+                inputNode.setAttribute("value", inputData.getValue());
+                dataNode.appendChild(inputNode);
+            }
+        }
+        document.appendChild(rootNode);
+        return document;
+
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public Document describe(Document data, CallContext context) {
+        if (this.productArtifact == null) {
+            return this.createDescibeOutput(context.getMeta());
+        } else {
+            Document document = this.productArtifact.describe(data,context);
+            document = new ArtifactXMLUtilities().reInitDocument(document);
+            Node staticNode = Config
+                    .getNodeXPath(document, "/result/ui/static");
+            if (staticNode != null) {
+                Node staticUI = this.createSelectBox(document, context
+                        .getMeta());
+                staticNode.insertBefore(staticUI, staticNode.getFirstChild());
+            }
+            return document;
+        }
+    }
+
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#feed(org.w3c.dom.Document,
+     *      java.lang.Object)
+     */
+    @Override
+    public Document feed(Document target, CallContext context) {
+        log.debug("FISArtifact.feed");
+        Document result = null;
+        if (this.productArtifact == null) {
+            String productName = Config.getStringXPath(target,
+                    "action/data/input[@name='product']/@value");
+            log.debug("Looking for ProductArtifact " + productName);
+            if (this.products.containsKey(productName)) {
+                this.current = this.products.get(productName);
+                result = new ArtifactXMLUtilities().createSuccessReport(
+                        "Feed success New ProductArtifact created", XMLUtils
+                                .newDocument());
+            } else {
+                String msg = "Product does not exists for " + productName;
+                log.error(msg);
+                result = new ArtifactXMLUtilities().createExceptionReport(msg,
+                        XMLUtils.newDocument());
+            }
+        } else {
+            log.debug("Feed a Productartifact");
+            result = this.productArtifact.feed(target, context);
+        }
+        return result;
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#out(org.w3c.dom.Document,
+     *      java.lang.Object)
+     */
+    @Override
+    public void out(Document format, OutputStream outputStream,
+                    CallContext context) throws IOException {
+        if (this.productArtifact != null) {
+            this.productArtifact.out(format, outputStream, context);
+        }
+    }
+
+    /**
+     * Constructor
+     */
+    public FISArtifact() {
+        super();
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#setup(java.lang.String,
+     *      de.intevation.artifacts.ArtifactFactory, java.lang.Object)
+     */
+    @Override
+    public void setup(String identifier, ArtifactFactory factory, Object context) {
+        log.debug("FISArtifact.setup");
+        this.name = factory.getName();
+        super.setup(identifier, factory, context);
+        if (context instanceof GNVArtifactContext) {
+            GNVArtifactContext gnvContext = (GNVArtifactContext) context;
+            Document doc = gnvContext.getConfig();
+            Node artifactNode = this.getConfigurationFragment(doc);
+
+            NodeList products = Config.getNodeSetXPath(artifactNode,
+                    "products/product");
+            if (products != null) {
+                this.products = new HashMap<String, Product>(products
+                        .getLength());
+                
+                for (int i = 0; i < products.getLength(); i++) {
+                    Element productNode = (Element)products.item(i);
+                    String productName = productNode.getAttribute("name");
+                    NodeList parameterNodes = Config.getNodeSetXPath(
+                            productNode, "parameters/parameter");
+                    Collection<InputData> parameter = null;
+                    if (parameterNodes != null) {
+                        parameter = new ArrayList<InputData>(parameterNodes
+                                .getLength());
+                        for (int j = 0; j < parameterNodes.getLength(); j++) {
+                            Element parameterNode = (Element)parameterNodes.item(j);
+                            String name = parameterNode.getAttribute("name");
+                            String value = parameterNode.getAttribute("value");
+                            parameter.add(new DefaultInputData(name, value));
+                        }
+                    }
+                    Node artifactFactoryNode = Config.getNodeXPath(productNode,
+                            "artifact-factory");
+                    ArtifactFactory artifactFactory = new ArtifactFactoryUtilities()
+                            .createArtitfactFactor(doc, artifactFactoryNode);
+                    this.products.put(productName, new DefaultProduct(
+                            productName, parameter, artifactFactory));
+                }
+            }
+        }
+    }
+
+    protected Node getConfigurationFragment(Document document) {
+        log.debug("GNVArtifactBase.getConfigurationFragment");
+        String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(
+                XPATH_IDENTIFIER_REPLACE, this.name);
+        log.debug(xpathQuery);
+        return Config.getNodeXPath(document, xpathQuery);
+    }
+
+    protected Document createDescibeOutput(CallMeta callMeta) {
+        log.debug("GNVArtifactBase.createDescibeOutput");
+        Document document = XMLUtils.newDocument();
+        Element rootNode = this.createRootNode(document);
+        this.createHeader(rootNode, document, "describe");
+        this.createOutputs(rootNode, document);
+        this.createCurrentState(rootNode, document);
+        this.createReachableStates(rootNode, document);
+        this.createModel(rootNode, document);
+        this.createUserInterface(rootNode, document, callMeta);
+
+        return document;
+    }
+
+    protected Element createRootNode(Document document) {
+        Element rootNode = xmlUtilities.createArtifactElement(document,
+                "result");
+        document.appendChild(rootNode);
+        return rootNode;
+    }
+
+    protected void createHeader(Element parent, Document document,
+                                String documentType) {
+        Element typeNode = xmlUtilities.createArtifactElement(document, "type");
+        typeNode.setAttribute("name", documentType);
+        parent.appendChild(typeNode);
+
+        Element uuidNode = xmlUtilities.createArtifactElement(document, "uuid");
+        uuidNode.setAttribute("value", super.identifier);
+        parent.appendChild(uuidNode);
+
+        Element hashNode = xmlUtilities.createArtifactElement(document, "hash");
+        hashNode.setAttribute("value", this.hash());
+        parent.appendChild(hashNode);
+
+    }
+
+    protected void createReachableStates(Element parent, Document document) {
+        Element stateNode = xmlUtilities.createArtifactElement(document,
+                "reachable-states");
+        if (this.products != null) {
+            Iterator<Product> products = this.products.values().iterator();
+            while (products.hasNext()) {
+                Product product = products.next();
+                Element currentNode = xmlUtilities.createArtifactElement(
+                        document, "state");
+                currentNode.setAttribute("name", product.getName());
+                currentNode.setAttribute("description", product.getName());
+                stateNode.appendChild(currentNode);
+            }
+        }
+        parent.appendChild(stateNode);
+    }
+
+    protected void createCurrentState(Element parent, Document document) {
+        Element stateNode = xmlUtilities.createArtifactElement(document,
+                "state");
+        stateNode.setAttribute("name", "choose-product");
+        stateNode.setAttribute("description",
+                "Initialer Stand Auswahl des products");
+        parent.appendChild(stateNode);
+    }
+
+    protected void createModel(Element parent, Document document) {
+        Element modelNode = xmlUtilities.createArtifactElement(document,
+                "model");
+
+        Element inputNode = xmlUtilities.createArtifactElement(document,
+                "input");
+        inputNode.setAttribute("name", "product");
+        inputNode.setAttribute("type", "String");
+        modelNode.appendChild(inputNode);
+
+        parent.appendChild(modelNode);
+    }
+
+    protected void createUserInterface(Element parent, Document document,
+                                       CallMeta callMeta) {
+        Element uiNode = xmlUtilities.createArtifactElement(document, "ui");
+        ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities();
+        Node dynamic = xmlUtilities.createArtifactElement(document, "dynamic");
+        uiNode.appendChild(dynamic);
+        if (this.products != null && !this.products.isEmpty()) {
+            Element selectNode = createSelectBox(document, callMeta);
+
+            dynamic.appendChild(selectNode);
+        }
+
+        parent.appendChild(uiNode);
+    }
+
+    /**
+     * @param document
+     * @param xmlUtilities
+     * @return
+     */
+    private Element createSelectBox(Document document, CallMeta callMeta) {
+
+        ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities();
+        String selectboxName = "product";
+        Iterator<Product> it = this.products.values().iterator();
+        Element selectNode = xmlUtilities.createXFormElement(document,
+                "select1");
+        selectNode.setAttribute("ref", selectboxName);
+
+        Element lableNode = xmlUtilities.createXFormElement(document, "label");
+        lableNode.setTextContent(RessourceFactory.getInstance().getRessource(
+                callMeta.getLanguages(), selectboxName, selectboxName));
+        selectNode.appendChild(lableNode);
+        Element choiceNode = xmlUtilities.createXFormElement(document,
+                "choices");
+        selectNode.appendChild(choiceNode);
+        while (it.hasNext()) {
+            Product p = it.next();
+            Element itemNode = xmlUtilities
+                    .createXFormElement(document, "item");
+
+            if (this.current != null
+                && this.current.getName().equals(p.getName())) {
+                itemNode.setAttribute("selected", "true");
+            }
+
+            Element choiceLableNode = xmlUtilities.createXFormElement(document,
+                    "label");
+            choiceLableNode.setTextContent(RessourceFactory.getInstance()
+                    .getRessource(callMeta.getLanguages(), p.getName(),
+                            p.getName()));
+            itemNode.appendChild(choiceLableNode);
+
+            Element choicValueNode = xmlUtilities.createXFormElement(document,
+                    "value");
+            choicValueNode.setTextContent(p.getName());
+            itemNode.appendChild(choicValueNode);
+
+            choiceNode.appendChild(itemNode);
+
+        }
+        return selectNode;
+    }
+
+    protected void createOutputs(Element parent, Document document) {
+        log.debug("GNVArtifactBase.createOutputs");
+        Element outputsNode = xmlUtilities.createArtifactElement(document,
+                "outputs");
+        parent.appendChild(outputsNode);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/product/DefaultProduct.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,59 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts.fis.product;
+
+import java.util.Collection;
+
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.gnv.transition.InputData;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class DefaultProduct implements Product {
+
+    private String name = null;
+
+    private Collection<InputData> parameter = null;
+
+    private ArtifactFactory artifactFactory = null;
+
+    /**
+     * Constructor
+     * 
+     * @param name
+     * @param parameter
+     * @param artifactFactory
+     */
+    public DefaultProduct(String name, Collection<InputData> parameter,
+                          ArtifactFactory artifactFactory) {
+        super();
+        this.name = name;
+        this.parameter = parameter;
+        this.artifactFactory = artifactFactory;
+    }
+
+    /**
+     * @see de.intevation.gnv.artifacts.fis.product.Product#getName()
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    /**
+     * @see de.intevation.gnv.artifacts.fis.product.Product#getParameter()
+     */
+    public Collection<InputData> getParameter() {
+        return this.parameter;
+    }
+
+    /**
+     * @see de.intevation.gnv.artifacts.fis.product.Product#getArtifactFactory()
+     */
+    public ArtifactFactory getArtifactFactory() {
+        return this.artifactFactory;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/product/Product.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,23 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts.fis.product;
+
+import java.io.Serializable;
+import java.util.Collection;
+
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.gnv.transition.InputData;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface Product extends Serializable {
+
+    public String getName();
+
+    public Collection<InputData> getParameter();
+
+    public ArtifactFactory getArtifactFactory();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,84 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts.ressource;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.apache.log4j.Logger;
+
+import de.intevation.artifacts.PreferredLocale;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class RessourceFactory {
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(RessourceFactory.class);
+
+    /**
+     * The singleton Instance of this Factory.
+     */
+    private static RessourceFactory instance = null;
+
+    private static String RESSOURCE_BASE_ID = "artifact.ressource.dir";
+
+    private static String ressourceName = "artifactMessages";
+    private static String DEFAULT_DIR = "lang";
+
+    private String ressourceDir = null;
+
+    /**
+     * Basic-Constructor of this Class
+     */
+    private RessourceFactory() {
+        super();
+        ressourceDir = System.getProperty(RESSOURCE_BASE_ID, DEFAULT_DIR);
+    }
+
+    /**
+     * This Method provides an singleton Instance of this Class.
+     * 
+     * @return an singleton Instance of this Class
+     */
+    public static synchronized RessourceFactory getInstance() {
+        if (instance == null) {
+            instance = new RessourceFactory();
+        }
+        return instance;
+    }
+
+    /**
+     * Deliveres the translated Value for an Key to an given Language
+     * 
+     * @param locale
+     *            The choosen locale
+     * @param key
+     *            the key
+     * @param defaultValue
+     *            the Value that should be returned.
+     * @return the translated Value
+     */
+    public String getRessource(PreferredLocale[] preferredLocales, String key,
+                               String defaultValue) {
+        if (key == null || preferredLocales.length == 0) {
+            return defaultValue;
+        }
+
+        try {
+            ResourceBundle rb = ResourceBundle.getBundle(ressourceDir + "/"
+                                                         + ressourceName,
+                    preferredLocales[0].getLocale());
+
+            return rb.getString(key);
+        } catch (MissingResourceException mre) {
+            log.warn(mre.getLocalizedMessage());
+            return defaultValue;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/ChartFactory.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,484 @@
+/**
+ * Title:           ChartFactory, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v 1.8 2007/12/21 12:31:15 blume Exp $
+ * Source:          $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $
+ * created by:      Stefan Blume (blume)
+ * erstellt am:     06.12.2007
+ * Copyright:       con terra GmbH, 2005
+ *
+ * modified by:     $Author: blume $
+ * modified on:     $Date: 2007/12/21 12:31:15 $
+ * Version:         $Revision: 1.8 $
+ * TAG:             $Name:  $
+ * locked from:     $Locker:  $
+ * CVS State:       $State: Exp $
+ * Project:         $ProjectName$
+ */
+package de.intevation.gnv.chart;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Transparency;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+
+import org.apache.log4j.Logger;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.AxisLocation;
+import org.jfree.chart.axis.DateAxis;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.NumberTickUnit;
+import org.jfree.chart.encoders.KeypointPNGEncoderAdapter;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.plot.XYPlot;
+import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
+import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
+import org.jfree.data.time.Minute;
+import org.jfree.data.time.TimeSeries;
+import org.jfree.data.time.TimeSeriesCollection;
+import org.jfree.data.xy.XYDataset;
+import org.jfree.ui.RectangleInsets;
+
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.timeseries.gap.TimeGap;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+
+/**
+ * The class <code>ChartFactory</code> fulfills the following purposes:
+ * <ol>
+ * <li></li>
+ * </ol>
+ * 
+ * @author blume
+ * @version 1.0
+ * @serial 1.0
+ * @see
+ * @since 06.12.2007 17:25:59
+ */
+public class ChartFactory {
+
+    /**
+     * Default Logging instance
+     */
+    private static Logger sLogger = Logger.getLogger(ChartFactory.class);
+    private static boolean sDebug = sLogger.isDebugEnabled();
+    
+    private final static long NOTIMEGAP = Long.MAX_VALUE - 1000; 
+    // Minus 1000 damit es bei Additionen keinen Überlauf gibt
+
+    public synchronized void createSimpleTimeSeriesChart(
+                                                         ChartLabels pLabels,
+                                                         ChartStyle pStyle,
+                                                         Collection<KeyValueDescibeData> parameters,
+                                                         Collection<KeyValueDescibeData> measurements,
+                                                         OutputStream outputStream,
+                                                         Collection<Result> resultSet,
+                                                         Collection<TimeGap> timeGaps)
+                                                                                      throws IOException,
+                                                                                      TechnicalChartException {
+        if (sDebug)
+            sLogger.debug("createSimpleTimeSeriesChart()");
+        int lLowerLevel = Integer.MIN_VALUE;
+        int lUpperLevel = Integer.MAX_VALUE;
+        if (pStyle.isUseUpperDataLevel()
+            && pStyle.getUpperLevel() < Integer.MAX_VALUE) {
+            lUpperLevel = pStyle.getUpperLevel();
+        }
+        if (pStyle.isUseLowerDataLevel()
+            && pStyle.getLowerLevel() > Integer.MIN_VALUE) {
+            lLowerLevel = pStyle.getLowerLevel();
+        }
+        if (sDebug)
+            sLogger.debug("  vor createDataset()");
+        XYDataset lSet = this.createDataset(resultSet, lUpperLevel,
+                lLowerLevel, parameters, measurements,timeGaps);
+        if (sDebug)
+            sLogger.debug("  nach createDataset()");
+        final Color[] color = { Color.black, Color.red, Color.green, Color.blue };
+        DateAxis domain = new DateAxis(pLabels.getDomainAxisLabel());
+        NumberAxis axis;
+        StandardXYItemRenderer renderer = new StandardXYItemRenderer();
+        XYPlot plot = new XYPlot();
+        // Global settings
+
+        plot.setOrientation(PlotOrientation.VERTICAL);
+        plot.setBackgroundPaint(Color.lightGray);
+        plot.setDomainGridlinePaint(Color.white);
+        plot.setRangeGridlinePaint(Color.white);
+        plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
+        // plot.getRangeAxis().setFixedDimension(10.0);
+        plot.setDomainAxis(domain);
+        plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
+        if (parameters.size() == 1) {
+            KeyValueDescibeData parameter = parameters.iterator().next();
+            axis = new NumberAxis(parameter.getValue());
+            if (parameter.getValue().contains("richtung")) {
+                NumberAxis axis1 = new NumberAxis((parameter
+                        .getValue()));// ,new Range(0.0,360.0));
+                axis1.setTickUnit(new NumberTickUnit(30.0));
+                axis1.setUpperBound(360.0);
+                axis1.setLowerBound(0.0);
+                // axis1.setDisplayRange(0.0,360.0);
+                plot.setRangeAxis(axis1);
+            } else {
+                axis.setFixedDimension(10.0);
+                axis.setAutoRangeIncludesZero(false);
+                plot.setRangeAxis(axis);
+            }
+            axis.configure();
+            plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
+            plot.setRenderer(renderer);
+            plot.setDataset(lSet);
+        } else {
+            // Individual settings for different parameters
+            for (int i = 0; i < lSet.getSeriesCount(); i++) {
+
+                plot.setDataset(i, getDataset((TimeSeriesCollection) lSet, i));
+                Color mColor = color[i % color.length]; // zyklische Farbvergabe
+                mColor = color[0];
+                // if ( pParameterId.length==1){
+
+                if (((String) lSet.getSeriesKey(i)).contains("richtung")) {
+                    NumberAxis axis1 = new NumberAxis(((String) lSet
+                            .getSeriesKey(i)));// ,new Range(0.0,360.0));
+                    axis1.setTickUnit(new NumberTickUnit(30.0));
+                    // axis1.setDisplayRange(0.0,360.0);
+                    axis1.setLabelPaint(mColor);
+                    axis1.setTickLabelPaint(mColor);
+                    axis1.setUpperBound(360.0);
+                    axis1.setLowerBound(0.0);
+                    plot.setRangeAxis(i, axis1);
+
+                } else {
+                    axis = new NumberAxis((String) lSet.getSeriesKey(i));
+                    axis.setFixedDimension(10.0);
+                    axis.setAutoRangeIncludesZero(false);
+                    axis.setLabelPaint(mColor);
+                    axis.setTickLabelPaint(mColor);
+                    plot.setRangeAxis(i, axis);
+                    axis.configure();
+                }
+                if (i % 2 != 0)
+                    plot.setRangeAxisLocation(i, AxisLocation.BOTTOM_OR_RIGHT);
+                else
+                    plot.setRangeAxisLocation(i, AxisLocation.BOTTOM_OR_LEFT);
+                plot.mapDatasetToRangeAxis(i, i);
+                // }
+                renderer = new StandardXYItemRenderer();
+                renderer.setSeriesPaint(i, mColor);
+                // renderer.setSeriesStroke(i,stroke[j]);
+                plot.setRenderer(i, renderer);
+            }
+        }
+        JFreeChart chart = new JFreeChart(pLabels.getTitle(), new Font(
+                "SansSerif", Font.BOLD, 24), plot, true);
+
+        setStyle(chart, pStyle);
+        configureRenderingOptions(chart);
+        if (sDebug)
+            sLogger.debug("  vor encodeChart()");
+
+        encodeChart(chart, pStyle, outputStream);
+    }
+
+    private static XYDataset getDataset(TimeSeriesCollection T, int pIndex) { // throws
+                                                                              // TechnicalChartException{
+        // if (T.getSeriesCount() < pIndex) throw TechnicalChartException();
+        TimeSeriesCollection TSC = new TimeSeriesCollection();
+        TSC.addSeries(T.getSeries(pIndex));
+        return TSC;
+    }
+
+    private void configureRenderingOptions(JFreeChart pJfreechart) {
+        org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = ((XYPlot) pJfreechart
+                .getPlot()).getRenderer();
+        if (xyitemrenderer instanceof XYLineAndShapeRenderer) {
+            XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyitemrenderer;
+            xylineandshaperenderer.setBaseShapesVisible(true);
+            xylineandshaperenderer.setBaseShapesFilled(true);
+        }
+    }
+
+    private void setStyle(JFreeChart pJfreechart, ChartStyle pStyle) {
+        if (sDebug)
+            sLogger.debug("setStyle()");
+        pJfreechart.setBackgroundPaint(pStyle.getCanvasColor());
+        XYPlot xyplot = (XYPlot) pJfreechart.getPlot();
+        xyplot.setBackgroundPaint(pStyle.getPlotBackgroundColor());
+        xyplot.setDomainGridlinePaint(pStyle.getDomainGridlineColor());
+        xyplot.setRangeGridlinePaint(pStyle.getRangeGridlineColor());
+
+        Insets lOffsets = pStyle.getAxisOffset();
+        RectangleInsets lRectangleInsets = new RectangleInsets(lOffsets.mUpper,
+                lOffsets.mLeft, lOffsets.mLower, lOffsets.mRight);
+        xyplot.setAxisOffset(lRectangleInsets);
+        xyplot.setDomainCrosshairVisible(pStyle.isDomainCrosshairVisible());
+        xyplot.setRangeCrosshairVisible(pStyle.isRangeCrosshairVisible());
+
+    }
+
+    private TimeSeries createTimeSeries(String pTimeSeriesName,
+                                        Collection<Result> resultSet,
+                                        int lUpperCut, int lLowerCut,
+                                        int pStart, int pEnd, long maxGap)
+                                                  throws TechnicalChartException {
+        if (sDebug)
+            sLogger.debug("createTimeSeries()");
+        Result lRow0, lRow1;
+
+        Date lDate = null, lDate0 = null;
+
+        TimeSeries lTimeseries = new TimeSeries(pTimeSeriesName,
+                org.jfree.data.time.Minute.class);
+        try {
+            long lDateDiff = 0;
+            double lValue = 0;
+            
+            int i = 0;
+            Iterator<Result> resultIterator = resultSet.iterator();
+            while (resultIterator.hasNext()) {
+                Result lRow = resultIterator.next();
+                if (i >= pStart + 1 && i <= pEnd) {
+                    if (i == pStart + 1) {
+                        lRow0 = lRow;//
+                        lDate = lRow0.getDate("XORDINATE");
+                        lDate0 = lDate;
+                        lValue = lRow0.getDouble("YORDINATE");
+                        if (lValue > lLowerCut && lValue < lUpperCut) {
+                            // lTimeseries.addOrUpdate(new Minute(lDate),
+                            // lValue);
+                            lTimeseries.add(new Minute(lDate), lValue);
+                        }
+                    }
+                    // for (int i = pStart+1; i <= pEnd; i++) {
+                    lRow1 = lRow;
+                    lDate = lRow1.getDate("XORDINATE");
+                    lValue = lRow1.getDouble("YORDINATE");
+                    lDateDiff = lDate.getTime() - lDate0.getTime();
+                    if (lDateDiff > maxGap) {
+                        // add 1 minute in millisecs to left hand side Date
+                        // and insert Dummy to break line
+                        lDate0.setTime((lDate0.getTime() + 60000));
+                        lTimeseries.addOrUpdate(new Minute(lDate0), null);
+                        lTimeseries.addOrUpdate(new Minute(lDate), lValue);
+                        // lTimeseries.add(new Minute(lDate0), null);
+                    } else if (lDateDiff == 0) {
+                        if (sDebug)
+                            sLogger.debug("Datediff: " + lDateDiff
+                                          + " bei index : " + i + " Datum : "
+                                          + lDate + " " + lDate0);
+                    } else if (lValue > lLowerCut && lValue < lUpperCut) {
+                        lTimeseries.addOrUpdate(new Minute(lDate), lValue);
+                        // lTimeseries.add(new Minute(lDate), lValue);
+                    }
+                    lRow0 = lRow1;
+                    lDate0 = lDate;
+                } else if (i > pEnd) {
+                    return lTimeseries;
+                }
+                i++;
+            }
+
+        } catch (OutOfMemoryError e) {
+            sLogger.error(e.getMessage(), e);
+            return lTimeseries;
+
+        } catch (Exception e) { // TechnicalChartException
+            sLogger.error(e.getMessage(), e);
+        } finally {
+        }
+
+        return lTimeseries;
+    }
+
+    private XYDataset createDataset(Collection<Result> resultSet,
+                                    int lUpperCut, int lLowerCut,
+                                    Collection<KeyValueDescibeData> parameters,
+                                    Collection<KeyValueDescibeData> measurements,
+                                    Collection<TimeGap> timeGaps)
+                                                                                 throws TechnicalChartException {
+
+        TimeSeriesCollection lTimeSeriesCollection = new TimeSeriesCollection();
+        try {
+            Date dStart = null, dEnd = null;
+            String break1, break2, break3;
+            int mStart = 0;
+            int mEnd = 0;
+
+            Iterator<Result> resultIterator = resultSet.iterator();
+            if (resultIterator.hasNext()) {
+                Result row = resultIterator.next();
+
+                break1 = row.getString("GROUP1"); // 2
+                break2 = row.getString("GROUP2"); // 3
+                break3 = row.getString("GROUP3"); // 4
+                dStart = row.getDate("XORDINATE");
+                int i = 1;
+                Integer gapID = -1;
+                while (resultIterator.hasNext()) {
+                    row = resultIterator.next();
+                    if (!break1.equals(row.getString("GROUP1"))
+                        || !break2.equals(row.getString("GROUP2"))
+                        || !break3.equals(row.getString("GROUP3"))) {
+                        String mTimeSeriesName = findValueTitle(parameters,
+                                break1)
+                                                 + " "
+                                                 + findValueTitle(measurements,
+                                                         break2) + "m";
+                        long maxGap = this.calculateMaxGap(dStart, dEnd,mStart,
+                                                           mEnd, gapID.intValue(),
+                                                           timeGaps);
+                        
+                        
+                        lTimeSeriesCollection.addSeries(createTimeSeries(
+                                mTimeSeriesName, resultSet, lUpperCut,
+                                lLowerCut, mStart, mEnd,maxGap));
+                        mStart = i;
+                        dStart = row.getDate("XORDINATE");
+                        break1 = row.getString("GROUP1");
+                        break2 = row.getString("GROUP2"); // 3
+                        break3 = row.getString("GROUP3"); // 4
+
+                    }
+                    mEnd = i;
+                    dEnd = row.getDate("XORDINATE");
+                    gapID = row.getInteger("GAPID");
+                    i = i + 1;
+                }
+
+                String mTimeSeriesName = findValueTitle(parameters, break1)
+                                         + " "
+                                         + findValueTitle(measurements, break2)
+                                         + "m";
+                long maxGap = this.calculateMaxGap(dStart, dEnd,mStart, 
+                                                   mEnd,gapID.intValue(),
+                                                   timeGaps);
+                lTimeSeriesCollection.addSeries(createTimeSeries(
+                        mTimeSeriesName, resultSet, lUpperCut, lLowerCut,
+                        mStart, mEnd, maxGap));
+            }else{
+                // Es sind keine Daten vorhanden: Es wird eine Zeitserie eingefügt.
+                lTimeSeriesCollection.addSeries(createTimeSeries(
+                        "", resultSet, lUpperCut, lLowerCut,
+                        mStart, mEnd, 999999));
+            }
+        } catch (Exception e) {
+            sLogger.error(e.getMessage(), e);
+        } finally {
+        }
+        return lTimeSeriesCollection;
+    }
+
+    /**
+     * @param dStart
+     * @param dEnd
+     */
+    private long calculateMaxGap(Date dStart, Date dEnd, int pStart ,
+                                 int pEnd, int gapID, 
+                                 Collection<TimeGap> timeGaps) {
+        
+           // umgesetzt nach issue 45
+            // Handle Gaps > 0.5% timeserieslength, 
+            // i.e do not draw here
+            long maxGap = (dEnd.getTime() - dStart.getTime()) / 200; 
+            // 0,5 prozent der Länge
+            long timeInterval = this.getTimeGapValue(dStart, dEnd, pStart, 
+                                                     pEnd, gapID, timeGaps);
+            
+            if (maxGap < timeInterval){
+                maxGap = timeInterval + 10;
+            }
+//            if (maxGap < (dEnd.getTime() - dStart.getTime())
+//                         / (pEnd - pStart))
+//                maxGap = (dEnd.getTime() - dStart.getTime())
+//                         / (pEnd - pStart) + 1000;
+            
+            return maxGap;
+    }
+    
+    private long getTimeGapValue(Date dStart, Date dEnd, 
+                                 int pStart ,int pEnd, 
+                                 int gapID, Collection<TimeGap> timeGaps){
+        long gap = 0;
+        
+        if (gapID < 0 || gapID >= 99){
+            
+            if (gapID == -1){ // Mesh
+                gap = NOTIMEGAP; // Es gibt keine Lücken in Netzen.
+            }else if (pEnd-pStart < 60){
+                gap = (3/(pEnd-pStart)) * (dEnd.getTime() - dStart.getTime());
+            }
+        }else{
+            
+            Iterator<TimeGap> it = timeGaps.iterator();
+           
+            while (it.hasNext()){
+                TimeGap tempTimeGap = it.next();
+                if (tempTimeGap.getKey() == gapID){
+                    int gapValue = tempTimeGap.getValue();
+                    String unit = tempTimeGap.getUnit();
+                    
+                    if (unit.equals(TimeGap.TIME_UNIT_MINUTE)){
+                        gap = gapValue * TimeGap.MINUTE_IN_MILLIS;
+                    }else if (unit.equals(TimeGap.TIME_UNIT_HOUR)){
+                        gap = gapValue * TimeGap.HOUR_IN_MILLIS;
+                    }else if (unit.equals(TimeGap.TIME_UNIT_DAY)){
+                        gap = gapValue * TimeGap.DAY_IN_MILLIS;
+                    }else if (unit.equals(TimeGap.TIME_UNIT_WEEK)){
+                        gap = gapValue * TimeGap.WEEK_IN_MILLIS;
+                    }else if (unit.equals(TimeGap.TIME_UNIT_MONTH)){
+                        // TODO wie soll das laufen
+                        gap = gapValue * (TimeGap.DAY_IN_MILLIS *30);
+                    }else if (unit.equals(TimeGap.TIME_UNIT_YEAR)){
+                        // TODO wie soll das laufen für schaltjahre
+                        gap = gapValue * (TimeGap.DAY_IN_MILLIS *365);
+                    }
+                    break;
+                }
+            }
+        }
+        
+        return gap;
+    }
+
+    private void encodeChart(JFreeChart pChart, ChartStyle pStyle,
+                             OutputStream outputStream) throws IOException {
+        if (sDebug)
+            sLogger.debug("encodeChart()");
+        KeypointPNGEncoderAdapter lEncoder = new KeypointPNGEncoderAdapter();
+        lEncoder.setEncodingAlpha(true);
+
+        int lWidth = (int) pStyle.getChartSize().getWidth();
+        int lHeight = (int) pStyle.getChartSize().getHeight();
+
+        BufferedImage lImage = pChart.createBufferedImage(lWidth, lHeight,
+                Transparency.BITMASK, null);
+
+        lEncoder.encode(lImage, outputStream);
+
+    }
+
+    private String findValueTitle(Collection<KeyValueDescibeData> values,
+                                  String pMmtId) {
+        int id = 0;
+        try {
+            id = Integer.parseInt(pMmtId);
+        } catch (NumberFormatException e) {
+            sLogger.warn(e, e);
+            return pMmtId;
+        }
+
+        Iterator<KeyValueDescibeData> it = values.iterator();
+        while (it.hasNext()) {
+            KeyValueDescibeData data = it.next();
+            if (id == Integer.parseInt(data.getKey())) {
+                return data.getValue();
+            }
+        }
+        return "";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/ChartLabels.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,53 @@
+/* Copyright (C) 2007 con terra GmbH (http://www.conterra.de)
+ * All rights reserved
+ *
+ * $Id: ChartLabels.java,v 1.1 2007/12/10 13:57:13 drewnak Exp $
+ *
+ * created by:      drewnak
+ * created at :     10.12.2007
+ * created at :     11:48:39
+ *
+ * modified by:     $Author: drewnak $
+ * modified at:     $Date: 2007/12/10 13:57:13 $
+ */
+package de.intevation.gnv.chart;
+
+/**
+ * @author drewnak
+ * @author Tim Englich <tim.englich@intevation.de> Changes and codecleanup
+ */
+public class ChartLabels {
+    /**
+     * 
+     */
+    private String title;
+    /**
+     * 
+     */
+    private String domainAxisLabel;
+
+    /**
+     * Constructor
+     * 
+     * @param title
+     * @param domainAxisLabel
+     */
+    public ChartLabels(String title, String domainAxisLabel) {
+        this.title = title;
+        this.domainAxisLabel = domainAxisLabel;
+    }
+
+    /**
+     * @return the title
+     */
+    public String getTitle() {
+        return this.title;
+    }
+
+    /**
+     * @return the timeAxisLabel
+     */
+    public String getDomainAxisLabel() {
+        return this.domainAxisLabel;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/ChartStyle.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,170 @@
+/* Copyright (C) 2007 con terra GmbH (http://www.conterra.de)
+ * All rights reserved
+ *
+ * $Id: ChartStyle.java,v 1.2 2007/12/21 12:31:15 blume Exp $
+ *
+ * created by:      drewnak
+ * created at :     10.12.2007
+ * created at :     13:07:44
+ *
+ * modified by:     $Author: blume $
+ * modified at:     $Date: 2007/12/21 12:31:15 $
+ */
+package de.intevation.gnv.chart;
+
+import java.awt.Color;
+import java.awt.Dimension;
+
+/**
+ * @author drewnak
+ */
+public class ChartStyle {
+
+    private Color mCanvasColor;
+    private Color mPlotBackgroundColor;
+    private Color mDomainGridlineColor;
+    private Color mRangeGridlineColor;
+    private boolean mDomainCrosshairVisible;
+    private boolean mRangeCrosshairVisible;
+    private Insets mAxisOffset;
+    private boolean mOverrideDefaultChartWidth = false;
+    private Dimension mChartSize;
+
+    private boolean mUseUpperDataLevel = false;
+    private boolean mUseLowerDataLevel = false;
+    private int mUpperLevel;
+    private int mLowerLevel;
+
+    /**
+     * @param pCanvasColor
+     * @param pPlotBackgroundColor
+     * @param pDomainGridlineColor
+     * @param pRangeGridlineColor
+     * @param pDomainCrosshairVisible
+     * @param pRangeCrosshairVisible
+     * @param pAxisOffset
+     */
+    public ChartStyle(Color pCanvasColor, Color pPlotBackgroundColor,
+                      Color pDomainGridlineColor, Color pRangeGridlineColor,
+                      boolean pDomainCrosshairVisible,
+                      boolean pRangeCrosshairVisible, Insets pAxisOffset,
+                      Dimension pChartSize) {
+        super();
+        mCanvasColor = pCanvasColor;
+        mPlotBackgroundColor = pPlotBackgroundColor;
+        mDomainGridlineColor = pDomainGridlineColor;
+        mRangeGridlineColor = pRangeGridlineColor;
+        mDomainCrosshairVisible = pDomainCrosshairVisible;
+        mRangeCrosshairVisible = pRangeCrosshairVisible;
+        mAxisOffset = pAxisOffset;
+        mChartSize = pChartSize;
+    }
+
+    public Color getCanvasColor() {
+        return mCanvasColor;
+    }
+
+    public void setCanvasColor(Color pCanvasColor) {
+        mCanvasColor = pCanvasColor;
+    }
+
+    public Color getDomainGridlineColor() {
+        return mDomainGridlineColor;
+    }
+
+    public void setDomainGridlineColor(Color pDomainGridlineColor) {
+        mDomainGridlineColor = pDomainGridlineColor;
+    }
+
+    public Color getRangeGridlineColor() {
+        return mRangeGridlineColor;
+    }
+
+    public void setRangeGridlineColor(Color pRangeGridlineColor) {
+        mRangeGridlineColor = pRangeGridlineColor;
+    }
+
+    public boolean isDomainCrosshairVisible() {
+        return mDomainCrosshairVisible;
+    }
+
+    public void setDomainCrosshairVisible(boolean pDomainCrosshairVisible) {
+        mDomainCrosshairVisible = pDomainCrosshairVisible;
+    }
+
+    public boolean isRangeCrosshairVisible() {
+        return mRangeCrosshairVisible;
+    }
+
+    public void setRangeCrosshairVisible(boolean pRangeCrosshairVisible) {
+        mRangeCrosshairVisible = pRangeCrosshairVisible;
+    }
+
+    public Insets getAxisOffset() {
+        return mAxisOffset;
+    }
+
+    public void setAxisOffset(Insets pAxisOffset) {
+        mAxisOffset = pAxisOffset;
+    }
+
+    public Color getPlotBackgroundColor() {
+        return mPlotBackgroundColor;
+    }
+
+    public void setPlotBackgroundColor(Color pPlotBackgroundColor) {
+        mPlotBackgroundColor = pPlotBackgroundColor;
+    }
+
+    public Dimension getChartSize() {
+        return mChartSize;
+    }
+
+    public void setChartSize(Dimension pChartSize) {
+        mChartSize = pChartSize;
+    }
+
+    public boolean isOverrideDefaultChartWidth() {
+        return mOverrideDefaultChartWidth;
+    }
+
+    public void setOverrideDefaultChartWidth(boolean pOverrideDefaultChartWidth) {
+        mOverrideDefaultChartWidth = pOverrideDefaultChartWidth;
+    }
+
+    public void setNewChartWidth(int pNewChartWidth) {
+        mChartSize.setSize(pNewChartWidth, mChartSize.getHeight());
+    }
+
+    public boolean isUseUpperDataLevel() {
+        return mUseUpperDataLevel;
+    }
+
+    public void setUseUpperDataLevel(boolean pUseUpperDataLevel) {
+        mUseUpperDataLevel = pUseUpperDataLevel;
+    }
+
+    public boolean isUseLowerDataLevel() {
+        return mUseLowerDataLevel;
+    }
+
+    public void setUseLowerDataLevel(boolean pUseLowerDataLevel) {
+        mUseLowerDataLevel = pUseLowerDataLevel;
+    }
+
+    public int getUpperLevel() {
+        return mUpperLevel;
+    }
+
+    public void setUpperLevel(int pUpperLevel) {
+        mUpperLevel = pUpperLevel;
+    }
+
+    public int getLowerLevel() {
+        return mLowerLevel;
+    }
+
+    public void setLowerLevel(int pLowerLevel) {
+        mLowerLevel = pLowerLevel;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/HorizontalCrossSectionChartFactory.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,57 @@
+/**
+ * Title:           ChartFactory, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v 1.8 2007/12/21 12:31:15 blume Exp $
+ * Source:          $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $
+ * created by:      Stefan Blume (blume)
+ * erstellt am:     06.12.2007
+ * Copyright:       con terra GmbH, 2005
+ *
+ * modified by:     $Author: blume $
+ * modified on:     $Date: 2007/12/21 12:31:15 $
+ * Version:         $Revision: 1.8 $
+ * TAG:             $Name:  $
+ * locked from:     $Locker:  $
+ * CVS State:       $State: Exp $
+ * Project:         $ProjectName$
+ */
+package de.intevation.gnv.chart;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+import org.jfree.chart.plot.PlotOrientation;
+
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+
+/**
+ * 
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class HorizontalCrossSectionChartFactory {
+
+    /**
+     * Default Logging instance
+     */
+    private static Logger sLogger = Logger
+            .getLogger(HorizontalCrossSectionChartFactory.class);
+    private static boolean sDebug = sLogger.isDebugEnabled();
+    protected PlotOrientation plotOrientation = PlotOrientation.HORIZONTAL;
+
+    public synchronized void createProfileChart(
+                                                ChartLabels pLabels,
+                                                ChartStyle pStyle,
+                                                Collection<KeyValueDescibeData> parameters,
+                                                Collection<KeyValueDescibeData> measurements,
+                                                Collection<KeyValueDescibeData> dates,
+                                                OutputStream outputStream,
+                                                Collection<Result> resultSet)
+                                                                             throws IOException,
+                                                                             TechnicalChartException {
+        
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,136 @@
+/**
+ * Title:           ChartFactory, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v 1.8 2007/12/21 12:31:15 blume Exp $
+ * Source:          $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $
+ * created by:      Stefan Blume (blume)
+ * erstellt am:     06.12.2007
+ * Copyright:       con terra GmbH, 2005
+ *
+ * modified by:     $Author: blume $
+ * modified on:     $Date: 2007/12/21 12:31:15 $
+ * Version:         $Revision: 1.8 $
+ * TAG:             $Name:  $
+ * locked from:     $Locker:  $
+ * CVS State:       $State: Exp $
+ * Project:         $ProjectName$
+ */
+package de.intevation.gnv.chart;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.log4j.Logger;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.data.xy.XYSeries;
+
+import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.io.WKTReader;
+
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.utils.DistanceCalculator;
+
+/**
+ * 
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class HorizontalProfileChartFactory extends VerticalProfileChartFactory {
+
+    /**
+     * Default Logging instance
+     */
+    private static Logger sLogger = Logger
+            .getLogger(HorizontalProfileChartFactory.class);
+    private static boolean sDebug = sLogger.isDebugEnabled();
+    
+    private WKTReader wktReader = new WKTReader();
+
+    public HorizontalProfileChartFactory() {
+        super();
+        super.plotOrientation = PlotOrientation.VERTICAL;
+    }
+
+    /**
+     * 
+     * @param seriesName
+     * @param resultSet
+     * @param lUpperCut
+     * @param lLowerCut
+     * @param pStart
+     * @param pEnd
+     * @return
+     * @throws TechnicalChartException
+     */
+    @Override
+    protected XYSeries createXYSeries(String seriesName,
+                                      Collection<Result> resultSet,
+                                      int lUpperCut, int lLowerCut, int pStart,
+                                      int pEnd, double maxGap) throws TechnicalChartException {
+        if (sDebug)
+            sLogger.debug("createXYSeries()");
+        XYSeries series = new XYSeries(seriesName);
+        DistanceCalculator dc = new DistanceCalculator();
+        try {
+            Point lastPoint = null;
+            double distance = 0;
+            int i = 0;
+            Iterator<Result> resultIterator = resultSet.iterator();
+            while (resultIterator.hasNext()) {
+                Result lRow = resultIterator.next();
+                if (i >= pStart && i <= pEnd) {
+                    Point p = (Point)wktReader.read(lRow.getString("SHAPE"));
+                    if (lastPoint != null) {
+                        distance = distance + dc.calculateDistance(lastPoint, p);
+                    }
+                    lastPoint = p;
+                    double yValue = lRow.getDouble("YORDINATE");
+                    series.add(distance, yValue);
+                    sLogger.debug(seriesName + " Added Value " + distance + " / "
+                                  + yValue);
+                } else if (i > pEnd) {
+                    return series;
+                }
+                i++;
+            }
+            
+            if (distance > 0){
+                double scaleDistance = distance * 0.05;
+                series.add(-scaleDistance, null);
+                series.add(distance+scaleDistance, null);
+            }
+            
+        } catch (OutOfMemoryError e) {
+            sLogger.error(e.getMessage(), e);
+            return series;
+
+        } catch (Exception e) { // TechnicalChartException
+            sLogger.error(e.getMessage(), e);
+        } finally {
+        }
+        return series;
+    }
+    
+    
+    /**
+     * 
+     * @see de.intevation.gnv.chart.VerticalProfileChartFactory#createSeriesName(java.util.Collection, java.util.Collection, java.util.Collection, java.lang.String, java.lang.String, java.lang.String)
+     */
+    @Override
+    protected String createSeriesName(
+                                    Collection<KeyValueDescibeData> break1Candidates,
+                                    Collection<KeyValueDescibeData> break2Candidates,
+                                    Collection<KeyValueDescibeData> break3Candidates,
+                                    String break1, String break2, String break3) {
+        String seriesName = super.createSeriesName(break1Candidates,
+                                                   break2Candidates, 
+                                                   break3Candidates, 
+                                                   break1, 
+                                                   break2, 
+                                                   break3)
+                            +" "
+                            + findValueTitle(break3Candidates,
+                                    break3);
+        return seriesName.trim();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/Insets.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,34 @@
+/* Copyright (C) 2007 con terra GmbH (http://www.conterra.de)
+ * All rights reserved
+ *
+ * $Id: Insets.java,v 1.1 2007/12/10 13:57:13 drewnak Exp $
+ *
+ * created by:      drewnak
+ * created at :     10.12.2007
+ * created at :     13:31:12
+ *
+ * modified by:     $Author: drewnak $
+ * modified at:     $Date: 2007/12/10 13:57:13 $
+ */
+package de.intevation.gnv.chart;
+
+public class Insets {
+    public double mUpper;
+    public double mLower;
+    public double mLeft;
+    public double mRight;
+
+    /**
+     * @param pUpper
+     * @param pLower
+     * @param pLeft
+     * @param pRight
+     */
+    public Insets(double pUpper, double pLeft, double pLower, double pRight) {
+        super();
+        mUpper = pUpper;
+        mLower = pLower;
+        mLeft = pLeft;
+        mRight = pRight;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalCrossSectionChartFactory.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,57 @@
+/**
+ * Title:           ChartFactory, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v 1.8 2007/12/21 12:31:15 blume Exp $
+ * Source:          $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $
+ * created by:      Stefan Blume (blume)
+ * erstellt am:     06.12.2007
+ * Copyright:       con terra GmbH, 2005
+ *
+ * modified by:     $Author: blume $
+ * modified on:     $Date: 2007/12/21 12:31:15 $
+ * Version:         $Revision: 1.8 $
+ * TAG:             $Name:  $
+ * locked from:     $Locker:  $
+ * CVS State:       $State: Exp $
+ * Project:         $ProjectName$
+ */
+package de.intevation.gnv.chart;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+import org.jfree.chart.plot.PlotOrientation;
+
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+
+/**
+ * 
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class VerticalCrossSectionChartFactory {
+
+    /**
+     * Default Logging instance
+     */
+    private static Logger sLogger = Logger
+            .getLogger(VerticalCrossSectionChartFactory.class);
+    private static boolean sDebug = sLogger.isDebugEnabled();
+    protected PlotOrientation plotOrientation = PlotOrientation.HORIZONTAL;
+
+    public synchronized void createProfileChart(
+                                                ChartLabels pLabels,
+                                                ChartStyle pStyle,
+                                                Collection<KeyValueDescibeData> parameters,
+                                                Collection<KeyValueDescibeData> measurements,
+                                                Collection<KeyValueDescibeData> dates,
+                                                OutputStream outputStream,
+                                                Collection<Result> resultSet)
+                                                                             throws IOException,
+                                                                             TechnicalChartException {
+        
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,384 @@
+/**
+ * Title:           ChartFactory, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v 1.8 2007/12/21 12:31:15 blume Exp $
+ * Source:          $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $
+ * created by:      Stefan Blume (blume)
+ * erstellt am:     06.12.2007
+ * Copyright:       con terra GmbH, 2005
+ *
+ * modified by:     $Author: blume $
+ * modified on:     $Date: 2007/12/21 12:31:15 $
+ * Version:         $Revision: 1.8 $
+ * TAG:             $Name:  $
+ * locked from:     $Locker:  $
+ * CVS State:       $State: Exp $
+ * Project:         $ProjectName$
+ */
+package de.intevation.gnv.chart;
+
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Transparency;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.log4j.Logger;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.axis.AxisLocation;
+import org.jfree.chart.axis.NumberAxis;
+import org.jfree.chart.axis.NumberTickUnit;
+import org.jfree.chart.encoders.KeypointPNGEncoderAdapter;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.plot.XYPlot;
+import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
+import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
+import org.jfree.data.xy.XYDataset;
+import org.jfree.data.xy.XYSeries;
+import org.jfree.data.xy.XYSeriesCollection;
+import org.jfree.ui.RectangleInsets;
+
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+
+/**
+ * 
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class VerticalProfileChartFactory {
+
+    /**
+     * Default Logging instance
+     */
+    private static Logger sLogger = Logger
+            .getLogger(VerticalProfileChartFactory.class);
+    private static boolean sDebug = sLogger.isDebugEnabled();
+    protected PlotOrientation plotOrientation = PlotOrientation.HORIZONTAL;
+
+    public synchronized void createProfileChart(
+                                                ChartLabels pLabels,
+                                                ChartStyle pStyle,
+                                                Collection<KeyValueDescibeData> parameters,
+                                                Collection<KeyValueDescibeData> measurements,
+                                                Collection<KeyValueDescibeData> dates,
+                                                OutputStream outputStream,
+                                                Collection<Result> resultSet)
+                                                                             throws IOException,
+                                                                             TechnicalChartException {
+        if (sDebug)
+            sLogger.debug("createSimpleTimeSeriesChart()");
+        int lLowerLevel = Integer.MIN_VALUE;
+        int lUpperLevel = Integer.MAX_VALUE;
+        if (pStyle.isUseUpperDataLevel()
+            && pStyle.getUpperLevel() < Integer.MAX_VALUE) {
+            lUpperLevel = pStyle.getUpperLevel();
+        }
+        if (pStyle.isUseLowerDataLevel()
+            && pStyle.getLowerLevel() > Integer.MIN_VALUE) {
+            lLowerLevel = pStyle.getLowerLevel();
+        }
+        if (sDebug)
+            sLogger.debug("  vor createDataset()");
+        XYDataset lSet = this.createDataset(resultSet, lUpperLevel,
+                lLowerLevel, parameters, measurements, dates);
+        if (sDebug)
+            sLogger.debug("  nach createDataset()");
+        final Color[] color = { Color.black, Color.red, Color.green, Color.blue };
+        NumberAxis domain = new NumberAxis(pLabels.getDomainAxisLabel());
+        NumberAxis axis;
+        StandardXYItemRenderer renderer = new StandardXYItemRenderer();
+        XYPlot plot = new XYPlot();
+        // Global settings
+
+        plot.setOrientation(plotOrientation);
+        plot.setBackgroundPaint(Color.lightGray);
+        plot.setDomainGridlinePaint(Color.white);
+        plot.setRangeGridlinePaint(Color.white);
+        plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
+        // plot.getRangeAxis().setFixedDimension(10.0);
+        plot.setDomainAxis(domain);
+        plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
+        if (parameters.size() == 1) {
+            KeyValueDescibeData parameter = parameters.iterator().next();
+            axis = new NumberAxis(parameter.getValue());
+            if (parameter.getValue().contains("richtung")) {
+                NumberAxis axis1 = new NumberAxis((parameter
+                        .getValue()));// ,new Range(0.0,360.0));
+                axis1.setTickUnit(new NumberTickUnit(30.0));
+                axis1.setUpperBound(360.0);
+                axis1.setLowerBound(0.0);
+                // axis1.setDisplayRange(0.0,360.0);
+                plot.setRangeAxis(axis1);
+            } else {
+                axis.setFixedDimension(10.0);
+                axis.setAutoRangeIncludesZero(false);
+                plot.setRangeAxis(axis);
+            }
+            axis.configure();
+            plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
+            plot.setRenderer(renderer);
+            plot.setDataset(lSet);
+        } else {
+            // Individual settings for different parameters
+            for (int i = 0; i < lSet.getSeriesCount(); i++) {
+
+                plot.setDataset(i, getDataset((XYSeriesCollection) lSet, i));
+                Color mColor = color[i % color.length]; // zyklische Farbvergabe
+                mColor = color[0];
+                // if ( pParameterId.length==1){
+
+                if (((String) lSet.getSeriesKey(i)).contains("richtung")) {
+                    NumberAxis axis1 = new NumberAxis(((String) lSet
+                            .getSeriesKey(i)));// ,new Range(0.0,360.0));
+                    axis1.setTickUnit(new NumberTickUnit(30.0));
+                    // axis1.setDisplayRange(0.0,360.0);
+                    axis1.setLabelPaint(mColor);
+                    axis1.setTickLabelPaint(mColor);
+                    axis1.setUpperBound(360.0);
+                    axis1.setLowerBound(0.0);
+                    plot.setRangeAxis(i, axis1);
+
+                } else {
+                    axis = new NumberAxis((String) lSet.getSeriesKey(i));
+                    axis.setFixedDimension(10.0);
+                    axis.setAutoRangeIncludesZero(false);
+                    axis.setLabelPaint(mColor);
+                    axis.setTickLabelPaint(mColor);
+                    plot.setRangeAxis(i, axis);
+                    axis.configure();
+                }
+                if (i % 2 != 0)
+                    plot.setRangeAxisLocation(i, AxisLocation.BOTTOM_OR_RIGHT);
+                else
+                    plot.setRangeAxisLocation(i, AxisLocation.BOTTOM_OR_LEFT);
+                plot.mapDatasetToRangeAxis(i, i);
+                // }
+                renderer = new StandardXYItemRenderer();
+                renderer.setSeriesPaint(i, mColor);
+                // renderer.setSeriesStroke(i,stroke[j]);
+                plot.setRenderer(i, renderer);
+            }
+        }
+        JFreeChart chart = new JFreeChart(pLabels.getTitle(), new Font(
+                "SansSerif", Font.BOLD, 24), plot, true);
+
+        setStyle(chart, pStyle);
+        configureRenderingOptions(chart);
+        if (sDebug)
+            sLogger.debug("  vor encodeChart()");
+
+        encodeChart(chart, pStyle, outputStream);
+    }
+
+    private static XYDataset getDataset(XYSeriesCollection T, int pIndex) { // throws
+                                                                            // TechnicalChartException{
+        // if (T.getSeriesCount() < pIndex) throw TechnicalChartException();
+        XYSeriesCollection XYSC = new XYSeriesCollection();
+        XYSC.addSeries(T.getSeries(pIndex));
+        return XYSC;
+    }
+
+    private void configureRenderingOptions(JFreeChart pJfreechart) {
+        org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = ((XYPlot) pJfreechart
+                .getPlot()).getRenderer();
+        if (xyitemrenderer instanceof XYLineAndShapeRenderer) {
+            XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyitemrenderer;
+            xylineandshaperenderer.setBaseShapesVisible(true);
+            xylineandshaperenderer.setBaseShapesFilled(true);
+        }
+    }
+
+    private void setStyle(JFreeChart pJfreechart, ChartStyle pStyle) {
+        if (sDebug)
+            sLogger.debug("setStyle()");
+        pJfreechart.setBackgroundPaint(pStyle.getCanvasColor());
+        XYPlot xyplot = (XYPlot) pJfreechart.getPlot();
+        xyplot.setBackgroundPaint(pStyle.getPlotBackgroundColor());
+        xyplot.setDomainGridlinePaint(pStyle.getDomainGridlineColor());
+        xyplot.setRangeGridlinePaint(pStyle.getRangeGridlineColor());
+
+        Insets lOffsets = pStyle.getAxisOffset();
+        RectangleInsets lRectangleInsets = new RectangleInsets(lOffsets.mUpper,
+                lOffsets.mLeft, lOffsets.mLower, lOffsets.mRight);
+        xyplot.setAxisOffset(lRectangleInsets);
+        xyplot.setDomainCrosshairVisible(pStyle.isDomainCrosshairVisible());
+        xyplot.setRangeCrosshairVisible(pStyle.isRangeCrosshairVisible());
+
+    }
+
+    protected XYSeries createXYSeries(String seriesName,
+                                      Collection<Result> resultSet,
+                                      int lUpperCut, int lLowerCut, int pStart,
+                                      int pEnd, double maxGap) throws TechnicalChartException {
+        if (sDebug)
+            sLogger.debug("createXYSeries()");
+        XYSeries series = new XYSeries(seriesName);
+        try {
+            double xValue = 0;
+            double yValue = 0;
+            int i = 0;
+            Iterator<Result> resultIterator = resultSet.iterator();
+            while (resultIterator.hasNext()) {
+                Result lRow = resultIterator.next();
+                if (i >= pStart && i <= pEnd) {
+                    xValue = lRow.getDouble("XORDINATE");
+                    yValue = lRow.getDouble("YORDINATE");
+                    series.add(xValue, yValue);
+                    sLogger.debug(seriesName + " Added Value " + xValue + " / "
+                                  + yValue);
+
+                } else if (i > pEnd) {
+                    return series;
+                }
+                i++;
+            }
+        } catch (OutOfMemoryError e) {
+            sLogger.error(e.getMessage(), e);
+            return series;
+
+        } catch (Exception e) { // TechnicalChartException
+            sLogger.error(e.getMessage(), e);
+        } finally {
+        }
+
+        return series;
+    }
+
+    private XYDataset createDataset(Collection<Result> resultSet,
+                                    int lUpperCut, int lLowerCut,
+                                    Collection<KeyValueDescibeData> parameters,
+                                    Collection<KeyValueDescibeData> measurements,
+                                    Collection<KeyValueDescibeData> dates)
+                                                                                 throws TechnicalChartException {
+
+        XYSeriesCollection xyDataset = new XYSeriesCollection();
+
+        try {
+            String break1, break2, break3;
+            int mStart = 0;
+            int mEnd = 0;
+
+            Iterator<Result> resultIterator = resultSet.iterator();
+            Result firstRow = null, lastRow = null;
+            
+            double maxGap;
+            if (resultIterator.hasNext()) {
+                // Row row = new Row(sArrayStrLine);
+                Result row = resultIterator.next();
+                
+                firstRow = row;
+                lastRow = row;
+                
+                break1 = row.getString("GROUP1"); // 2
+                break2 = row.getString("GROUP2"); // 3
+                break3 = row.getString("GROUP3"); // 4
+                int i = 1;
+                while (resultIterator.hasNext()) {
+                    row = resultIterator.next();
+                    
+                    if (!break1.equals(row.getString("GROUP1"))
+                        || !break2.equals(row.getString("GROUP2"))
+                        || !break3.equals(row.getString("GROUP3"))) {
+                        String seriesName = this.createSeriesName(parameters, measurements, dates, break1, break2, break3);
+                        sLogger.debug("Neuer Datensatz " + seriesName
+                                      + "von Datensätzen " + mStart + " / "
+                                      + mEnd);
+                        
+                        maxGap = this.calculateMaxGap(firstRow, lastRow, mEnd-mStart);
+                        
+                        xyDataset.addSeries(createXYSeries(seriesName,
+                                resultSet, lUpperCut, lLowerCut, mStart, mEnd,maxGap));
+                        firstRow = row;
+                        mStart = i;
+
+                        break1 = row.getString("GROUP1");
+                        break2 = row.getString("GROUP2"); // 3
+                        break3 = row.getString("GROUP3"); // 4
+
+                    }
+                    lastRow = row;
+                    mEnd = i;
+                    // mEnd ++;
+                    i = i + 1;
+                }
+
+                String seriesName = this.createSeriesName(parameters, measurements, dates, break1, break2, break3);
+                sLogger.debug("Neuer Datensatz " + seriesName
+                              + "von Datensätzen " + mStart + " / " + mEnd);
+                
+                maxGap = this.calculateMaxGap(firstRow, lastRow, mEnd-mStart);
+                xyDataset.addSeries(createXYSeries(seriesName, resultSet,
+                        lUpperCut, lLowerCut, mStart, mEnd,maxGap));
+            }else{
+                xyDataset.addSeries(createXYSeries("",
+                        resultSet, lUpperCut, lLowerCut, mStart, mEnd,9999));
+            }
+        } catch (Exception e) {
+            sLogger.error(e.getMessage(), e);
+        } finally {
+        }
+        return xyDataset;
+    }
+    
+    
+    protected double calculateMaxGap(Result firstRow, Result lastRow, int numResults){
+        
+        double firstValue = firstRow.getDouble("YORDINATE"); 
+        // TODO Implement me. Hier ist die zentrale Frage wie wir zwischen Netzen und
+        // anderen Datenquellen unterscheiden.
+        return 0;
+    }
+
+    /**
+     * @param parameters
+     * @param measurements
+     * @param break1
+     * @param break2
+     * @return
+     */
+    protected String createSeriesName(
+                                    Collection<KeyValueDescibeData> break1Candidates,
+                                    Collection<KeyValueDescibeData> break2Candidates,
+                                    Collection<KeyValueDescibeData> break3Candidates,
+                                    String break1, String break2, String break3) {
+        String seriesName = findValueTitle(break1Candidates, break1)
+                            + " "
+                            + findValueTitle(break2Candidates,
+                                    break2);
+        return seriesName.trim();
+    }
+
+    private void encodeChart(JFreeChart pChart, ChartStyle pStyle,
+                             OutputStream outputStream) throws IOException {
+        if (sDebug)
+            sLogger.debug("encodeChart()");
+        KeypointPNGEncoderAdapter lEncoder = new KeypointPNGEncoderAdapter();
+        lEncoder.setEncodingAlpha(true);
+
+        int lWidth = (int) pStyle.getChartSize().getWidth();
+        int lHeight = (int) pStyle.getChartSize().getHeight();
+
+        BufferedImage lImage = pChart.createBufferedImage(lWidth, lHeight,
+                Transparency.BITMASK, null);
+
+        lEncoder.encode(lImage, outputStream);
+
+    }
+
+    protected String findValueTitle(Collection<KeyValueDescibeData> values,
+                                  String id) {
+        if (values != null) {
+            Iterator<KeyValueDescibeData> it = values.iterator();
+            while (it.hasNext()) {
+                KeyValueDescibeData data = it.next();
+                if (id.equals(data.getKey())) {
+                    return data.getValue();
+                }
+            }
+        }
+        return "";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/exception/TechnicalChartException.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,51 @@
+/**
+ *
+ */
+package de.intevation.gnv.chart.exception;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class TechnicalChartException extends Exception {
+
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = -5325863742368006109L;
+
+    /**
+     * Constructor
+     */
+    public TechnicalChartException() {
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param message
+     */
+    public TechnicalChartException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param cause
+     */
+    public TechnicalChartException(Throwable cause) {
+        super(cause);
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param message
+     * @param cause
+     */
+    public TechnicalChartException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/exports/DefaultDataCollector.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,48 @@
+package de.intevation.gnv.exports;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import org.apache.log4j.Logger;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.geobackend.base.ResultDescriptor;
+import de.intevation.gnv.transition.exception.TransitionException;
+
+
+/**
+ * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
+ */
+public class DefaultDataCollector
+implements Export.DataCollector
+{
+    private   Logger log = Logger.getLogger(DefaultDataCollector.class);
+
+    protected ResultDescriptor rd;
+    protected String []        names;
+
+
+    public DefaultDataCollector(String[] names) {
+        this.names = names;
+    }
+
+    public void init(Result res) {
+        rd = res.getResultDescriptor();
+    }
+
+    public String[] getData(Result result)
+    throws TransitionException {
+
+        if (rd == null)
+            init(result);
+
+        List entries = new ArrayList();
+
+        int[] indices = rd.getColumnIndices(names);
+        for (int i = 0; i < names.length; ++i) {
+            entries.add(result.getString(indices[i]));
+        }
+
+        return (String[]) entries.toArray((new String[entries.size()]));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/exports/DefaultExport.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,87 @@
+package de.intevation.gnv.exports;
+
+import org.apache.log4j.Logger;
+
+import au.com.bytecode.opencsv.CSVWriter;
+
+import java.util.List;
+import java.util.Iterator;
+import java.util.Collection;
+
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.OutputStream;
+
+import de.intevation.gnv.exports.Export.Profile;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.geobackend.base.ResultDescriptor;
+
+import de.intevation.gnv.transition.exception.TransitionException;
+
+/**
+ * @author Sascha L. Teichmann (sascha.teichmann@intevation.de)
+ * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
+ */
+public class DefaultExport
+implements   Export
+{
+    private static Logger log = Logger.getLogger(DefaultExport.class);
+
+    private Export.DataCollector collector;
+
+    public DefaultExport(Export.DataCollector collector) {
+        this.collector = collector;
+    }
+
+    protected void writeData(
+        Profile    profile, 
+        Collection result,
+        CSVWriter  writer
+    )
+    throws TransitionException {
+        log.debug("create content for export.");
+        Iterator<Result> it = result.iterator();
+
+        String[] header = profile.getHeader();
+        if (header != null)
+            writer.writeNext(header);
+
+        while (it.hasNext()) {
+            Result res = it.next();
+
+            writer.writeNext(collector.getData(res));
+        }
+    }
+
+    public void create(
+        Profile      profile,
+        OutputStream outputStream, 
+        Collection   result
+    )
+    throws
+        IOException,
+        UnsupportedEncodingException,
+        TransitionException 
+    {
+        if (result == null) {
+            String msg = "No data given for generation of " +
+                profile.getType() + " file.";
+            log.error(msg);
+            throw new TransitionException(msg);
+        }
+
+        CSVWriter writer = new CSVWriter(
+            new OutputStreamWriter(
+                outputStream,
+                profile.getEncoding()), 
+            profile.getSeparator(),
+            profile.getQuoteCharacter(),
+            profile.getEscapeCharacter()); 
+
+        writeData(profile, result, writer);
+
+        writer.close();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/exports/DefaultProfile.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,68 @@
+package de.intevation.gnv.exports;
+
+import de.intevation.gnv.geobackend.base.Result;
+
+
+/**
+ * @author Sascha L. Teichmann (sascha.teichmann@intevation.de)
+ * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
+ */
+public class DefaultProfile
+implements   Export.Profile
+{
+    protected Export.DataCollector collector;
+    protected String []            header;
+    protected String []            names;
+    protected char                 separator;
+    protected char                 escapeCharacter;
+    protected char                 quoteCharacter;
+    protected String               type;
+    protected String               encoding;
+
+    public DefaultProfile() {
+    }
+
+    public DefaultProfile(
+        String []            header,
+        char                 separator,
+        char                 escapeCharacter,
+        char                 quoteCharacter,
+        String               type,
+        String               encoding
+    ) {
+        this.header          = header;
+        this.separator       = separator;
+        this.escapeCharacter = escapeCharacter;
+        this.quoteCharacter  = quoteCharacter;
+        this.type            = type;
+        this.encoding        = encoding;
+    }
+
+    public String toString(int index, String value) {
+        return value;
+    }
+
+    public char getSeparator() {
+        return separator;
+    }
+
+    public char getEscapeCharacter() {
+        return escapeCharacter;
+    }
+
+    public char getQuoteCharacter() {
+        return quoteCharacter;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public String[] getHeader() {
+        return header;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/exports/Export.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,41 @@
+package de.intevation.gnv.exports;
+
+import java.util.Collection;
+import java.util.List;
+
+import java.io.OutputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.exception.TransitionException;
+
+/**
+ * @author Sascha L. Teichmann (sascha.teichmann@intevation.de)
+ * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
+ */
+public interface Export {
+
+    public interface Profile {
+        String toString(int column, String value);
+        char      getSeparator();
+        char      getEscapeCharacter();
+        char      getQuoteCharacter();
+        String    getType();
+        String    getEncoding();
+        String [] getHeader();
+    }
+
+    public interface DataCollector {
+        String[] getData(Result result)
+        throws TransitionException;
+    }
+
+    public void create(
+        Profile      profile,
+        OutputStream outputStream, 
+        Collection   result
+    )
+    throws IOException, UnsupportedEncodingException, TransitionException;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/exports/ShapeDataCollector.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,60 @@
+package de.intevation.gnv.exports;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import org.apache.log4j.Logger;
+
+import com.vividsolutions.jts.io.WKTReader;
+import com.vividsolutions.jts.io.ParseException;
+import com.vividsolutions.jts.geom.Point;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.exception.TransitionException;
+
+
+/**
+ * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
+ */
+public class ShapeDataCollector
+extends DefaultDataCollector
+{
+    private Logger log = Logger.getLogger(ShapeDataCollector.class);
+
+    protected WKTReader wktReader = new WKTReader();
+
+    public ShapeDataCollector(String[] names) {
+        super(names);
+    }
+
+    public String[] getData(Result result) 
+    throws TransitionException {
+
+        if (rd == null)
+            init(result);
+
+        try {
+            String [] entries = new String[names.length+1];
+            int j             = 0;
+            for (int i = 0; i < names.length; i++) {
+                
+                if (names[i].equals("SHAPE")) {
+                    Point p  = (Point)wktReader.read(result.getString("SHAPE"));
+
+                    entries[j++] = ""+p.getX();
+                    entries[j++] = ""+p.getY();
+                }
+                else {
+                    entries[j++] = result.getString(names[i]);
+                }
+            }
+
+            return entries;
+        }
+        catch (ParseException pe) {
+            log.error(pe, pe);
+            throw new TransitionException(
+                "Error occured while parsing a Point from WKT.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/exports/SimpleOdvDataCollector.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,77 @@
+package de.intevation.gnv.exports;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Date;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+
+import org.apache.log4j.Logger;
+
+import com.vividsolutions.jts.io.WKTReader;
+import com.vividsolutions.jts.io.ParseException;
+import com.vividsolutions.jts.geom.Point;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.exception.TransitionException;
+
+/**
+ * @author Ingo Weinzierl (ingo.weinzierl@intevation.de)
+ */
+public class SimpleOdvDataCollector
+extends ShapeDataCollector
+{
+    private static Logger log = Logger.getLogger(SimpleOdvDataCollector.class);
+
+    public static final String SRC_FORMAT  = "yyyy.MM.dd HH:mm:ss";
+    public static final String DEST_FORMAT = "yyyy-MM-dd HH:mm";
+
+    public static DateFormat srcFormat  = new SimpleDateFormat(SRC_FORMAT);
+    public static DateFormat destFormat = new SimpleDateFormat(DEST_FORMAT);
+
+    public SimpleOdvDataCollector(String[] names) {
+        super(names);
+    }
+
+    public String[] getData(Result result)
+    throws TransitionException
+    {
+        if (rd == null)
+            init(result);
+
+        try {
+            String [] entries = new String[names.length+1];
+            int j             = 0;
+            for (int i = 0; i < names.length; i++) {
+                
+                if (names[i].equals("SHAPE")) {
+                    Point p  = (Point)wktReader.read(result.getString("SHAPE"));
+
+                    entries[j++] = ""+p.getX();
+                    entries[j++] = ""+p.getY();
+                }
+                // Change the datetime format from yyyy.MM.dd HH:mm:ss to 
+                // yyyy-MM-dd HH:mm
+                else if (names[i].equals("TIMEVALUE")) {
+                    Date source  = srcFormat.parse(result.getString(names[i]));
+                    entries[j++] = destFormat.format(source);
+                }
+                else {
+                    entries[j++] = result.getString(names[i]);
+                }
+            }
+
+            return entries;
+        }
+        catch (ParseException pe) {
+            log.error(pe, pe);
+            throw new TransitionException(
+                "Error occured while parsing source data.");
+        }
+        catch (java.text.ParseException pe) {
+            log.error(pe, pe);
+            throw new TransitionException(
+                "Error occured while parsing source data.");
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package de.intevation.gnv.profile.horizontal;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.artifacts.CallContext;
+import de.intevation.gnv.artifacts.GNVArtifactBase;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class HorizontalProfileArtifact extends GNVArtifactBase {
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(HorizontalProfileArtifact.class);
+    /**
+     *
+     */
+    private static final long serialVersionUID = -721831166719594662L;
+
+    /**
+     * Constructor
+     */
+    public HorizontalProfileArtifact() {
+        super();
+        log.debug("HorizontalProfileArtifact.Constructor");
+        this.name = "horizontalProfile";
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public Document describe(Document data, CallContext context) {
+        log.debug("HorizontalProfileArtifact.describe");
+        return super.createDescibeOutput(context.getMeta(), 
+                                         super.identifier,
+                                         this.getIncludeUIFromDocument(data));
+    }
+
+    /**
+     * @see de.intevation.gnv.artifacts.GNVArtifactBase#setup(java.lang.String,
+     *      de.intevation.artifacts.ArtifactFactory, java.lang.Object)
+     */
+    @Override
+    public void setup(String identifier, ArtifactFactory factory, Object context) {
+        log.debug("HorizontalProfileArtifact.setup");
+        super.setup(identifier, factory, context);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileInstantaneousPointArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,33 @@
+/**
+ *
+ */
+package de.intevation.gnv.profile.horizontal;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class HorizontalProfileInstantaneousPointArtifact extends
+                                                        HorizontalProfileArtifact {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(HorizontalProfileInstantaneousPointArtifact.class);
+
+    /**
+     * The UID of this Class.
+     */
+    private static final long serialVersionUID = -6700816287500004553L;
+
+    /**
+     * Constructor
+     */
+    public HorizontalProfileInstantaneousPointArtifact() {
+        super();
+        log.debug("HorizontalProfileInstantaneousPointArtifact.Constructor");
+        super.name = super.name + "InstantaneousPoint";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileMeshArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,32 @@
+/**
+ *
+ */
+package de.intevation.gnv.profile.horizontal;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class HorizontalProfileMeshArtifact extends HorizontalProfileArtifact {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(HorizontalProfileMeshArtifact.class);
+
+    /**
+     * The UID of this class
+     */
+    private static final long serialVersionUID = -8291547966693867205L;
+
+    /**
+     * Constructor
+     */
+    public HorizontalProfileMeshArtifact() {
+        super();
+        log.debug("VerticalProfileMeshArtifact.Constructor");
+        super.name = super.name + "Mesh";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontalcrosssection/HorizontalCrossSectionMeshArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package de.intevation.gnv.profile.horizontalcrosssection;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.artifacts.CallContext;
+import de.intevation.gnv.artifacts.GNVArtifactBase;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class HorizontalCrossSectionMeshArtifact extends GNVArtifactBase {
+    /**
+     *
+     */
+    private static final long serialVersionUID = -2687278172203755640L;
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(HorizontalCrossSectionMeshArtifact.class);
+
+
+    /**
+     * Constructor
+     */
+    public HorizontalCrossSectionMeshArtifact() {
+        super();
+        log.debug("HorizontalCrossSectionMeshArtifact.Constructor");
+        this.name = "horizontalCrossSectionMesh";
+    }
+    
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public Document describe(Document data, CallContext context) {
+        log.debug("HorizontalCrossSectionMeshArtifact.describe");
+        return super.createDescibeOutput(context.getMeta(), 
+                super.identifier,
+                this.getIncludeUIFromDocument(data));
+    }
+
+    /**
+     * @see de.intevation.gnv.artifacts.GNVArtifactBase#setup(java.lang.String,
+     *      de.intevation.artifacts.ArtifactFactory, java.lang.Object)
+     */
+    @Override
+    public void setup(String identifier, ArtifactFactory factory, Object context) {
+        log.debug("HorizontalCrossSectionMeshArtifact.setup");
+        super.setup(identifier, factory, context);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,57 @@
+/**
+ *
+ */
+package de.intevation.gnv.profile.vertical;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.artifacts.CallContext;
+import de.intevation.gnv.artifacts.GNVArtifactBase;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class VerticalProfileArtifact extends GNVArtifactBase {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(VerticalProfileArtifact.class);
+
+    /**
+     * The UID of this class
+     */
+    private static final long serialVersionUID = -8291547966693867205L;
+
+    /**
+     * Constructor
+     */
+    public VerticalProfileArtifact() {
+        super();
+        log.debug("VerticalProfileArtifact.Constructor");
+        this.name = "verticalProfile";
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public Document describe(Document data, CallContext context) {
+        log.debug("VerticalProfileArtifact.describe");
+        return super.createDescibeOutput(context.getMeta(), 
+                super.identifier,
+                this.getIncludeUIFromDocument(data));
+    }
+
+    /**
+     * @see de.intevation.gnv.artifacts.GNVArtifactBase#setup(java.lang.String,
+     *      de.intevation.artifacts.ArtifactFactory, java.lang.Object)
+     */
+    @Override
+    public void setup(String identifier, ArtifactFactory factory, Object context) {
+        log.debug("VerticalProfileArtifact.setup");
+        super.setup(identifier, factory, context);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileInstantaneousPointArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,33 @@
+/**
+ *
+ */
+package de.intevation.gnv.profile.vertical;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class VerticalProfileInstantaneousPointArtifact extends
+                                                      VerticalProfileArtifact {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(VerticalProfileInstantaneousPointArtifact.class);
+
+    /**
+     * The UID of this class
+     */
+    private static final long serialVersionUID = -8291547966693867205L;
+
+    /**
+     * Constructor
+     */
+    public VerticalProfileInstantaneousPointArtifact() {
+        super();
+        log.debug("VerticalProfileInstantaneousPointArtifact.Constructor");
+        super.name = super.name + "InstantaneousPoint";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileMeshArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,32 @@
+/**
+ *
+ */
+package de.intevation.gnv.profile.vertical;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class VerticalProfileMeshArtifact extends VerticalProfileArtifact {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(VerticalProfileMeshArtifact.class);
+
+    /**
+     * The UID of this class
+     */
+    private static final long serialVersionUID = -8291547966693867205L;
+
+    /**
+     * Constructor
+     */
+    public VerticalProfileMeshArtifact() {
+        super();
+        log.debug("VerticalProfileMeshArtifact.Constructor");
+        super.name = super.name + "Mesh";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package de.intevation.gnv.profile.verticalcrosssection;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.artifacts.CallContext;
+import de.intevation.gnv.artifacts.GNVArtifactBase;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class VerticalCrossSectionMeshArtifact extends GNVArtifactBase {
+    /**
+     *
+     */
+    private static final long serialVersionUID = -2687278172203755640L;
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(VerticalCrossSectionMeshArtifact.class);
+
+
+    /**
+     * Constructor
+     */
+    public VerticalCrossSectionMeshArtifact() {
+        super();
+        log.debug("VerticalCrossSectionMeshArtifact.Constructor");
+        this.name = "verticalCrossSectionMesh";
+    }
+    
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public Document describe(Document data, CallContext context) {
+        log.debug("VerticalCrossSectionMeshArtifact.describe");
+        return super.createDescibeOutput(context.getMeta(), 
+                super.identifier,
+                this.getIncludeUIFromDocument(data));
+    }
+
+    /**
+     * @see de.intevation.gnv.artifacts.GNVArtifactBase#setup(java.lang.String,
+     *      de.intevation.artifacts.ArtifactFactory, java.lang.Object)
+     */
+    @Override
+    public void setup(String identifier, ArtifactFactory factory, Object context) {
+        log.debug("VerticalCrossSectionMeshArtifact.setup");
+        super.setup(identifier, factory, context);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,86 @@
+/**
+ *
+ */
+package de.intevation.gnv.statistics;
+
+import java.sql.SQLException;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+
+import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.io.ParseException;
+import com.vividsolutions.jts.io.WKTReader;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.utils.DistanceCalculator;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class HorizontalProfileStatistics extends TimeseriesStatistics {
+    
+    private static Logger log = Logger.getLogger(HorizontalProfileStatistics.class);
+
+    private WKTReader wktReader = new WKTReader();
+    
+    private DistanceCalculator dc = new DistanceCalculator();
+    
+    private double distance = 0;
+    
+    /**
+     * Constructor
+     */
+    public HorizontalProfileStatistics() {
+        super();
+    }
+
+    /**
+     * @see de.intevation.gnv.statistics.TimeseriesStatistics#calculateXOrdinateValue(de.intevation.gnv.geobackend.base.Result, de.intevation.gnv.geobackend.base.Result)
+     */
+    @Override
+    protected double calculateXOrdinateValue(Result previousRow,Result row)
+                     throws SQLException {
+        try {
+            Point start = (Point)this.wktReader.read(previousRow.getString("SHAPE"));
+            Point current = (Point)this.wktReader.read(row.getString("SHAPE"));
+            double delta = this.dc.calculateDistance(start, current);
+            
+            if (!Double.isNaN(delta)){
+                this.distance = this.distance + delta;
+            }
+        } catch (ParseException e) {
+            log.error(e,e);
+        }
+        return this.distance;
+    }
+
+    /**
+     * @see de.intevation.gnv.statistics.TimeseriesStatistics#generateStatisticsName(java.lang.String, java.lang.String, java.lang.String, java.util.Collection, java.util.Collection, java.util.Collection)
+     */
+    @Override
+    protected String generateStatisticsName(
+                                            String break1,
+                                            String break2,
+                                            String break3,
+                                            Collection<KeyValueDescibeData> parameters,
+                                            Collection<KeyValueDescibeData> measurements,
+                                            Collection<KeyValueDescibeData> dates) {
+        return (this.findValueTitle(parameters, break1)+ " "+ 
+                this.findValueTitle(measurements,break2)).trim()+" "+
+                this.findValueTitle(dates,break3);
+    }
+    
+    /**
+     * @see de.intevation.gnv.statistics.TimeseriesStatistics#clearStatistics()
+     */
+    @Override
+    protected void clearStatistics() {
+        log.debug("HorizontalProfileStatistics.clearStatistics");
+        super.clearStatistics();
+        this.distance = 0;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/Statistic.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,61 @@
+/**
+ * Title:           Statistic, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/Statistic.java,v 1.2 2007/12/21 12:31:15 blume Exp $
+ * Source:          $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/Statistic.java,v $
+ * created by:      Stefan Blume (blume)
+ * erstellt am:     14.12.2007
+ * Copyright:       con terra GmbH, 2005
+ *
+ * modified by:     $Author: blume $
+ * modified on:     $Date: 2007/12/21 12:31:15 $
+ * Version:         $Revision: 1.2 $
+ * TAG:             $Name:  $
+ * locked from:     $Locker:  $
+ * CVS State:       $State: Exp $
+ * Project:         $ProjectName$
+ */
+package de.intevation.gnv.statistics;
+
+import org.apache.log4j.Logger;
+
+/**
+ * The class <code>Statistic</code> fulfills the following purposes:
+ * <ol>
+ * <li></li>
+ * </ol>
+ * 
+ * @author blume
+ * @version 1.0
+ * @serial 1.0
+ * @see
+ * @since 14.12.2007 09:38:18
+ */
+public class Statistic {
+
+    /**
+     * Default Logging instance
+     */
+    private static Logger sLogger = Logger.getLogger(Statistic.class);
+    private static boolean sDebug = sLogger.isDebugEnabled();
+
+    private double mValue;
+    private String mKey;
+
+    public Statistic(String pKey, double pValue) {
+        mKey = pKey;
+        mValue = pValue;
+    }
+
+    public double getValue() {
+        return mValue;
+    }
+
+    public String getKey() {
+        return mKey;
+    }
+
+    public String getStringValue() {
+        java.text.DecimalFormat df = new java.text.DecimalFormat("#.##");
+        return df.format(mValue);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/StatisticSet.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,40 @@
+/**
+ *
+ */
+package de.intevation.gnv.statistics;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ *
+ */
+public class StatisticSet {
+
+    
+    private String name = null;
+    
+    private Collection<Statistic> statistics = new ArrayList<Statistic>();
+    
+    /**
+     * Constructor
+     */
+    public StatisticSet(String name) {
+        this.name = name;
+    }
+    
+    
+    public void addStatistic(Statistic statistic){
+        this.statistics.add(statistic);
+    }
+    
+    public Collection<Statistic> getStatistics(){
+        return this.statistics;
+    }
+    
+    public String getName(){
+        return this.name;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/Statistics.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,55 @@
+/**
+ * Title:           Statistics, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/Statistics.java,v 1.2 2008/01/30 12:38:34 blume Exp $
+ * Source:          $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/Statistics.java,v $
+ * created by:      Stefan Blume (blume)
+ * erstellt am:     14.12.2007
+ * Copyright:       con terra GmbH, 2005
+ *
+ * modified by:     $Author: blume $
+ * modified on:     $Date: 2008/01/30 12:38:34 $
+ * Version:         $Revision: 1.2 $
+ * TAG:             $Name:  $
+ * locked from:     $Locker:  $
+ * CVS State:       $State: Exp $
+ * Project:         $ProjectName$
+ */
+package de.intevation.gnv.statistics;
+
+import java.util.Collection;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.statistics.exception.StatisticsException;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+
+/**
+ * The interface <code>Statistics</code> fulfills the following purposes:
+ * <ol>
+ * <li>Providng a marker interface for statistics.</li>
+ * </ol>
+ * 
+ * @author blume
+ * @version 1.0
+ * @serial 1.0
+ * @see
+ * @since 14.12.2007 09:34:32
+ */
+public interface Statistics {
+
+   /**
+    * 
+    * @param resultSet
+    * @param parameters
+    * @param measurements
+    * @param dates
+    * @return
+    * @throws StatisticsException
+    */
+    public Collection<StatisticSet>  calculateStatistics(
+                                                     Collection<Result> resultSet,
+                                                     Collection<KeyValueDescibeData> parameters,
+                                                     Collection<KeyValueDescibeData> measurements,
+                                                     Collection<KeyValueDescibeData> dates
+                                                     )
+                                                    throws StatisticsException;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,230 @@
+/**
+ * Title:           TimeseriesStatistics, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v 1.3 2008/08/18 14:50:33 drewnak Exp $
+ * Source:          $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v $
+ * created by:      Stefan Blume (blume)
+ * erstellt am:     06.12.2007
+ * Copyright:       con terra GmbH, 2005
+ *
+ * modified by:     $Author: drewnak $
+ * modified on:     $Date: 2008/08/18 14:50:33 $
+ * Version:         $Revision: 1.3 $
+ * TAG:             $Name:  $
+ * locked from:     $Locker:  $
+ * CVS State:       $State: Exp $
+ * Project:         $ProjectName$
+ */
+package de.intevation.gnv.statistics;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.commons.math.stat.descriptive.DescriptiveStatistics;
+import org.apache.commons.math.stat.regression.SimpleRegression;
+import org.apache.log4j.Logger;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.statistics.exception.StatisticsException;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+
+/**
+ * The class <code>TimeseriesStatistics</code> fulfills the following purposes:
+ * <ol>
+ * <li></li>
+ * </ol>
+ * 
+ * @author blume
+ * @author Tim Englich <tim.englich@intevation.de>
+ * @version 1.0
+ * @serial 1.0
+ * @see
+ * @since 06.12.2007 18:02:27
+ */
+public class TimeseriesStatistics implements Statistics {
+
+    /**
+     * Default Logging instance
+     */
+    private static Logger log = Logger.getLogger(TimeseriesStatistics.class);
+
+    /**
+     * Constructor
+     */
+    public TimeseriesStatistics() {
+        super();
+    }
+
+    /**
+     * @see de.intevation.gnv.statistics.Statistics#calculateStatistics(java.util.Collection, java.util.Collection, java.util.Collection, java.util.Collection)
+     */
+    public Collection<StatisticSet> calculateStatistics(
+                                                     Collection<Result> resultSet,
+                                                     Collection<KeyValueDescibeData> parameters,
+                                                     Collection<KeyValueDescibeData> measurements,
+                                                     Collection<KeyValueDescibeData> dates
+                                                     )
+                                                     throws StatisticsException {
+        this.clearStatistics();
+        DescriptiveStatistics lStatistics = null;
+        SimpleRegression lRegression = null;
+        Collection<StatisticSet> statisticSets = new ArrayList<StatisticSet>();
+        String break1, break2, break3;
+        int lSeries = 1;
+        try {
+
+            Iterator<Result> resultIterator = resultSet.iterator();
+            if (resultIterator.hasNext()) {
+                Result row = resultIterator.next();
+                Result previousRow = row;
+                break1 = row.getString("GROUP1");
+                break2 = row.getString("GROUP2");
+                break3 = row.getString("GROUP3");
+                lRegression = new SimpleRegression();
+                lStatistics = DescriptiveStatistics.newInstance();
+                while (resultIterator.hasNext()) {
+
+                    if (!break1.equals(row.getString("GROUP1"))
+                        || !break2.equals(row.getString("GROUP2"))
+                        || !break3.equals(row.getString("GROUP3"))
+                        ) {
+                        String statisticsName = this.generateStatisticsName(break1, break2, 
+                                                                            break3, parameters, 
+                                                                            measurements, dates);
+                        statisticSets.add(this.generateStatisticsValues(lStatistics, 
+                                                                        lRegression,
+                                                                        statisticsName));
+
+                        lStatistics.clear();
+                        lRegression.clear();
+                        
+                        this.clearStatistics();
+
+                        lStatistics.addValue(row.getDouble("YORDINATE"));
+                        Double x = this.calculateXOrdinateValue(previousRow,row);
+                        lRegression.addData(x, row.getDouble("YORDINATE"));
+
+                        break1 = row.getString("GROUP1");
+                        break2 = row.getString("GROUP2");
+                        break3 = row.getString("GROUP3");
+                        previousRow = row;
+                        row = resultIterator.next();
+                        lSeries++;
+                    } else {
+
+                        lStatistics.addValue(row.getDouble("YORDINATE"));
+                        Double x = this.calculateXOrdinateValue(previousRow, row);
+                        lRegression.addData(x, row.getDouble("YORDINATE"));
+                        previousRow = row;
+                        row = resultIterator.next();
+                    }
+
+                }
+                String statisticsName = this.generateStatisticsName(break1, break2, 
+                                                                    break3, parameters, 
+                                                                    measurements, dates);
+                
+                statisticSets.add(this.generateStatisticsValues(lStatistics, 
+                                                                lRegression, 
+                                                                statisticsName));
+                lStatistics.clear();
+                lRegression.clear();
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+
+        return statisticSets;
+    }
+
+    protected void clearStatistics(){}
+    
+    /**
+     * 
+     * @param break1
+     * @param break2
+     * @param break3
+     * @param parameters
+     * @param measurements
+     * @param dates
+     * @return
+     */
+    protected String generateStatisticsName(String break1, 
+                                            String break2,
+                                            String break3,
+                                            Collection<KeyValueDescibeData> parameters,
+                                            Collection<KeyValueDescibeData> measurements,
+                                            Collection<KeyValueDescibeData> dates){
+        log.debug("TimeseriesStatistics.generateStatisticsName");
+        return this.findValueTitle(parameters,break1)+ " "+
+               this.findValueTitle(measurements,break2) + "m";
+    }
+    
+    
+    protected String findValueTitle(Collection<KeyValueDescibeData> values,
+                                  String id) {
+        log.debug("TimeseriesStatistics.findValueTitle "+ id);
+        if (values != null) {
+            Iterator<KeyValueDescibeData> it = values.iterator();
+            while (it.hasNext()) {
+                KeyValueDescibeData data = it.next();
+                if (id.equals(data.getKey())) {
+                    return data.getValue();
+                }
+            }
+        }
+        return "";
+    }
+    protected double calculateXOrdinateValue(Result previousRow, Result row) throws SQLException {
+        return new Double((row.getDate("XORDINATE")).getTime() / 1000 / 3600);
+    }
+
+    /**
+     * @param lStatistics
+     * @param lRegression
+     * @param lStats
+     * @param lSeries
+     */
+    private StatisticSet generateStatisticsValues(DescriptiveStatistics lStatistics,
+                                     SimpleRegression lRegression, String  statisticName) {
+        
+        StatisticSet statisticSet = new StatisticSet(statisticName);
+        
+        statisticSet.addStatistic(new Statistic(
+                "gnviewer.statistics.descriptive.arithmeticMean", lStatistics
+                        .getMean()));
+        statisticSet.addStatistic(new Statistic(
+                "gnviewer.statistics.descriptive.kurtosis", lStatistics
+                        .getKurtosis()));
+        statisticSet.addStatistic(new Statistic("gnviewer.statistics.descriptive.max",
+                lStatistics.getMax()));
+        statisticSet.addStatistic(new Statistic("gnviewer.statistics.descriptive.min",
+                lStatistics.getMin()));
+        statisticSet.addStatistic(new Statistic("gnviewer.statistics.descriptive.n",
+                lStatistics.getN()));
+        statisticSet.addStatistic(new Statistic(
+                "gnviewer.statistics.descriptive.percentile.90", lStatistics
+                        .getPercentile(90)));
+        statisticSet.addStatistic(new Statistic(
+                "gnviewer.statistics.descriptive.percentile.75", lStatistics
+                        .getPercentile(75)));
+        statisticSet.addStatistic(new Statistic(
+                "gnviewer.statistics.descriptive.percentile.50", lStatistics
+                        .getPercentile(50)));
+        statisticSet.addStatistic(new Statistic(
+                "gnviewer.statistics.descriptive.percentile.10", lStatistics
+                        .getPercentile(10)));
+        statisticSet.addStatistic(new Statistic(
+                "gnviewer.statistics.descriptive.deviation", lStatistics
+                        .getStandardDeviation()));
+        statisticSet.addStatistic(new Statistic(
+                "gnviewer.statistics.descriptive.variance", lStatistics
+                        .getVariance()));
+        statisticSet.addStatistic(new Statistic(
+                "gnviewer.statistics.descriptive.intercept", lRegression
+                        .getIntercept()));
+        statisticSet.addStatistic(new Statistic("gnviewer.statistics.descriptive.slope",
+                lRegression.getSlope()));
+        return statisticSet;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/VerticalProfileStatistics.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,45 @@
+/**
+ *
+ */
+package de.intevation.gnv.statistics;
+
+import java.sql.SQLException;
+import java.util.Collection;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class VerticalProfileStatistics extends TimeseriesStatistics {
+
+    /**
+     * Constructor
+     */
+    public VerticalProfileStatistics() {
+        super();
+    }
+
+    @Override
+    protected double calculateXOrdinateValue(Result previousRow, Result row) throws SQLException {
+        return row.getDouble("XORDINATE");
+    }
+
+    @Override
+    protected String generateStatisticsName(
+                                            String break1,
+                                            String break2,
+                                            String break3,
+                                            Collection<KeyValueDescibeData> parameters,
+                                            Collection<KeyValueDescibeData> measurements,
+                                            Collection<KeyValueDescibeData> dates) {
+        
+        return (this.findValueTitle(parameters, break1)+ " "+ 
+               this.findValueTitle(measurements,break2)).trim();
+    }
+    
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/exception/StatisticsException.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,51 @@
+/**
+ *
+ */
+package de.intevation.gnv.statistics.exception;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class StatisticsException extends Exception {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -7324280565076343394L;
+
+    /**
+     * Constructor
+     */
+    public StatisticsException() {
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param arg0
+     */
+    public StatisticsException(String arg0) {
+        super(arg0);
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param arg0
+     */
+    public StatisticsException(Throwable arg0) {
+        super(arg0);
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param arg0
+     * @param arg1
+     */
+    public StatisticsException(String arg0, Throwable arg1) {
+        super(arg0, arg1);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,57 @@
+/**
+ *
+ */
+package de.intevation.gnv.timeseries;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.artifacts.CallContext;
+import de.intevation.gnv.artifacts.GNVArtifactBase;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class TimeSeriesArtifact extends GNVArtifactBase {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(TimeSeriesArtifact.class);
+
+    /**
+     * The UID of this class
+     */
+    private static final long serialVersionUID = -8291547966693867205L;
+
+    /**
+     * Constructor
+     */
+    public TimeSeriesArtifact() {
+        super();
+        log.debug("TimeSeriesArtifact.Constructor");
+        this.name = "timeSeries";
+    }
+
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
+     */
+    @Override
+    public Document describe(Document data, CallContext context) {
+        log.debug("TimeSeriesArtifact.describe");
+        return super.createDescibeOutput(context.getMeta(), 
+                super.identifier,
+                this.getIncludeUIFromDocument(data));
+    }
+
+    /**
+     * @see de.intevation.gnv.artifacts.GNVArtifactBase#setup(java.lang.String,
+     *      de.intevation.artifacts.ArtifactFactory, java.lang.Object)
+     */
+    @Override
+    public void setup(String identifier, ArtifactFactory factory, Object context) {
+        log.debug("TimeSeriesArtifact.setup");
+        super.setup(identifier, factory, context);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/timeseries/TimeSeriesMeshArtifact.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,19 @@
+package de.intevation.gnv.timeseries;
+
+public class TimeSeriesMeshArtifact extends TimeSeriesArtifact {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 5680432486700275986L;
+
+    /**
+     * 
+     * Constructor
+     */
+    public TimeSeriesMeshArtifact() {
+        super();
+        super.name = super.name + "Mesh";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/timeseries/gap/DefaultTimeGap.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,64 @@
+/**
+ *
+ */
+package de.intevation.gnv.timeseries.gap;
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ *
+ */
+public class DefaultTimeGap implements TimeGap{
+
+    /**
+     * The UNIT of the TimeGap
+     * See the Constants in de.intevation.gnv.timeseries.gap.TimeGap
+     */
+    private String unit;
+    
+    /**
+     * The Key of the TimeGap which must be äquivalent to the
+     * Key used in the DWH
+     */
+    private int key;
+    
+    /**
+     * The Value of the Gap.
+     * Use the Unit and the Time Constants to Calculate the
+     * value in Milliseconds
+     */
+    private int value;
+    
+    /**
+     * Constructor
+     * @param unit
+     * @param key
+     * @param value
+     */
+    public DefaultTimeGap(String unit, int key, int value) {
+        super();
+        this.unit = unit;
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * @see de.intevation.gnv.timeseries.gap.TimeGap#getUnit()
+     */
+    public String getUnit() {
+        return this.unit;
+    }
+
+    /**
+     * @see de.intevation.gnv.timeseries.gap.TimeGap#getKey()
+     */
+    public int getKey() {
+        return this.key;
+    }
+
+    /**
+     * @see de.intevation.gnv.timeseries.gap.TimeGap#getValue()
+     */
+    public int getValue() {
+        return this.value;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/timeseries/gap/TimeGap.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,35 @@
+package de.intevation.gnv.timeseries.gap;
+public interface TimeGap {
+    
+    public final static String TIME_UNIT_MINUTE = "m";
+    public final static String TIME_UNIT_HOUR = "h";
+    public final static String TIME_UNIT_DAY = "D";
+    public final static String TIME_UNIT_WEEK = "W";
+    public final static String TIME_UNIT_MONTH = "M";
+    public final static String TIME_UNIT_YEAR = "Y";
+    
+    public final static long  MINUTE_IN_MILLIS = 60 * 1000;
+    public final static long  HOUR_IN_MILLIS = 60 * MINUTE_IN_MILLIS;
+    public final static long  DAY_IN_MILLIS = 24 * HOUR_IN_MILLIS;
+    public final static long  WEEK_IN_MILLIS = 7 * DAY_IN_MILLIS;
+    
+    
+    /**
+     * Returns the Lookup-Key for the TimeGap
+     * @return
+     */
+    int getKey();
+    
+    /**
+     * Returns the Value of the TimeValue in the Unit which is also given.
+     * @return
+     */
+    int getValue();
+    
+    /**
+     * Returns the Unit of the Timegap (e.g. Minutes, Hours, Days, Weeks, Months, Years)
+     * @return
+     */
+    String getUnit();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/CoordinateSelectionTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,138 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.log4j.Logger;
+
+import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.io.ParseException;
+import com.vividsolutions.jts.io.WKTReader;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.describedata.DefaultKeyValueDescribeData;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.transition.describedata.NamedArrayList;
+import de.intevation.gnv.transition.describedata.NamedCollection;
+import de.intevation.gnv.utils.InputValidator;
+import de.intevation.gnv.utils.exception.ValidationException;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ *
+ */
+public class CoordinateSelectionTransition extends TransitionBase {
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(CoordinateSelectionTransition.class);
+    
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = 6318923553625195063L;
+
+    /**
+     * Constructor
+     */
+    public CoordinateSelectionTransition() {
+        super();
+    }
+
+    @Override
+    protected void purifyResult(Collection<Result> result, String uuid) {
+        log.debug("CoordinateSelectionTransition.purifyResult");
+        Collection<Object> describeData = this.getDescibeData(uuid);
+        if (describeData == null) {
+            describeData = new ArrayList<Object>();
+        }
+        NamedCollection<KeyValueDescibeData> keyValueDescibeData = this
+                .extractKVP(result, "FEATUREID", "SHAPE");
+        describeData.add(keyValueDescibeData);
+        this.setDescibeData(uuid, describeData);
+    }
+    
+    @Override
+    protected String prepareInputData4RegionDBQuery(String value) {
+        log.debug("CoordinateSelectionTransition.prepareInputData4RegionDBQuery");
+        double distance=0.;
+        String returnValue = null;
+        try {
+            Point center = new InputValidator().getPointValue(value);
+            String meshIDValue = super.inputData.get("meshid").getValue();
+            int segments = 97;
+            int meshid = new Integer(meshIDValue);
+            if (meshid == 3 || meshid == 5){ // TODO nicht hier festbrennen.
+                distance = 0.15; //nord-ostsee 6nm // 97 Stützpunkte
+            }else if (meshid == 1 || meshid == 4){
+                distance = 0.03; //Kuestenmodell 1 nm
+            }else if (meshid == 2 || meshid == 321){
+                distance = 0.3; //SST Karten ca 20km
+            }else if (meshid == 641){
+                distance = 0.3; //Eisdaten Klima
+            }
+            returnValue = center.buffer(distance,segments).toText();
+        } catch (NumberFormatException e) {
+            log.error(e,e);
+        } catch (ValidationException e) {
+            log.error(e,e);
+        }
+        return returnValue;
+        
+    }
+    
+    /**
+     * @see de.intevation.gnv.transition.TransitionBase#extractKVP(java.util.Collection, java.lang.String, java.lang.String)
+     */
+    @Override
+    protected NamedCollection<KeyValueDescibeData> extractKVP(
+            Collection<Result> result,
+            String keyid,
+            String valueid) {
+        Iterator<Result> rit = result.iterator();
+        NamedCollection<KeyValueDescibeData> keyValueDescibeData = new NamedArrayList<KeyValueDescibeData>(
+        this.dataName, result.size());
+        keyValueDescibeData.setMultiSelect(this.dataMultiSelect);
+        String prevKey = null;
+        while (rit.hasNext()) {
+            Result resultValue = rit.next();
+            String key = resultValue.getString(keyid);
+            if(prevKey == null || !prevKey.equals(key)){ // müssen wir so machen, da die sde kein select distinct auf layern zulässt.
+                String geomString = this.convert2DisplayCoordinate(resultValue.getString(valueid));
+                String value = geomString;
+                if (resultValue.getResultDescriptor().getColumnIndex("VALUE") > 0){
+                    value = resultValue.getString("VALUE") + " - "+value;
+                }
+                
+                
+                keyValueDescibeData.add(new DefaultKeyValueDescribeData(key,value ));
+            }
+            prevKey = key;
+        }
+        return keyValueDescibeData;
+    }
+    
+    protected String convert2DisplayCoordinate(String wkt){
+        String formattedCoordinate = null;
+        try {
+            Point p = (Point)new WKTReader().read(wkt);
+            double lat = p.getY();
+            double lon =p.getX();
+            String nord="N";
+            String ost="E";
+            if (lat <0 ){nord="S"; lat=-lat;}
+            if (lon <0 ){ost="W"; lon=-lon;}
+            formattedCoordinate =  String.format("%1$02d°%2$1S %3$05.2f' %4$03d°%5$1S %6$05.2f'",
+                                  (int)lat, nord,60.*(lat-((int)lat)),(int)lon,ost,60.*(lon-((int)lon)));
+        } catch (ParseException e) {
+            log.error(e,e);
+        }
+        
+        return formattedCoordinate;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultInputData.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,56 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class DefaultInputData implements InputData {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 4308041648698108066L;
+    private String name = null;
+    private String value = null;
+
+    /**
+     * Constructor
+     */
+    public DefaultInputData(String name, String value) {
+        this.name = name;
+        this.value = value;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.InputData#getName()
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.InputData#getValue()
+     */
+    public String getValue() {
+        return this.value;
+    }
+
+    /**
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return this.name + "==> " + this.value;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.InputData#concartValue(java.lang.String)
+     */
+    public void concartValue(String value) {
+        this.value = this.value + " , " + value;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultInputValue.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,78 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class DefaultInputValue implements InputValue {
+
+    /**
+     * The UID of this Class.
+     */
+    private static final long serialVersionUID = -8518824299166180986L;
+    private String name = null;
+    private String type = null;
+    private boolean multiselect = false;
+    private int usedInQueries = 1;
+    private String defaultValue = "N/N";
+
+    public DefaultInputValue(String name, String type, String defaultValue,
+                             boolean multiselect) {
+        this(name, type, multiselect, 1);
+        this.defaultValue = defaultValue;
+
+    }
+
+    /**
+     * Constructor
+     */
+    public DefaultInputValue(String name, String type, boolean multiselect,
+                             int usedInQueries) {
+        this.name = name;
+        this.type = type;
+        this.multiselect = multiselect;
+        this.usedInQueries = usedInQueries;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.InputValue#getName()
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.InputValue#getType()
+     */
+    public String getType() {
+        return this.type;
+    }
+
+    /**
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "InputValue " + this.name + " ==> " + this.type
+               + "==> multiselect: " + this.multiselect;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.InputValue#isMultiselect()
+     */
+    public boolean isMultiselect() {
+        return this.multiselect;
+    }
+
+    public int usedInQueries() {
+        return this.usedInQueries;
+    }
+
+    public String getDefaultValue() {
+        return this.defaultValue;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultOutputMode.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,76 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.util.Collection;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class DefaultOutputMode implements OutputMode {
+
+    /**
+     * The UID of this Class.
+     */
+    private static final long serialVersionUID = -6459085460904827056L;
+    private String name = null;
+    private String description = null;
+    private String mimeType = null;
+    private Collection<InputValue> inputParameters = null;
+
+    /**
+     * Constructor
+     * 
+     * @param name
+     * @param description
+     * @param mimeType
+     */
+    public DefaultOutputMode(String name, String description, String mimeType,
+                             Collection<InputValue> inputParameters) {
+        super();
+        this.name = name;
+        this.description = description;
+        this.mimeType = mimeType;
+        this.inputParameters = inputParameters;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.OutputMode#getDescription()
+     */
+    public String getDescription() {
+        return this.description;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.OutputMode#getMimeType()
+     */
+    public String getMimeType() {
+        return this.mimeType;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.OutputMode#getName()
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    /**
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "Name: " + this.name + " ; Description: " + this.description
+               + " ; Mime-Type: " + this.mimeType;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.OutputMode#getInputParameters()
+     */
+    public Collection<InputValue> getInputParameters() {
+        return this.inputParameters;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,23 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class DefaultTransition extends TransitionBase {
+
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = 8934030362091576766L;
+
+    /**
+     * Constructor
+     */
+    public DefaultTransition() {
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/InputData.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,19 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.io.Serializable;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface InputData extends Serializable {
+
+    public String getName();
+
+    public String getValue();
+
+    public void concartValue(String value);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/InputValue.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,24 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.io.Serializable;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface InputValue extends Serializable {
+
+    public String getName();
+
+    public String getType();
+
+    public String getDefaultValue();
+
+    public boolean isMultiselect();
+
+    public int usedInQueries();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/MinMaxTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,62 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.describedata.DefaultMinMaxDescribeData;
+import de.intevation.gnv.transition.describedata.DescribeData;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class MinMaxTransition extends TransitionBase {
+
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = -3525903792105187408L;
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(MinMaxTransition.class);
+
+    /**
+     * Constructor
+     */
+    public MinMaxTransition() {
+        super();
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection,
+     *      java.lang.String)
+     */
+    @Override
+    protected void purifyResult(Collection<Result> result, String uuid) {
+        log.debug("MinMaxTransition.purifyResult");
+        Collection<Object> describeData = this.getDescibeData(uuid);
+        if (describeData == null) {
+            describeData = new ArrayList<Object>();
+        }
+        if (result != null && result.size() == 1) {
+            
+            Result value = result.iterator().next();
+            DescribeData values = new DefaultMinMaxDescribeData(this.dataName, 
+                                                               value.getObject("MIN"), 
+                                                               value.getObject("MAX"));
+            log.debug(values.toString());
+            describeData.add(values);
+        } else {
+            log.warn("Result cannot be handled as MinMax Resultset");
+        }
+        this.setDescibeData(uuid, describeData);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputMode.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,22 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.io.Serializable;
+import java.util.Collection;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface OutputMode extends Serializable {
+
+    public String getName();
+
+    public String getDescription();
+
+    public String getMimeType();
+
+    public Collection<InputValue> getInputParameters();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,36 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.io.OutputStream;
+import java.util.Collection;
+
+import de.intevation.artifacts.CallMeta;
+import de.intevation.gnv.transition.exception.TransitionException;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface OutputTransition extends Transition {
+
+    /**
+     * Returns the Rendered Result of an Transition.
+     * 
+     * @param outputMode
+     *            The Mode that should be produces (Chart, Map, ...)
+     * @return The Bytecode of the Result
+     * @throws TransitionException
+     */
+    public void out(String outputMode, Collection<InputData> inputData,
+                    OutputStream outputStream, String uuid, CallMeta callMeta)
+                                                                              throws TransitionException;
+
+    /**
+     * Delivers the provided OutputModes of an Transition
+     * 
+     * @return the provided OutputModes of an Transition
+     */
+    public Collection<OutputMode> getOutputModes();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,219 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import de.intevation.artifactdatabase.Config;
+import de.intevation.artifacts.CallMeta;
+import de.intevation.gnv.artifacts.cache.CacheFactory;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.geobackend.base.query.QueryExecutor;
+import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
+import de.intevation.gnv.geobackend.base.query.exception.QueryException;
+import de.intevation.gnv.transition.exception.TransitionException;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public abstract class OutputTransitionBase extends TransitionBase implements
+                                                                 OutputTransition {
+
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = -1718732895737303823L;
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(OutputTransitionBase.class);
+
+    /**
+     * The different Outputmodes which are provided by an OutputTransition
+     */
+    protected Collection<OutputMode> outputModes = null;
+    
+    protected String queryODVID = null;
+
+    /**
+     * Constructor
+     */
+    public OutputTransitionBase() {
+        super();
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.OutputTransition#getOutputModes()
+     */
+    public Collection<OutputMode> getOutputModes() {
+        log.debug("OutputTransitionBase.getOutputModes");
+        return this.outputModes;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.TransitionBase#setup(org.w3c.dom.Node)
+     */
+    @Override
+    public void setup(Node configuration) {
+        log.debug("OutputTransitionBase.setup");
+        super.setup(configuration);
+        
+        this.queryODVID = Config.getStringXPath(configuration,"queryID-odv");
+        
+        NodeList outputModeList = Config.getNodeSetXPath(configuration,
+                "outputsModes/outputsMode");
+        if (outputModeList != null) {
+            log.debug(outputModeList.getLength() + " were found.");
+            this.outputModes = new ArrayList<OutputMode>(outputModeList
+                    .getLength());
+            for (int i = 0; i < outputModeList.getLength(); i++) {
+                Element currentNode = (Element)outputModeList.item(i);
+                String name = currentNode.getAttribute("name");
+                String description =currentNode.getAttribute("description");
+                String mimeType = currentNode.getAttribute("mime-type");
+                NodeList inputValuesList = Config.getNodeSetXPath(currentNode,
+                        "parameters/inputvalue");
+                Collection<InputValue> inputParameters = null;
+                if (inputValuesList != null) {
+                    inputParameters = new ArrayList<InputValue>(inputValuesList
+                            .getLength());
+                    for (int j = 0; j < inputValuesList.getLength(); j++) {
+                        Element currentInputValuesNode = (Element)inputValuesList.item(j);
+                        String inputValueName = currentInputValuesNode.getAttribute("name");
+                        String inputValueType = currentInputValuesNode.getAttribute("type");
+                        String defaultValue =currentInputValuesNode.getAttribute("value");
+                        boolean isMultiselect = false;
+                        InputValue inputValue = new DefaultInputValue(
+                                inputValueName, inputValueType, defaultValue,
+                                isMultiselect);
+                        inputParameters.add(inputValue);
+                    }
+                }
+
+                OutputMode outputMode = new DefaultOutputMode(name,
+                        description, mimeType, inputParameters);
+                log.debug(outputMode.toString());
+                this.outputModes.add(outputMode);
+
+            }
+        }
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.TransitionBase#advance()
+     */
+    @Override
+    public void advance(String uuid, CallMeta callMeta)
+                                                       throws TransitionException {
+        log.debug("OutputTransitionBase.advance");
+        if (this.getChartResult(uuid) == null) {
+            super.advance(uuid, callMeta);
+        }
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String,
+     *      java.util.Collection, java.io.OutputStream)
+     */
+    public void out(String outputMode, Collection<InputData> inputData,
+                    OutputStream outputStream) throws TransitionException {
+    }
+
+    /**
+     * @return
+     */
+    protected Collection<Result> getChartResult(String uuid) {
+        log.debug("OutputTransitionBase.getChartResult");
+        if (CacheFactory.getInstance().isInitialized()) {
+            String key = uuid + super.getID();
+            log.debug("Hash for Queryelements: " + key);
+            net.sf.ehcache.Element value = CacheFactory.getInstance().getCache().get(key);
+            if (value != null) {
+                return (Collection<Result>) (value.getObjectValue());
+            }
+        }
+        return null;
+    }
+    
+    protected Collection<Result> getODVResult(String uuid) {
+        log.debug("OutputTransitionBase.getODVResult");
+        // TODO add Caching? I think it's not nessessary
+        Collection<Result> returnValue = null;
+        if (this.queryODVID != null){
+            try {
+                String[] filterValues = this.generateFilterValuesFromInputData();
+                try {
+                    QueryExecutor queryExecutor = QueryExecutorFactory
+                                                  .getInstance()
+                                                  .getQueryExecutor();
+                    returnValue  = queryExecutor.executeQuery(this.queryODVID,
+                                                              filterValues);
+                } catch (RuntimeException e) {
+                    log.error(e, e);
+                }
+            } catch (QueryException e) {
+                log.error(e, e);
+            }
+        }else{
+            log.warn("No Query for ODV Data is defined.");
+        }
+        return returnValue;
+    }
+    
+    protected void removeChartResult(String uuid) {
+        log.debug("OutputTransitionBase.getChartResult");
+        if (CacheFactory.getInstance().isInitialized()) {
+            String key = uuid + super.getID();
+            log.debug("Hash for Queryelements: " + key);
+            net.sf.ehcache.Element value = CacheFactory.getInstance().getCache().get(key);
+            if (value != null) {
+                CacheFactory.getInstance().getCache().remove(key);
+            }
+        }
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection,
+     *      java.lang.String)
+     */
+    @Override
+    protected void purifyResult(Collection<Result> result, String uuid) {
+        log.debug("OutputTransitionBase.purifyResult");
+        if (CacheFactory.getInstance().isInitialized()) {
+            String key = uuid + super.getID();
+            log.debug("Hash for Queryelements: " + key);
+            CacheFactory.getInstance().getCache().put(new net.sf.ehcache.Element(key, result));
+        }
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.TransitionBase#putInputData(java.util.Collection, java.lang.String)
+     */
+    @Override
+    public void putInputData(Collection<InputData> inputData, 
+                             String uuid)
+                                         throws TransitionException {
+        log.debug("OutputTransitionBase.putInputData");
+        this.removeChartResult(uuid);
+        super.putInputData(inputData, uuid);
+    }
+
+    public void out(String outputMode, Collection<InputData> inputData,
+                    OutputStream outputStream, String uuid, CallMeta callMeta)
+                                                                              throws TransitionException {
+    }
+    
+    
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/SingleInputTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,59 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.describedata.DefaultSingleValueDescribeData;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class SingleInputTransition extends TransitionBase {
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(SingleInputTransition.class);
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -6169497306324917318L;
+
+    /**
+     * Constructor
+     */
+    public SingleInputTransition() {
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection,
+     *      java.lang.String)
+     */
+    @Override
+    protected void purifyResult(Collection<Result> result, String uuid) {
+        log.debug("SingleInputTransition.purifyResult");
+        Collection<Object> describeData = this.getDescibeData(uuid);
+        if (describeData == null) {
+            describeData = new ArrayList<Object>();
+        }
+        String value = null;
+        if (result != null && result.size() == 1) {
+            Result tmpItem = result.iterator().next();
+            value = tmpItem.getObject("MAX").toString();
+        } else {
+            value = "";
+        }
+
+        describeData.add(new DefaultSingleValueDescribeData(this.dataName,value));
+        this.setDescibeData(uuid, describeData);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/Transition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,48 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.io.Serializable;
+import java.util.Collection;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+import de.intevation.artifacts.CallMeta;
+import de.intevation.gnv.transition.exception.TransitionException;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface Transition extends Serializable {
+
+    public void setup(Node configuration);
+
+    public Collection<String> reachableTransitions();
+
+    public boolean isTransitionReachable(String transitionID);
+
+    public String getID();
+
+    public String getDescription();
+
+    public void describe(Document document, Node rootNode, CallMeta callMeta, String uuid);
+
+    public void setParent(Transition transition);
+
+    public Transition getParent();
+
+    public Collection<InputValue> getRequiredInputValues();
+
+    public void putInputData(Collection<InputData> inputData, 
+                             String uuid)
+                                         throws TransitionException;
+
+    public Collection<InputData> getInputData() throws TransitionException;
+
+    public void advance(String uuid, CallMeta callMeta)
+                                                       throws TransitionException;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,790 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import de.intevation.artifactdatabase.Config;
+import de.intevation.artifacts.CallMeta;
+import de.intevation.gnv.artifacts.GNVArtifactBase;
+import de.intevation.gnv.artifacts.cache.CacheFactory;
+import de.intevation.gnv.artifacts.ressource.RessourceFactory;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.geobackend.base.query.QueryExecutor;
+import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
+import de.intevation.gnv.geobackend.base.query.exception.QueryException;
+import de.intevation.gnv.geobackend.util.DateUtils;
+import de.intevation.gnv.transition.describedata.DefaultKeyValueDescribeData;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.transition.describedata.MinMaxDescribeData;
+import de.intevation.gnv.transition.describedata.NamedArrayList;
+import de.intevation.gnv.transition.describedata.NamedCollection;
+import de.intevation.gnv.transition.describedata.SingleValueDescribeData;
+import de.intevation.gnv.transition.exception.TransitionException;
+import de.intevation.gnv.utils.ArtifactXMLUtilities;
+import de.intevation.gnv.utils.InputValidator;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public abstract class TransitionBase implements Transition {
+
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = 2411169179001645426L;
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(GNVArtifactBase.class);
+    
+    private final static String MINVALUEFIELDNAME = "minvalue";
+    private final static String MAXVALUEFIELDNAME = "maxvalue";
+    
+    private final static String NODATASELECTIONKEY = "n/n";
+    
+    private final static String DESCRIBEDATAKEY = "_DESCRIBEDATA";
+
+    private String id = null;
+
+    private String description = null;
+
+    protected String dataName = null;
+
+    protected boolean dataMultiSelect = false;
+    
+    protected boolean dataNoSelect = false;
+
+    protected String queryID = null;
+
+    private Collection<String> reachableTransitions = null;
+    
+    private Transition alternativeTransition = null;
+
+    protected Collection<String> inputValueNames = null;
+
+    private Map<String, InputValue> inputValues = null;
+
+    private Transition parent = null;
+
+    protected Map<String, InputData> inputData = null;
+    
+
+    /**
+     * Constructor
+     */
+    public TransitionBase() {
+        super();
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#getID()
+     */
+    public String getID() {
+        return this.id;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#getDescription()
+     */
+    public String getDescription() {
+        return this.description;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#reachableTransitions()
+     */
+    public Collection<String> reachableTransitions() {
+        
+        if (this.couldAlternativeTransitionUsed()){
+            return this.alternativeTransition.reachableTransitions();
+        }else{
+            return this.reachableTransitions;
+        }
+        
+    }
+
+    /**
+     * @return
+     */
+    private boolean couldAlternativeTransitionUsed() {
+     // TODO das muss hier noch etwas freier gestaltet werden.
+        Object[] inputValues = this.inputValueNames.toArray();
+        String key = (String)inputValues[inputValues.length-1];
+        boolean returnValue= this.alternativeTransition != null && 
+                            this.inputData != null &&
+                            this.inputData.containsKey(key) && 
+                            this.inputData.get(key).getValue().
+                                                    equals(NODATASELECTIONKEY);
+        return returnValue;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#getRequiredInputValues()
+     */
+    public Collection<InputValue> getRequiredInputValues() {
+        return this.inputValues.values();
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#setup(org.w3c.dom.Node)
+     */
+    public void setup(Node configuration) {
+        log.debug("TransitionBase.setup");
+        this.id = ((Element)configuration).getAttribute("id");
+        this.description = ((Element)configuration).getAttribute("description");
+
+        log.info("Transition-ID = " + this.id);
+        NodeList nodes = Config.getNodeSetXPath(configuration,
+                "reachableTransitions/transition");
+        this.reachableTransitions = new ArrayList<String>(nodes.getLength());
+        for (int i = 0; i < nodes.getLength(); i++) {
+            String reachableTransition = nodes.item(i).getTextContent();
+            log.info("ReachableTransition ==> " + reachableTransition);
+            this.reachableTransitions.add(reachableTransition);
+
+        }
+        
+        Node alternativeTransitionNode = Config.getNodeXPath(configuration,
+                                                     "alternativeTransition/transition");
+        if (alternativeTransitionNode != null){
+            this.alternativeTransition = TransitionFactory.getInstance()
+                                        .createTransition(alternativeTransitionNode);
+        }
+        NodeList inputValuesNodes = Config.getNodeSetXPath(configuration,
+                "inputvalues/inputvalue");
+        this.inputValues = new HashMap<String, InputValue>(inputValuesNodes
+                .getLength());
+        this.inputValueNames = new ArrayList<String>(inputValuesNodes
+                .getLength());
+        for (int i = 0; i < inputValuesNodes.getLength(); i++) {
+            Element inputValueNode = (Element)inputValuesNodes.item(i);
+            String usedinQueryValue = inputValueNode.getAttribute("usedinquery");
+            int usedinQuery = 1;
+            if (usedinQueryValue != null) {
+                try {
+                    usedinQuery = Integer.parseInt(usedinQueryValue);
+                } catch (NumberFormatException e) {
+                    log
+                            .warn("Used in Query Value cannot be transformed into a Number");
+                }
+            }
+            InputValue inputValue = new DefaultInputValue(inputValueNode.getAttribute("name"), 
+                                                          inputValueNode.getAttribute("type"), 
+                                                          Boolean.parseBoolean(inputValueNode.
+                                                          getAttribute("multiselect")), usedinQuery);
+            log.debug(inputValue.toString());
+            this.inputValues.put(inputValue.getName(), inputValue);
+            this.inputValueNames.add(inputValue.getName());
+        }
+
+        this.queryID = Config.getStringXPath(configuration, "queryID");
+        log.info("QueryID ==> " + this.queryID);
+
+        this.dataName = Config.getStringXPath(configuration, "dataname");
+
+        String dataMultiSelectValue = Config.getStringXPath(configuration,
+                                                           "data-multiselect");
+        if (dataMultiSelectValue != null) {
+            this.dataMultiSelect = Boolean.parseBoolean(dataMultiSelectValue);
+        }
+        
+        String dataNoSelectValue =Config.getStringXPath(configuration,
+                                                        "data-noselect");
+        if (dataNoSelectValue != null) {
+            this. dataNoSelect = Boolean.parseBoolean(dataNoSelectValue);
+        }
+        
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#getParent()
+     */
+    public Transition getParent() {
+        return this.parent;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#setParent(de.intevation.gnv.transition.Transition)
+     */
+    public void setParent(Transition transition) {
+        this.parent = transition;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#putInputData(java.util.Collection)
+     */
+    public void putInputData(Collection<InputData> inputData, String uuid)
+                                                                          throws TransitionException {
+        log.debug("TransitionBase.putInputData");
+        if (inputData != null) {
+            Iterator<InputData> it = inputData.iterator();
+            InputValidator iv = new InputValidator();
+            while (it.hasNext()) {
+                InputData tmpItem = it.next();
+                InputValue inputValue = this.inputValues.get(tmpItem.getName());
+                if (inputValue != null) {
+                    if (this.inputData == null) {
+                        this.inputData = new HashMap<String, InputData>(
+                                inputData.size());
+                    }
+                    
+                    boolean valid = iv.isInputValid(tmpItem.getValue(),
+                            inputValue.getType());
+                    if (valid) {
+                        if (tmpItem.getName().equals(MINVALUEFIELDNAME)){
+                            String minValue = tmpItem.getValue();
+                            String maxValue = this.getInputValue4ID(inputData, MAXVALUEFIELDNAME);
+                            valid = iv.isInputValid(maxValue,inputValue.getType());
+                            if (!valid){
+                                String errMsg = "Wrong input for " + tmpItem.getValue()
+                                                + " is not an " + inputValue.getType()
+                                                + " Value.";
+                                log.warn(errMsg);
+                                throw new TransitionException(errMsg);
+                            }
+                            
+                            valid = iv.isInputValid(minValue, 
+                                    maxValue,
+                                    inputValue.getType());
+                            if (!valid){
+                                String errMsg = "MaxValue-Input is less than MinValue-Input ";
+                                log.warn(errMsg);
+                                throw new TransitionException(errMsg);
+                            }
+                        }else if (tmpItem.getName().equals(MAXVALUEFIELDNAME)){
+                            String minValue = this.getInputValue4ID(inputData, MINVALUEFIELDNAME);
+                            String maxValue = tmpItem.getValue();
+                            valid = iv.isInputValid(minValue,inputValue.getType());
+                            if (!valid){
+                                String errMsg = "Wrong input for " + tmpItem.getValue()
+                                                + " is not an " + inputValue.getType()
+                                                + " Value.";
+                                log.warn(errMsg);
+                                throw new TransitionException(errMsg);
+                            }
+                            
+                            valid = iv.isInputValid(minValue, 
+                                                    maxValue,
+                                                    inputValue.getType());
+                            if (!valid){
+                                String errMsg = "MaxValue-Input is less than MinValue-Input ";
+                                log.warn(errMsg);
+                                throw new TransitionException(errMsg);
+                            }
+                        }
+                        this.setSelection(tmpItem, uuid);
+                        this.inputData.put(tmpItem.getName(), tmpItem);
+                    } else {
+                        String errMsg = "Wrong input for " + tmpItem.getValue()
+                                        + " is not an " + inputValue.getType()
+                                        + " Value.";
+                        log.warn(errMsg);
+                        throw new TransitionException(errMsg);
+                    }
+
+                } else {
+                    String errMsg = "No Inputvalue given for Inputdata "
+                                    + tmpItem.getName();
+                    log.warn(errMsg + "Value will be ignored");
+
+                }
+            }
+        } else {
+            log.warn("No Inputdata given");
+        }
+    }
+    
+    private String getInputValue4ID(Collection<InputData> inputData, String inputName){
+        Iterator<InputData> it = inputData.iterator();
+        while (it.hasNext()) {
+            InputData tmpItem = it.next();
+            if (tmpItem.getName().equals(inputName)){
+                return tmpItem.getValue();
+            }
+        }
+        return null;
+    }
+
+    private void setSelection(InputData inputData, String uuid) {
+        log.debug("TransitionBase.setSelection");
+
+        Object o = this.getDescribeData(inputData.getName(),uuid);
+        if (o != null) {
+            if (o instanceof Collection<?>) {
+                Collection<KeyValueDescibeData> values = (Collection<KeyValueDescibeData>) o;
+
+                String value = inputData.getValue();
+                String[] selectedValues = value.split(",");
+                Set<String> selectedItems = new HashSet<String>(
+                        selectedValues.length);
+                for (int i = 0; i < selectedValues.length; i++) {
+                    selectedItems.add(selectedValues[i].trim());
+                }
+                // Selektion umsetzen
+                Iterator<KeyValueDescibeData> it = values.iterator();
+                while (it.hasNext()) {
+                    KeyValueDescibeData data = it.next();
+                    String key = "" + data.getKey();
+                    boolean selected = selectedItems.contains(key);
+                    data.setSelected(selected);
+                }
+            } else if (o instanceof MinMaxDescribeData) {
+                MinMaxDescribeData data = (MinMaxDescribeData) o;
+                if (inputData.getName().equals(MINVALUEFIELDNAME)) {
+                    data.setMinValue(inputData.getValue());
+                }
+                if (inputData.getName().equals(MAXVALUEFIELDNAME)) {
+                    data.setMaxValue(inputData.getValue());
+                }
+            } else if (o instanceof SingleValueDescribeData) {
+                ((SingleValueDescribeData)o).setValue(inputData.getValue());
+            }
+        }
+    }
+
+    private Object getDescribeData(String name, String uuid) {
+        log.debug("TransitionBase.getDescribeData");
+        Collection<Object> descibeData = this.getDescibeData(uuid);
+        if (descibeData != null) {
+            Iterator<Object> it = descibeData.iterator();
+            while (it.hasNext()) {
+                Object o = it.next();
+                if (o instanceof NamedCollection<?>) {
+                    if (name.equals(((NamedCollection<?>) o).getName())) {
+                        return o;
+                    }
+                } else if (o instanceof MinMaxDescribeData) {
+                    if (name.equals(((MinMaxDescribeData) o).getMinName())) {
+                        return o;
+                    }
+                    if (name.equals(((MinMaxDescribeData) o).getMaxName())) {
+                        return o;
+                    }
+                }else if (o instanceof SingleValueDescribeData) {
+                    if (name.equals(((SingleValueDescribeData)o).getName())){
+                        return o;
+                    }
+                }
+            }
+        }
+        return null;
+
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#isTransitionReachable(java.lang.String)
+     */
+    public boolean isTransitionReachable(String transitionID) {
+        log.debug("TransitionBase.isTransitionReachable");
+        boolean returnValue = false;
+        if (this.couldAlternativeTransitionUsed()){
+            return alternativeTransition.isTransitionReachable(transitionID);
+        }else{
+            Iterator<String> transitions = reachableTransitions.iterator();
+            while (transitions.hasNext()) {
+                if (transitions.next().equals(transitionID)) {
+                    log.debug("Transition " + transitionID + " wird unterstützt.");
+                    returnValue = true;
+                    break;
+                }
+            }
+        }
+        return returnValue;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#advance(java.lang.String,
+     *      de.intevation.artifacts.CallMeta)
+     */
+    public void advance(String uuid, CallMeta callMeta)
+                                                       throws TransitionException {
+        log.debug("TransitionBase.advance");
+        
+        if (this.couldAlternativeTransitionUsed()){
+            this.alternativeTransition.setParent(this.getParent());
+            this.alternativeTransition.putInputData(this.inputData != null ? 
+                                                    this.inputData.values() : 
+                                                    null,uuid);
+            this.alternativeTransition.advance(uuid, callMeta);
+        }else{
+            try {
+                String[] filterValues = this.generateFilterValuesFromInputData();
+                Collection<Result> result = null;
+                try {
+                    if (this.queryID != null) {
+                        QueryExecutor queryExecutor = QueryExecutorFactory
+                                .getInstance().getQueryExecutor();
+                        result = queryExecutor.executeQuery(this.queryID,
+                                filterValues);
+                    }
+                    this.purifyResult(result, uuid);
+                } catch (RuntimeException e) {
+                    log.error(e, e);
+                }
+            } catch (QueryException e) {
+                log.error(e, e);
+                throw new TransitionException(e);
+            }
+        }
+    }
+
+    /**
+     * @return
+     */
+    protected String[] generateFilterValuesFromInputData() {
+        List<String> list = new ArrayList<String>();
+        Iterator<String> it = this.inputValueNames.iterator();
+        while (it.hasNext()) {
+            String value = it.next();
+            InputData data = this.inputData.get(value);
+            if (data != null
+                && this.inputValues.containsKey(data.getName())) {
+                int size = this.inputValues.get(data.getName())
+                        .usedInQueries();
+                String type = this.inputValues.get(data.getName())
+                        .getType();
+                String requestValue = data.getValue();
+                if (type.equalsIgnoreCase("string")) {
+                    requestValue = this
+                            .prepareInputData4DBQuery(requestValue);
+                } else if (type.equalsIgnoreCase("date")) {
+                    requestValue = this
+                            .prepareInputData4DateDBQuery(requestValue);
+                } else if (type.equalsIgnoreCase("coordinate")){
+                    requestValue = this
+                    .prepareInputData4RegionDBQuery(requestValue);
+                }
+                for (int j = 0; j < size; j++) {
+                    list.add(requestValue);
+                }
+            }
+        }
+        String[] filterValues = list.toArray(new String[0]);
+        return filterValues;
+    }
+    
+    protected String prepareInputData4RegionDBQuery(String value){
+        return value;
+    }
+
+    private String prepareInputData4DateDBQuery(String value) {
+        log.debug("TransitionBase.prepareInputData4DateDBQuery");
+        if (value != null) {
+            String[] values = value.split(",");
+            String newValue = "";
+            for (int i = 0; i < values.length; i++) {
+                if (newValue.length() > 0) {
+                    newValue = newValue + " , ";
+                }
+                // TODO JUST HACK FIND A BETTER RESOLUTION
+                newValue = newValue + "to_date('" + values[i].trim()
+                           + "', 'YYYY.MM.DD HH24:MI:SS')";
+            }
+            return newValue;
+        }
+
+        return value;
+    }
+
+    private String prepareInputData4DBQuery(String value) {
+        log.debug("TransitionBase.prepareInputData4DBQuery");
+        if (value != null) {
+            String[] values = value.split(",");
+            String newValue = "";
+            for (int i = 0; i < values.length; i++) {
+                if (newValue.length() > 0) {
+                    newValue = newValue + " , ";
+                }
+                newValue = newValue + "'" + values[i].trim() + "'";
+            }
+            return newValue;
+        }
+
+        return value;
+
+    }
+
+    /**
+     * @param result
+     */
+    protected void purifyResult(Collection<Result> result, String uuid) {
+        log.debug("TransitionBase.purifyResult");
+        Collection<Object> describeData = this.getDescibeData(uuid);
+        if (describeData == null) {
+            describeData = new ArrayList<Object>();
+        }
+        NamedCollection<KeyValueDescibeData> keyValueDescibeData = extractKVP(result, "KEY", "VALUE");
+        describeData.add(keyValueDescibeData); 
+        this.setDescibeData(uuid, describeData);
+    }
+
+    /**
+     * @param result
+     * @return
+     */
+    protected NamedCollection<KeyValueDescibeData> extractKVP(Collection<Result> result,
+                                                              String keyid,
+                                                              String valueid) {
+        Iterator<Result> rit = result.iterator();
+        int dataSize = (this.dataNoSelect ? result.size()+1 : result.size());
+        
+        NamedCollection<KeyValueDescibeData> keyValueDescibeData = new NamedArrayList<KeyValueDescibeData>(
+                this.dataName, dataSize);
+        keyValueDescibeData.setMultiSelect(this.dataMultiSelect);
+        
+        if (this.dataNoSelect){
+            keyValueDescibeData.add(new DefaultKeyValueDescribeData(NODATASELECTIONKEY, 
+                                                                    "No Selection"));
+        }
+        String previousKey = null;
+        while (rit.hasNext()) {
+            Result resultValue = rit.next();
+            String tmpKey = resultValue.getString(keyid);
+            // TODO: HACK da die ARCSDE kein DISTINCT auf räumlichen Anfragen unterstützt.
+            if (previousKey == null || !tmpKey.equals(previousKey)){
+                previousKey = tmpKey;
+                keyValueDescibeData.add(new DefaultKeyValueDescribeData(tmpKey, resultValue.getString(valueid)));
+            }
+        }
+        return keyValueDescibeData;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#describe(org.w3c.dom.Document,
+     *      org.w3c.dom.Node, de.intevation.artifacts.CallMeta,
+     *      java.lang.String)
+     */
+    public void describe(Document document, Node rootNode, CallMeta callMeta,String uuid) {
+        log.debug("TransitionBase.describe");
+        Collection<Object> descibeData = this.getDescibeData(uuid);
+        if (descibeData != null) {
+            ArtifactXMLUtilities xmlutilities = new ArtifactXMLUtilities();
+            Iterator<Object> it = descibeData.iterator();
+            Node staticNode = xmlutilities.createArtifactElement(document,
+                    "static");
+            Node dynamic = xmlutilities.createArtifactElement(document,
+                    "dynamic");
+            rootNode.appendChild(staticNode);
+            rootNode.appendChild(dynamic);
+            while (it.hasNext()) {
+
+                Object o = it.next();
+                if (o instanceof Collection<?>) {
+                    String name = null;
+                    boolean multiselect = false;
+                    if (o instanceof NamedCollection<?>) {
+                        NamedCollection<?> nc = ((NamedCollection<?>) o);
+                        name = nc.getName();
+                        multiselect = nc.isMultiSelect();
+                    } else {
+                        Object[] names = this.inputValueNames.toArray();
+                        name = names[names.length - 1].toString();
+                    }
+
+                    Element selectNode = xmlutilities.createXFormElement(
+                            document, multiselect ? "select" : "select1");
+                    selectNode.setAttribute("ref", name);
+
+                    Element lableNode = xmlutilities.createXFormElement(
+                            document, "label");
+                    lableNode.setTextContent(RessourceFactory.getInstance()
+                            .getRessource(callMeta.getLanguages(), name, name));
+                    Element choiceNode = xmlutilities.createXFormElement(
+                            document, "choices");
+
+                    Collection<KeyValueDescibeData> values = (Collection<KeyValueDescibeData>) o;
+                    Iterator<KeyValueDescibeData> resultIt = values.iterator();
+                    while (resultIt.hasNext()) {
+                        KeyValueDescibeData result = resultIt.next();
+                        Element itemNode = xmlutilities.createXFormElement(
+                                document, "item");
+
+                        if (result.isSelected()) {
+                            itemNode.setAttribute("selected", "true");
+                        }
+
+                        Element choiceLableNode = xmlutilities
+                                .createXFormElement(document, "label");
+                        choiceLableNode.setTextContent(result.getValue());
+                        itemNode.appendChild(choiceLableNode);
+
+                        Element choicValueNode = xmlutilities
+                                .createXFormElement(document, "value");
+                        choicValueNode.setTextContent("" + result.getKey());
+                        itemNode.appendChild(choicValueNode);
+                        choiceNode.appendChild(itemNode);
+                    }
+                    selectNode.appendChild(lableNode);
+                    selectNode.appendChild(choiceNode);
+
+                    if (!it.hasNext()) {
+                        dynamic.appendChild(selectNode);
+                    } else {
+                        staticNode.appendChild(selectNode);
+                    }
+
+                } else if (o instanceof MinMaxDescribeData) {
+                    MinMaxDescribeData minMaxDescibeData = (MinMaxDescribeData) o;
+                    Object min = minMaxDescibeData.getMinValue();
+                    Object max = minMaxDescibeData.getMaxValue();
+                    if (min instanceof GregorianCalendar) {
+                        Date d = ((GregorianCalendar) min).getTime();
+                        min = DateUtils.getPatternedDateAmer(d);
+                    }
+
+                    if (max instanceof GregorianCalendar) {
+                        Date d = ((GregorianCalendar) max).getTime();
+                        max = DateUtils.getPatternedDateAmer(d);
+                    }
+                    
+                    Element groupNode = xmlutilities.createXFormElement(
+                            document, "group");
+                    groupNode.setAttribute("ref", minMaxDescibeData.getName());
+                    Element groupNodeLableNode = xmlutilities
+                            .createXFormElement(document, "label");
+                    groupNodeLableNode.setTextContent(RessourceFactory
+                            .getInstance().getRessource(
+                                    callMeta.getLanguages(),
+                                    minMaxDescibeData.getName(),
+                                    minMaxDescibeData.getName()));
+                    groupNode.appendChild(groupNodeLableNode);
+
+                    Element inputMinNode = xmlutilities.createXFormElement(
+                            document, "input");
+                    inputMinNode.setAttribute("ref", MINVALUEFIELDNAME);
+                    Element inputMinLableNode = xmlutilities
+                            .createXFormElement(document, "label");
+                    inputMinLableNode.setTextContent(RessourceFactory
+                            .getInstance().getRessource(
+                                    callMeta.getLanguages(), MINVALUEFIELDNAME,
+                                    MINVALUEFIELDNAME));
+                    inputMinNode.appendChild(inputMinLableNode);
+
+                    Element inputMinValueNode = xmlutilities
+                            .createXFormElement(document, "value");
+                    inputMinValueNode.setTextContent(min.toString());
+                    inputMinNode.appendChild(inputMinValueNode);
+
+                    Element inputMaxNode = xmlutilities.createXFormElement(
+                            document, "input");
+                    inputMaxNode.setAttribute("ref", MAXVALUEFIELDNAME);
+                    Element inputMaxLableNode = xmlutilities
+                            .createXFormElement(document, "label");
+                    inputMaxLableNode.setTextContent(RessourceFactory
+                            .getInstance().getRessource(
+                                    callMeta.getLanguages(), MAXVALUEFIELDNAME,
+                                    MAXVALUEFIELDNAME));
+                    inputMaxNode.appendChild(inputMaxLableNode);
+
+                    Element inputMaxValueNode = xmlutilities
+                            .createXFormElement(document, "value");
+                    inputMaxValueNode.setTextContent(max.toString());
+                    inputMaxNode.appendChild(inputMaxValueNode);
+
+                    groupNode.appendChild(inputMinNode);
+                    groupNode.appendChild(inputMaxNode);
+                    
+                    if (!it.hasNext()) {
+                        dynamic.appendChild(groupNode);
+                    } else {
+                        staticNode.appendChild(groupNode);
+                    }
+                } else if (o instanceof SingleValueDescribeData) {
+
+                    SingleValueDescribeData svdb = (SingleValueDescribeData) o;
+                    
+                    Element groupNode = xmlutilities.createXFormElement(
+                            document, "group");
+                    groupNode.setAttribute("ref",  svdb.getName());
+                    Element groupNodeLableNode = xmlutilities
+                            .createXFormElement(document, "label");
+                    groupNodeLableNode.setTextContent(RessourceFactory
+                            .getInstance().getRessource(
+                                    callMeta.getLanguages(),
+                                    svdb.getName(),
+                                    svdb.getName()));
+                    groupNode.appendChild(groupNodeLableNode);
+
+                    Element inputNode = xmlutilities.createXFormElement(
+                            document, "input");
+                    inputNode.setAttribute("ref", svdb.getName());
+
+                    Element inputLableNode = xmlutilities.createXFormElement(
+                            document, "label");
+                    inputLableNode.setTextContent("");
+                    inputNode.appendChild(inputLableNode);
+
+                    Element inputValueNode = xmlutilities.createXFormElement(
+                            document, "value");
+                    inputValueNode.setTextContent(svdb.getValue());
+                    inputNode.appendChild(inputValueNode);
+
+                    groupNode.appendChild(inputNode);
+                    if (!it.hasNext()) {
+                        dynamic.appendChild(groupNode);
+                    } else {
+                        staticNode.appendChild(groupNode);
+                    }
+                }
+
+            }
+        }
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#getDescibeData()
+     */
+    protected Collection<Object> getDescibeData(String uuid) {
+        if (CacheFactory.getInstance().isInitialized()) {
+            String key = uuid + DESCRIBEDATAKEY;
+            log.debug("Hash for Queryelements: " + key);
+            net.sf.ehcache.Element value = CacheFactory.getInstance().getCache().get(key);
+            if (value != null) {
+                return (Collection<Object>) (value.getObjectValue());
+            }
+        }
+        return null;
+    }
+    
+    /**
+     * @see de.intevation.gnv.transition.Transition#getDescibeData()
+     */
+    protected void setDescibeData(String uuid, Collection<Object> describeData) {
+        
+        if (CacheFactory.getInstance().isInitialized()) {
+            String key = uuid + DESCRIBEDATAKEY;
+            log.debug("Hash for Queryelements: " + key);
+            CacheFactory.getInstance().getCache().put(new net.sf.ehcache.Element(key, describeData));
+        }
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.Transition#getInputData()
+     */
+    public Collection<InputData> getInputData() throws TransitionException {
+        if (this.couldAlternativeTransitionUsed()){
+            return this.alternativeTransition.getInputData();
+        }else{
+            return this.inputData != null ? this.inputData.values() : null;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionFactory.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,55 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Node;
+
+import de.intevation.gnv.artifacts.GNVArtifactBase;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class TransitionFactory {
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(GNVArtifactBase.class);
+
+    private static TransitionFactory instance = null;
+
+    /**
+     * Constructor
+     */
+    public TransitionFactory() {
+        super();
+    }
+
+    public static TransitionFactory getInstance() {
+        if (instance == null) {
+            instance = new TransitionFactory();
+        }
+        return instance;
+    }
+
+    public Transition createTransition(Node configuration) {
+        log.debug("TransitionFactory.createTransition");
+        Transition transition = null;
+        try {
+            String classname = ((org.w3c.dom.Element)configuration).getAttribute("transition");
+            transition = (Transition) (Class.forName(classname).newInstance());
+            transition.setup(configuration);
+        } catch (InstantiationException e) {
+            log.error(e, e);
+        } catch (IllegalAccessException e) {
+            log.error(e, e);
+        } catch (ClassNotFoundException e) {
+            log.error(e, e);
+        }
+        return transition;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,57 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.describedata;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class DefaultKeyValueDescribeData implements KeyValueDescibeData {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -924469415242703108L;
+
+    private String key;
+
+    private String value = null;
+
+    private boolean selected = false;
+
+    public DefaultKeyValueDescribeData(String key, String value) {
+        super();
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.KeyValueDescibeData#getKey()
+     */
+    public String getKey() {
+        return this.key;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.KeyValueDescibeData#getValue()
+     */
+    public String getValue() {
+        return this.value;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.KeyValueDescibeData#isSelected()
+     */
+    public boolean isSelected() {
+        return this.selected;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.KeyValueDescibeData#setSelected(boolean)
+     */
+    public void setSelected(boolean selected) {
+        this.selected = selected;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/DefaultMinMaxDescribeData.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,92 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.describedata;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class DefaultMinMaxDescribeData implements MinMaxDescribeData {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -2917176219029052295L;
+
+    private Object minValue = null;
+
+    private Object maxValue = null;
+    
+    private String name = null; 
+
+    private final static String minName = "minvalue";
+
+    private final static String maxName = "maxvalue";
+
+    /**
+     * Constructor
+     */
+    public DefaultMinMaxDescribeData(String name, Object minValue, Object maxValue) {
+        super();
+        this.name = name;
+        this.minValue = minValue;
+        this.maxValue = maxValue;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#getMaxValue()
+     */
+    public Object getMaxValue() {
+        return this.maxValue;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#getMinValue()
+     */
+    public Object getMinValue() {
+        return this.minValue;
+    }
+
+    /**
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "MIN: " + this.minValue.toString() + " ; MAX: "
+               + this.maxValue.toString();
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#getName()
+     */
+    public String getMinName() {
+        return minName;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#getMaxName()
+     */
+    public String getMaxName() {
+        return maxName;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#setMaxValue(java.lang.Object)
+     */
+    public void setMaxValue(Object maxValue) {
+        this.maxValue = maxValue;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#setMinValue(java.lang.Object)
+     */
+    public void setMinValue(Object minValue) {
+        this.minValue = minValue;
+    }
+
+    public String getName() {
+       return this.name;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/DefaultSingleValueDescribeData.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,51 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.describedata;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class DefaultSingleValueDescribeData implements SingleValueDescribeData {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 3580176842483316917L;
+
+    private String name = null;
+
+    private String value = null;
+
+    /**
+     * Constructor
+     * 
+     * @param name
+     * @param value
+     */
+    public DefaultSingleValueDescribeData(String name, String value) {
+        super();
+        this.name = name;
+        this.value = value;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.SingleValueDescribeData#getName()
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.SingleValueDescribeData#getValue()
+     */
+    public String getValue() {
+        return this.value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/DescribeData.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,16 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.describedata;
+
+import java.io.Serializable;
+
+/**
+ * Markerinterface
+ * 
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface DescribeData extends Serializable {
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,22 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.describedata;
+
+import java.io.Serializable;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface KeyValueDescibeData extends Serializable {
+
+    public String getKey();
+
+    public String getValue();
+
+    public boolean isSelected();
+
+    public void setSelected(boolean selected);
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/MinMaxDescribeData.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,26 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.describedata;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface MinMaxDescribeData extends DescribeData {
+
+    public Object getMinValue();
+
+    public Object getMaxValue();
+
+    public void setMinValue(Object minValue);
+
+    public void setMaxValue(Object maxValue);
+
+    public String getName();
+    
+    public String getMinName();
+
+    public String getMaxName();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/NamedArrayList.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,71 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.describedata;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class NamedArrayList<E> extends ArrayList<E> implements
+                                                   NamedCollection<E> {
+    /**
+     *
+     */
+    private static final long serialVersionUID = 8172229594749676354L;
+
+    private String name = null;
+
+    private boolean multiSelect = false;
+
+    /**
+     * Constructor
+     */
+    public NamedArrayList(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param initialCapacity
+     */
+    public NamedArrayList(String name, int initialCapacity) {
+        super(initialCapacity);
+        this.name = name;
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param c
+     */
+    public NamedArrayList(String name, Collection<E> c) {
+        super(c);
+        this.name = name;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.NamedCollection#getName()
+     */
+    public String getName() {
+        return this.name;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.NamedCollection#isMultiSelect()
+     */
+    public boolean isMultiSelect() {
+        return multiSelect;
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.describedata.NamedCollection#setMultiSelect(boolean)
+     */
+    public void setMultiSelect(boolean multiSelect) {
+        this.multiSelect = multiSelect;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/NamedCollection.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,19 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.describedata;
+
+import java.util.Collection;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface NamedCollection<E> extends Collection<E> {
+
+    public String getName();
+
+    public boolean isMultiSelect();
+
+    public void setMultiSelect(boolean multiSelect);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/SingleValueDescribeData.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,17 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.describedata;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public interface SingleValueDescribeData extends DescribeData {
+
+    public String getName();
+
+    public String getValue();
+    
+    public void setValue(String value);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/exception/TransitionException.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,52 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.exception;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class TransitionException extends Exception {
+
+    /**
+     * The UID of the Class
+     */
+    private static final long serialVersionUID = -1635921702746050244L;
+
+    /**
+     * Constructor
+     */
+    public TransitionException() {
+        super();
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param message
+     */
+    public TransitionException(String message) {
+        super(message);
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param cause
+     */
+    public TransitionException(Throwable cause) {
+        super(cause);
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param message
+     * @param cause
+     */
+    public TransitionException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,116 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.profile.horizontal;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.log4j.Logger;
+
+import au.com.bytecode.opencsv.CSVWriter;
+
+import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.io.ParseException;
+import com.vividsolutions.jts.io.WKTReader;
+
+import de.intevation.gnv.chart.ChartLabels;
+import de.intevation.gnv.chart.ChartStyle;
+import de.intevation.gnv.chart.HorizontalProfileChartFactory;
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.statistics.HorizontalProfileStatistics;
+import de.intevation.gnv.statistics.Statistics;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.transition.exception.TransitionException;
+import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition;
+
+import de.intevation.gnv.exports.DefaultExport;
+import de.intevation.gnv.exports.ShapeDataCollector;
+import de.intevation.gnv.exports.DefaultProfile;
+import de.intevation.gnv.exports.Export.Profile;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class HorizontalProfileOutputTransition extends
+                                              TimeSeriesOutputTransition {
+    /**
+     * The UID of this class
+     */
+    private static final long serialVersionUID = 4401516087492028840L;
+
+    private static Logger log = Logger
+    .getLogger(HorizontalProfileOutputTransition.class);
+
+    public static final String [] TIMESERIES_CSV_PROFILE_NAMES = {
+        "SHAPE",
+        "YORDINATE",
+        "GROUP1",
+        "GROUP2",
+        "GROUP3"
+    };
+
+    public static final Profile TIMESERIES_CSV_PROFILE =
+        new DefaultProfile(
+            null,
+            ',',
+            '"',
+            '"',
+            "CSV",
+            "ISO-8859-1");
+
+    /**
+     * Constructor
+     */
+    public HorizontalProfileOutputTransition() {
+        super();
+        super.domainLable = "Distance [km]";
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createChart(java.io.OutputStream,
+     *      java.util.Collection, java.util.Collection, java.lang.String,
+     *      de.intevation.gnv.chart.ChartStyle,
+     *      de.intevation.gnv.chart.ChartLabels)
+     */
+    @Override
+    protected void createChart(OutputStream outputStream,
+                               Collection<KeyValueDescibeData> parameters,
+                               Collection<KeyValueDescibeData> measurements,
+                               Collection<KeyValueDescibeData> dates,
+                               ChartStyle chartStyle, ChartLabels chartLables,
+                               String uuid) throws IOException,
+                                           TechnicalChartException {
+        HorizontalProfileChartFactory chartFactory = new HorizontalProfileChartFactory();
+        chartFactory.createProfileChart(chartLables, chartStyle, parameters,
+                measurements,dates, outputStream, this.getChartResult(uuid));
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#getStatisticsGenerator()
+     */
+    @Override
+    protected Statistics getStatisticsGenerator() {
+        return new HorizontalProfileStatistics();
+    }
+
+    @Override
+    protected void createCSV(OutputStream outputStream,
+                             Collection<Result> chartResult)
+                                                            throws UnsupportedEncodingException,
+                                                            IOException,
+                                                            TransitionException {
+       
+        log.debug("createCSV for HorizontalProfileOutputTransition.");
+        DefaultExport export = new DefaultExport(
+            new ShapeDataCollector(TIMESERIES_CSV_PROFILE_NAMES));
+
+        export.create(TIMESERIES_CSV_PROFILE, outputStream, chartResult);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,64 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.profile.horizontal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import de.intevation.artifacts.CallMeta;
+import de.intevation.gnv.artifacts.ressource.RessourceFactory;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.transition.TransitionBase;
+import de.intevation.gnv.transition.describedata.DefaultKeyValueDescribeData;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.transition.describedata.NamedArrayList;
+import de.intevation.gnv.transition.describedata.NamedCollection;
+import de.intevation.gnv.transition.exception.TransitionException;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class NorthSouthEastWestTransition extends TransitionBase {
+
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = -7989531326553305293L;
+
+    /**
+     * Constructor
+     */
+    public NorthSouthEastWestTransition() {
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.TransitionBase#advance(java.lang.String,
+     *      de.intevation.artifacts.CallMeta)
+     */
+    @Override
+    public void advance(String uuid, CallMeta callMeta)
+                                                       throws TransitionException {
+        Collection<Object> describeData = this.getDescibeData(uuid);
+        if (describeData == null) {
+            describeData = new ArrayList<Object>();
+        }
+        NamedCollection<KeyValueDescibeData> keyValueDescibeData = new NamedArrayList<KeyValueDescibeData>(
+                this.dataName, 2);
+        keyValueDescibeData.setMultiSelect(super.dataMultiSelect);
+        keyValueDescibeData.add(new DefaultKeyValueDescribeData("IPOSITION",
+                RessourceFactory.getInstance().getRessource(
+                        callMeta.getLanguages(), "iposition", "iposition")));
+        keyValueDescibeData.add(new DefaultKeyValueDescribeData("JPOSITION",
+                RessourceFactory.getInstance().getRessource(
+                        callMeta.getLanguages(), "jposition", "jposition")));
+        describeData.add(keyValueDescibeData);
+    }
+
+    @Override
+    protected void purifyResult(Collection<Result> result, String uuid) {
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/horizontalcrosssection/HorizontalCrossSectionMeshOutputTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,119 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.profile.horizontalcrosssection;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.log4j.Logger;
+
+import au.com.bytecode.opencsv.CSVWriter;
+import de.intevation.gnv.chart.ChartLabels;
+import de.intevation.gnv.chart.ChartStyle;
+import de.intevation.gnv.chart.HorizontalCrossSectionChartFactory;
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.statistics.Statistics;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.transition.exception.TransitionException;
+import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class HorizontalCrossSectionMeshOutputTransition 
+                                      extends TimeSeriesOutputTransition {
+
+    private static Logger log = Logger
+    .getLogger(HorizontalCrossSectionMeshOutputTransition.class);
+    
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = 3233620652465061860L;
+
+    /**
+     * Constructor
+     */
+    public HorizontalCrossSectionMeshOutputTransition() {
+        super();
+        super.domainLable = "Latitude [m]";
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createChart(java.io.OutputStream,
+     *      java.util.Collection, java.util.Collection, java.lang.String,
+     *      de.intevation.gnv.chart.ChartStyle,
+     *      de.intevation.gnv.chart.ChartLabels)
+     */
+    @Override
+    protected void createChart(OutputStream outputStream,
+                               Collection<KeyValueDescibeData> parameters,
+                               Collection<KeyValueDescibeData> measurements,
+                               Collection<KeyValueDescibeData> dates,
+                               ChartStyle chartStyle, ChartLabels chartLables,
+                               String uuid) throws IOException,
+                                           TechnicalChartException {
+       new HorizontalCrossSectionChartFactory().
+            createProfileChart(chartLables,  chartStyle, 
+                               parameters, measurements, 
+                               dates, outputStream, 
+                               this.getChartResult(uuid));
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#getStatisticsGenerator()
+     */
+    @Override
+    protected Statistics getStatisticsGenerator() {
+        return null; //Statistiken werden nicht für diesen Out-Typ unterstützt.
+    }
+    
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createCSV(java.io.OutputStream,
+     *      java.util.Collection)
+     */
+    @Override
+    protected void createCSV(OutputStream outputStream,
+                             Collection<Result> chartResult)
+                                            throws UnsupportedEncodingException,
+                                                   IOException,
+                                                   TransitionException {
+        if (chartResult != null) {
+            try {
+                CSVWriter writer = new CSVWriter(new OutputStreamWriter(
+                        outputStream, "ISO-8859-1"), ','); 
+                // USE THIS ENCODING BECAUSE OF
+                // PROBLEMS WITH EXCEL AND UTF-8
+                Iterator<Result> it = chartResult.iterator();
+                while (it.hasNext()) {
+                    Result result = it.next();
+                    int i = 0;
+                    String[] entries = new String[5];
+                    entries[i++] = result.getString("SHAPE");
+                    entries[i++] = result.getString("YORDINATE");
+                    entries[i++] = result.getString("IPOSITION");
+                    entries[i++] = result.getString("JPOSITION");
+                    entries[i++] = result.getString("KPOSITION");
+                    writer.writeNext(entries);
+                }
+                writer.close();
+            } catch (Exception e) {
+                log.error(e,e);
+                throw new TransitionException(
+                "Exception occured while parsing an Point from WKT.");
+            }
+        } else {
+            log.error("No Data given for generating an CSV-File.");
+            throw new TransitionException(
+                    "No Data given for generating an CSV-File.");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,64 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.profile.vertical;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Collection;
+
+import de.intevation.gnv.chart.ChartLabels;
+import de.intevation.gnv.chart.ChartStyle;
+import de.intevation.gnv.chart.VerticalProfileChartFactory;
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.statistics.Statistics;
+import de.intevation.gnv.statistics.VerticalProfileStatistics;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class VerticalProfileOutputTransition extends TimeSeriesOutputTransition {
+    /**
+     * The UID of this class
+     */
+    private static final long serialVersionUID = 4401516087492028840L;
+
+    /**
+     * Constructor
+     */
+    public VerticalProfileOutputTransition() {
+        super();
+        super.domainLable = "Depth [m]";
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createChart(java.io.OutputStream,
+     *      java.util.Collection, java.util.Collection, java.lang.String,
+     *      de.intevation.gnv.chart.ChartStyle,
+     *      de.intevation.gnv.chart.ChartLabels)
+     */
+    @Override
+    protected void createChart(OutputStream outputStream,
+                               Collection<KeyValueDescibeData> parameters,
+                               Collection<KeyValueDescibeData> measurements,
+                               Collection<KeyValueDescibeData> dates,
+                               ChartStyle chartStyle, ChartLabels chartLables,
+                               String uuid) throws IOException,
+                                           TechnicalChartException {
+        VerticalProfileChartFactory chartFactory = new VerticalProfileChartFactory();
+        chartFactory.createProfileChart(chartLables, chartStyle, parameters,
+                measurements,dates, outputStream, this.getChartResult(uuid));
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#getStatisticsGenerator()
+     */
+    @Override
+    protected Statistics getStatisticsGenerator() {
+        return new VerticalProfileStatistics();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/verticalcrosssection/VerticalCrossSectionOutputTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,126 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.profile.verticalcrosssection;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.log4j.Logger;
+
+import au.com.bytecode.opencsv.CSVWriter;
+
+import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.io.ParseException;
+import com.vividsolutions.jts.io.WKTReader;
+
+import de.intevation.gnv.chart.ChartLabels;
+import de.intevation.gnv.chart.ChartStyle;
+import de.intevation.gnv.chart.VerticalCrossSectionChartFactory;
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.statistics.Statistics;
+import de.intevation.gnv.statistics.VerticalProfileStatistics;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.transition.exception.TransitionException;
+import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class VerticalCrossSectionOutputTransition extends TimeSeriesOutputTransition {
+
+    private static Logger log = Logger
+    .getLogger(VerticalCrossSectionOutputTransition.class);
+    
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = 3233620652465061860L;
+
+    /**
+     * Constructor
+     */
+    public VerticalCrossSectionOutputTransition() {
+        super();
+        super.domainLable = "Depth [m]";
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createChart(java.io.OutputStream,
+     *      java.util.Collection, java.util.Collection, java.lang.String,
+     *      de.intevation.gnv.chart.ChartStyle,
+     *      de.intevation.gnv.chart.ChartLabels)
+     */
+    @Override
+    protected void createChart(OutputStream outputStream,
+                               Collection<KeyValueDescibeData> parameters,
+                               Collection<KeyValueDescibeData> measurements,
+                               Collection<KeyValueDescibeData> dates,
+                               ChartStyle chartStyle, ChartLabels chartLables,
+                               String uuid) throws IOException,
+                                           TechnicalChartException {
+        new VerticalCrossSectionChartFactory().createProfileChart(chartLables,
+                chartStyle, parameters, measurements, dates, outputStream, this
+                        .getChartResult(uuid));
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#getStatisticsGenerator()
+     */
+    @Override
+    protected Statistics getStatisticsGenerator() {
+        return new VerticalProfileStatistics();
+    }
+    
+    /**
+     * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createCSV(java.io.OutputStream, java.util.Collection)
+     */
+    @Override
+    protected void createCSV(OutputStream outputStream,
+                             Collection<Result> chartResult)
+                                                            throws UnsupportedEncodingException,
+                                                            IOException,
+                                                            TransitionException {
+        if (chartResult != null) {
+            try {
+                CSVWriter writer = new CSVWriter(new OutputStreamWriter(
+                        outputStream, "ISO-8859-1"), ','); 
+                // USE THIS ENCODING BECAUSE OF
+                // PROBLEMS WITH EXCEL AND UTF-8
+                Iterator<Result> it = chartResult.iterator();
+                WKTReader wktReader = new WKTReader();
+                while (it.hasNext()) {
+                    Result result = it.next();
+                    int i = 0;
+                    String[] entries = new String[8];
+                    Point p = (Point)wktReader.read(result.getString("SHAPE"));
+                    entries[i++] = ""+p.getX();
+                    entries[i++] = ""+p.getY();
+                    entries[i++] = result.getString("YORDINATE");
+                    entries[i++] = result.getString("GROUP1");
+                    entries[i++] = result.getString("GROUP2");
+                    entries[i++] = result.getString("IPOSITION");
+                    entries[i++] = result.getString("JPOSITION");
+                    entries[i++] = result.getString("KPOSITION");
+                    writer.writeNext(entries);
+                }
+                writer.close();
+            } catch (ParseException e) {
+                log.error(e,e);
+                throw new TransitionException(
+                "Exception occured while parsing an Point from WKT.");
+            }
+        } else {
+            log.error("No Data given for generating an CSV-File.");
+            throw new TransitionException(
+                    "No Data given for generating an CSV-File.");
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,475 @@
+/**
+ *
+ */
+package de.intevation.gnv.transition.timeseries;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import au.com.bytecode.opencsv.CSVWriter;
+import de.intevation.artifactdatabase.Config;
+import de.intevation.artifactdatabase.XMLUtils;
+import de.intevation.artifacts.CallMeta;
+import de.intevation.artifacts.PreferredLocale;
+import de.intevation.gnv.artifacts.ressource.RessourceFactory;
+import de.intevation.gnv.chart.ChartFactory;
+import de.intevation.gnv.chart.ChartLabels;
+import de.intevation.gnv.chart.ChartStyle;
+import de.intevation.gnv.chart.exception.TechnicalChartException;
+import de.intevation.gnv.exports.DefaultExport;
+import de.intevation.gnv.exports.DefaultProfile;
+import de.intevation.gnv.exports.Export.Profile;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.statistics.Statistic;
+import de.intevation.gnv.statistics.StatisticSet;
+import de.intevation.gnv.statistics.Statistics;
+import de.intevation.gnv.statistics.TimeseriesStatistics;
+import de.intevation.gnv.statistics.exception.StatisticsException;
+import de.intevation.gnv.timeseries.gap.DefaultTimeGap;
+import de.intevation.gnv.timeseries.gap.TimeGap;
+import de.intevation.gnv.transition.InputData;
+import de.intevation.gnv.transition.OutputTransitionBase;
+import de.intevation.gnv.transition.describedata.KeyValueDescibeData;
+import de.intevation.gnv.transition.describedata.NamedCollection;
+import de.intevation.gnv.transition.exception.TransitionException;
+import de.intevation.gnv.exports.DefaultExport;
+import de.intevation.gnv.exports.DefaultDataCollector;
+import de.intevation.gnv.exports.SimpleOdvDataCollector;
+import de.intevation.gnv.exports.DefaultProfile;
+import de.intevation.gnv.exports.Export.Profile;
+import de.intevation.gnv.utils.ArtifactXMLUtilities;
+
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class TimeSeriesOutputTransition extends OutputTransitionBase {
+
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = 4178407570503098858L;
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(TimeSeriesOutputTransition.class);
+    
+    
+    private static List<TimeGap> timeGapDefinitions = null;
+
+    protected String domainLable = "Zeit [UTC]";
+
+    protected String featureValuesName = "featureid";
+    protected String parameterValuesName = "parameterid";
+    protected String measuremenValueName = "measurementid";
+    protected String dateValueName = "dateid";
+    
+    public static final String [] TIMESERIES_CSV_PROFILE_NAMES = {
+        "XORDINATE",
+        "YORDINATE",
+        "GROUP1",
+        "GROUP2",
+        "GROUP3"
+    };
+    
+    public static final String [] TIMESERIES_ODV_PROFILE_NAMES = {
+          "CRUISE",
+          "STATION",
+          "TYPE",
+          "SHAPE",
+          "BOTDEPTH",
+          "DEPTH",
+          "TIMEVALUE",
+          "DATAVALUE",
+          "PARAMETER"
+    };
+
+
+    public static final String [] ODV_COLUMN_HEADER = {
+        "Cruise",
+        "Station",
+        "Type",
+        "Longitude [deegrees_east]",
+        "Latitude [deegrees_north]",
+        "Bot. Depth [m]",
+        "Depth [m]",
+        "Date/Time",
+        "Value",
+        "Parameterid"
+    };
+
+    /**
+     * Profile for exporting data to cvs
+     */
+    public static final Profile TIMESERIES_CSV_PROFILE =
+        new DefaultProfile(
+            null,
+            ',',
+            '"',
+            '"',
+            "CSV",
+            "ISO-8859-1");
+
+    /**
+     * Profile for exporting data to odv
+     * TODO Change TIMESERIES_PROFILE_NAMES, which belong to CSV exports
+     */
+    public static final Profile TIMESERIES_ODV_PROFILE =
+        new DefaultProfile(
+            ODV_COLUMN_HEADER,
+            '\t',
+            CSVWriter.NO_QUOTE_CHARACTER,
+            CSVWriter.NO_ESCAPE_CHARACTER,
+            "ODV",
+            "ISO-8859-1");
+
+    /**
+     * Constructor
+     */
+    public TimeSeriesOutputTransition() {
+        super();
+    }
+
+    /**
+     * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String,
+     *      java.util.Collection, java.io.OutputStream, java.lang.String,
+     *      de.intevation.artifacts.CallMeta)
+     */
+    public void out(String outputMode, Collection<InputData> inputData,
+                    OutputStream outputStream, String uuid, CallMeta callMeta)
+                                                                              throws TransitionException {
+        log.debug("TimeSeriesOutputTransition.out");
+        try {
+
+            this.advance(uuid, callMeta); // TODO This hsould only be done if it is nessessary
+           
+            if (outputMode.equalsIgnoreCase("chart")) {
+                log.debug("Chart will be generated.");
+                int chartWidth = 600;
+                int chartHeight = 400;
+                try {
+                    if (inputData != null) {
+                        Iterator<InputData> it = inputData.iterator();
+                        while (it.hasNext()) {
+                            InputData ip = it.next();
+                            if (ip.getName().equalsIgnoreCase("width")) {
+                                chartWidth = Integer.parseInt(ip.getValue());
+                            } else if (ip.getName().equalsIgnoreCase("height")) {
+                                chartHeight = Integer.parseInt(ip.getValue());
+                            }
+                        }
+                    }
+                } catch (NumberFormatException e) {
+                    log.error(e, e);
+                    throw new TransitionException(e);
+                }
+                Collection<KeyValueDescibeData> parameters = this.getParameters(uuid);
+                Collection<KeyValueDescibeData> measurements = this.getMeasurements(uuid);
+                Collection<KeyValueDescibeData> dates = this.getDates(uuid);
+                ChartStyle chartStyle = this
+                        .creatStyle(chartWidth, chartHeight);
+                ChartLabels chartLables = new ChartLabels(this.getFisName(callMeta.getLanguages())+" "+this
+                        .getSelectedFeatureName(uuid), this.domainLable);
+                this.createChart(outputStream, parameters, measurements,dates,
+                        chartStyle, chartLables, uuid);
+            } else if (outputMode.equalsIgnoreCase("csv")) {
+                log.debug("CSV-File will be generated.");
+                Collection<Result> chartResult = this.getChartResult(uuid);
+                this.createCSV(outputStream, chartResult);
+            } else if (outputMode.equalsIgnoreCase("statistics")) {
+                log.debug("Statistics will be generated.");
+                Statistics s = getStatisticsGenerator();
+                Collection<Result> chartResult = this.getChartResult(uuid);
+                Collection<KeyValueDescibeData> parameters = 
+                                                this.getParameters(uuid);
+                Collection<KeyValueDescibeData> measurements = 
+                                                this.getMeasurements(uuid);
+                Collection<KeyValueDescibeData> dates = 
+                                                this.getDates(uuid);
+                Collection<StatisticSet> statistics = 
+                                      s.calculateStatistics(chartResult,
+                                                            parameters,
+                                                            measurements,
+                                                            dates);
+                Document doc = this.writeStatistics2XML(statistics);
+                this.writeDocument2OutputStream(doc, outputStream);
+            } else if (outputMode.equalsIgnoreCase("odv")) {
+                
+                Collection<Result> odvResult = this.getODVResult(uuid);
+                this.createODV(outputStream, odvResult);
+            }
+        } catch (IOException e) {
+            log.error(e, e);
+            throw new TransitionException(e);
+        } catch (TechnicalChartException e) {
+            log.error(e, e);
+            throw new TransitionException(e);
+        } catch (StatisticsException e) {
+            log.error(e, e);
+            throw new TransitionException(e);
+        }
+    }
+
+    
+    /**
+     * @param outputStream
+     * @param chartResult
+     * @throws UnsupportedEncodingException
+     * @throws IOException
+     * @throws TransitionException
+     */
+    protected void createCSV(OutputStream outputStream,
+                            Collection<Result> chartResult)
+                                                          throws UnsupportedEncodingException,
+                                                          IOException,
+                                                          TransitionException {
+        DefaultExport export = new DefaultExport(new DefaultDataCollector(
+            TIMESERIES_CSV_PROFILE_NAMES));
+
+        export.create(TIMESERIES_CSV_PROFILE, outputStream, chartResult);
+    }
+
+    /**
+     * TODO Result is not used at the moment. Change result with correct data.
+     */
+    protected void createODV(OutputStream outputStream, Collection result)
+    throws IOException, TransitionException {
+
+        DefaultExport export = new DefaultExport(new SimpleOdvDataCollector(
+            TIMESERIES_ODV_PROFILE_NAMES));
+
+        if (result == null)
+            log.error("#################### RESULT == NULL #################");
+        export.create(TIMESERIES_ODV_PROFILE, outputStream, result);
+    }
+
+    /**
+     * @return
+     */
+    protected Statistics getStatisticsGenerator() {
+        Statistics s = new TimeseriesStatistics();
+        return s;
+    }
+
+    protected void writeDocument2OutputStream(Document document, OutputStream os) {
+
+        try {
+            TransformerFactory transformerFactory = TransformerFactory
+                    .newInstance();
+            Transformer transformer = transformerFactory.newTransformer();
+            DOMSource source = new DOMSource(document);
+            StreamResult result = new StreamResult(os);
+            transformer.transform(source, result);
+        } catch (TransformerConfigurationException e) {
+            log.error(e, e);
+        } catch (TransformerFactoryConfigurationError e) {
+            log.error(e, e);
+        } catch (TransformerException e) {
+            log.error(e, e);
+        }
+    }
+
+    protected Document writeStatistics2XML( Collection<StatisticSet> statistic) {
+        ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities();
+        Document doc = XMLUtils.newDocument();
+        if (statistic != null) {
+            Node statisticResults = xmlUtilities.createArtifactElement(doc,
+                    "statistics");
+            doc.appendChild(statisticResults);
+            Iterator<StatisticSet> it = statistic.iterator();
+            while (it.hasNext()) {
+                StatisticSet set = it.next();
+                Element setElement = xmlUtilities.createArtifactElement(doc,
+                                                                       "statistic");
+                setElement.setAttribute("name", set.getName());
+                
+                Iterator<Statistic> sit = set.getStatistics().iterator();
+                while (sit.hasNext()){
+                    Statistic s = sit.next();
+                    Element result = xmlUtilities.createArtifactElement(doc,
+                    "statistic-value");
+                    result.setAttribute("name", s.getKey());
+                    result.setAttribute("value", s.getStringValue());
+                    setElement.appendChild(result);
+                }
+                statisticResults.appendChild(setElement);
+            }
+
+        }
+        return doc;
+    }
+
+    protected String getSelectedFeatureName(String uuid) {
+        Collection<KeyValueDescibeData> values = this
+                .getCollection(featureValuesName, uuid);
+        if (values != null) {
+            Iterator<KeyValueDescibeData> it = values.iterator();
+            while (it.hasNext()) {
+                KeyValueDescibeData data = it.next();
+                if (data.isSelected()) {
+                    return data.getValue();
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * @param outputStream
+     * @param parameters
+     * @param measurements
+     * @param timeSeriesName
+     * @param chartStyle
+     * @param chartLables
+     * @throws IOException
+     * @throws TechnicalChartException
+     */
+    protected void createChart(OutputStream outputStream,
+                               Collection<KeyValueDescibeData> parameters,
+                               Collection<KeyValueDescibeData> measurements,
+                               Collection<KeyValueDescibeData> dates,
+                               ChartStyle chartStyle, ChartLabels chartLables,
+                               String uuid) throws IOException,
+                                           TechnicalChartException {
+        ChartFactory chartFactory = new ChartFactory();
+        chartFactory.createSimpleTimeSeriesChart(chartLables, chartStyle,
+                parameters, measurements, outputStream, this
+                        .getChartResult(uuid),timeGapDefinitions);
+    }
+
+    protected ChartStyle creatStyle(int witdh, int height) {
+        // TODO Konfigurierbar machen
+        de.intevation.gnv.chart.Insets lInsets = new de.intevation.gnv.chart.Insets(
+                5d, 5d, 5d, 5d);
+        Dimension lChartSize = new Dimension(witdh, height);
+        return new ChartStyle(Color.white, new Color(230, 230, 230),
+                Color.white, Color.white, true, true, lInsets, lChartSize);
+    }
+    
+    protected String getFisName(PreferredLocale[] preferredLocales){
+        String returnValue = "";
+        InputData inputData = this.inputData.get("fisname");
+        if (inputData != null){
+            returnValue = RessourceFactory.getInstance()
+                                          .getRessource(preferredLocales, 
+                                                        inputData.getValue(), 
+                                                        inputData.getValue());
+        }
+        return returnValue;
+    }
+
+    protected Collection<KeyValueDescibeData> getParameters(String uuid) {
+        return this.getCollection(parameterValuesName, uuid);
+    }
+
+    protected Collection<KeyValueDescibeData> getMeasurements(String uuid) {
+        return this.getCollection(measuremenValueName, uuid);
+    }
+    protected Collection<KeyValueDescibeData> getDates(String uuid) {
+        return this.getCollection(dateValueName,uuid);
+    }
+
+    @Override
+    public void setup(Node configuration) {
+        super.setup(configuration);
+        String featureNameValue = Config.getStringXPath(configuration,
+                "value-names/value-name[@name='feature']/@value");
+        if (featureNameValue != null) {
+            this.featureValuesName = featureNameValue;
+        }
+        String parameterNameValue = Config.getStringXPath(configuration,
+                "value-names/value-name[@name='parameter']/@value");
+        if (parameterNameValue != null) {
+            this.parameterValuesName = parameterNameValue;
+        }
+        String measurementNameValue = Config.getStringXPath(configuration,
+                "value-names/value-name[@name='measurement']/@value");
+        if (measurementNameValue != null) {
+            this.measuremenValueName = measurementNameValue;
+        }
+        
+        String dateNameValue = Config.getStringXPath(configuration,
+        "value-names/value-name[@name='date']/@value");
+        if (dateNameValue != null) {
+            this.dateValueName = dateNameValue;
+        }
+        if (timeGapDefinitions == null){
+            Element gapDefinition =  (Element)Config.getNodeXPath(configuration,
+                                                                 "time-gap-definition");
+            synchronized (this.getClass()) {
+                if (gapDefinition != null){
+                    String link = gapDefinition.getAttribute("xlink:href");
+                    if (link != null ){
+                        String absolutFileName = Config.replaceConfigDir(link);
+                        gapDefinition = (Element)new ArtifactXMLUtilities().
+                                                     readConfiguration(absolutFileName);
+                    }
+                    
+                    NodeList gapDefinitions = Config.getNodeSetXPath(gapDefinition, 
+                                                                    "/time-gaps/time-gap");
+                    if (gapDefinition != null){
+                        timeGapDefinitions = new ArrayList<TimeGap>(gapDefinitions.
+                                                                    getLength());
+                        for (int i = 0; i < gapDefinitions.getLength(); i++){
+                            Element gapNode = (Element)gapDefinitions.item(i);
+                            String unit = gapNode.getAttribute("unit");
+                            int key = Integer.parseInt(gapNode.getAttribute("key"));
+                            int value = Integer.parseInt(gapNode.getAttribute("gap"));
+                            log.info("Add new Timegap: "+key+" "+value+" "+ unit);
+                            timeGapDefinitions.add(new DefaultTimeGap(unit, 
+                                                                      key, 
+                                                                      value));
+                        }
+                    }
+                    
+                }
+            }
+        }
+    }
+    
+    /**
+     * @param collectionName
+     * @return
+     */
+    protected Collection<KeyValueDescibeData> getCollection(
+                                                            String collectionName, 
+                                                            String uuid) {
+        Iterator<Object> it = this.getDescibeData(uuid).iterator();
+        while (it.hasNext()) {
+
+            Object o = it.next();
+
+            if (o instanceof NamedCollection<?>) {
+                NamedCollection<KeyValueDescibeData> nc = (NamedCollection<KeyValueDescibeData>) o;
+                if (nc.getName().equals(collectionName)) {
+                    return nc;
+                }
+            }
+        }
+        return null;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/ArtifactFactoryUtilities.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,55 @@
+/**
+ *
+ */
+package de.intevation.gnv.utils;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+import de.intevation.artifacts.ArtifactFactory;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class ArtifactFactoryUtilities {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(ArtifactFactoryUtilities.class);
+
+    /**
+     * Constructor
+     */
+    public ArtifactFactoryUtilities() {
+    }
+
+    public ArtifactFactory createArtitfactFactor(Document config,
+                                                 Node artifactFactoryNode) {
+        String className = artifactFactoryNode.getTextContent();
+
+        ArtifactFactory factory = null;
+
+        try {
+            Class clazz = Class.forName(className);
+            factory = (ArtifactFactory) clazz.newInstance();
+        } catch (ClassNotFoundException cnfe) {
+            log.error(cnfe.getLocalizedMessage(), cnfe);
+        } catch (InstantiationException ie) {
+            log.error(ie.getLocalizedMessage(), ie);
+        } catch (ClassCastException cce) {
+            log.error(cce.getLocalizedMessage(), cce);
+        } catch (IllegalAccessException iae) {
+            log.error(iae.getLocalizedMessage(), iae);
+        }
+
+        if (factory != null) {
+            factory.setup(config, artifactFactoryNode);
+            log.info("Registering '" + factory.getName()
+                     + "' as artifact factory.");
+        }
+        return factory;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,163 @@
+/**
+ *
+ */
+package de.intevation.gnv.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.SAXException;
+
+import de.intevation.artifacts.ArtifactNamespaceContext;
+import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class ArtifactXMLUtilities implements Serializable {
+    /**
+     *
+     */
+    private static final long serialVersionUID = -6236340358303411758L;
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger
+            .getLogger(TimeSeriesOutputTransition.class);
+
+    public static final String XFORM_URL = "http://www.w3.org/2002/xforms";
+    public static final String XFORM_PREFIX = "xform";
+
+    /**
+     * Constructor
+     */
+    public ArtifactXMLUtilities() {
+    }
+
+    /**
+     * @param document
+     * @return
+     */
+    public Element createArtifactElement(Document document, String name) {
+        Element node = document.createElementNS(
+                ArtifactNamespaceContext.NAMESPACE_URI, name);
+        node.setPrefix(ArtifactNamespaceContext.NAMESPACE_PREFIX);
+        return node;
+    }
+
+    public String writeDocument2String(Document document) {
+        try {
+            TransformerFactory transformerFactory = TransformerFactory
+                    .newInstance();
+            Transformer transformer = transformerFactory.newTransformer();
+            DOMSource source = new DOMSource(document);
+            StringWriter sw = new StringWriter();
+            StreamResult result = new StreamResult(sw);
+            transformer.transform(source, result);
+            return sw.getBuffer().toString();
+        } catch (TransformerConfigurationException e) {
+            log.error(e, e);
+        } catch (TransformerFactoryConfigurationError e) {
+            log.error(e, e);
+        } catch (TransformerException e) {
+            log.error(e, e);
+        }
+        return null;
+    }
+
+    public Document readDocument(InputStream inputStream) {
+        Document returnValue = null;
+        try {
+            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
+                    .newInstance();
+            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
+            returnValue = docBuilder.parse(inputStream);
+        } catch (ParserConfigurationException e) {
+            log.error(e, e);
+        } catch (SAXException e) {
+            log.error(e, e);
+        } catch (IOException e) {
+            log.error(e, e);
+        }
+        return returnValue;
+    }
+
+    public Document reInitDocument(Document document) {
+        try {
+            byte[] barray = this.writeDocument2String(document).getBytes(
+                    "UTF-8");
+            InputStream inputStream = new ByteArrayInputStream(barray);
+            return this.readDocument(inputStream);
+        } catch (UnsupportedEncodingException e) {
+            log.error(e, e);
+        }
+        return document;
+    }
+
+    public Element createXFormElement(Document document, String name) {
+        Element node = document.createElementNS(XFORM_URL, name);
+        node.setPrefix(XFORM_PREFIX);
+        return node;
+    }
+
+    public Document createExceptionReport(String message, Document document) {
+        log.debug("ArtifactXMLUtilities.createExceptionReport");
+        Element exceptionReportNode = this.createArtifactElement(document,
+                "exceptionreport");
+        document.appendChild(exceptionReportNode);
+        Element exceptionNode = this.createArtifactElement(document,
+                "exception");
+        exceptionNode.setTextContent(message);
+        exceptionReportNode.appendChild(exceptionNode);
+        return document;
+    }
+
+    public Document createSuccessReport(String message, Document document) {
+        log.debug("ArtifactXMLUtilities.creatSuccessReport");
+        Element reportNode = this.createArtifactElement(document, "result");
+        document.appendChild(reportNode);
+        Element successNode = this.createArtifactElement(document, "success");
+        successNode.setTextContent(message);
+        reportNode.appendChild(successNode);
+        return document;
+    }
+    
+    public Node readConfiguration(String fileName){
+        try {
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            factory.setValidating(false); 
+            return factory.newDocumentBuilder().parse(fileName).getChildNodes().item(0);
+        } catch (SAXException e) {
+            log.error(e,e);
+            return null;
+        } catch (IOException e) {
+            log.error(e,e);
+            return null;
+        } catch (ParserConfigurationException e) {
+            log.error(e,e);
+            return null;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/DistanceCalculator.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,65 @@
+/**
+ *
+ */
+package de.intevation.gnv.utils;
+
+import com.vividsolutions.jts.geom.Point;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ *
+ */
+public class DistanceCalculator {
+
+    private final static double flattening = 1.0 / 298.257233563;
+    
+    private final static double earthRadius = 6378137.0 / 1000.0 ;
+    
+    /**
+     * Constructor
+     */
+    public DistanceCalculator() {
+    }
+    
+    public double calculateDistance(Point p1, Point p2){
+        double resultValue = 0.0;
+        
+        double b1 = p1.getY();
+        double b2 = p2.getY();
+        
+        double l1 = p1.getX();
+        double l2 = p2.getX();
+        
+        
+        double F = (b1 + b2) / 2.0;
+        double G = (b1 - b2) / 2.0;
+        double l = (l1 - l2) / 2.0;
+        
+        F = (Math.PI / 180.0) * F;
+        G = (Math.PI / 180.0) * G;
+        l = (Math.PI / 180.0) * l;
+        
+        double S = ((Math.sin(G) * Math.sin(G)) * ((Math.cos(l) * Math.cos(l))))+
+                   ((Math.cos(F) * Math.cos(F)) * ((Math.sin(l) * Math.sin(l))));
+        
+        double C = ((Math.cos(G) * Math.cos(G)) * ((Math.cos(l) * Math.cos(l))))+
+                   ((Math.sin(F) * Math.sin(F)) * ((Math.sin(l) * Math.sin(l))));
+        
+        double w = Math.atan(Math.sqrt((S/C)));
+        
+        double D = 2.0 * w * earthRadius;
+        
+        double R = Math.sqrt((S*C)) / w;
+        
+        double H1 = (3.0 * R - 1.0 ) / (2.0 * C);
+        double H2 = (3.0 * R + 1.0 ) / (2.0 * S);
+        
+        resultValue = D * (1 + (flattening * H1 * (Math.sin(F) * Math.sin(F)) * 
+                                                  (Math.cos(G) * Math.cos(G))) - 
+                           (flattening * H2 * (Math.cos(F) * Math.cos(F)) * 
+                                              (Math.sin(G) * Math.sin(G))));
+        
+        return resultValue;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/InputValidator.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,154 @@
+/**
+ *
+ */
+package de.intevation.gnv.utils;
+
+import java.util.Date;
+
+import org.apache.commons.validator.GenericValidator;
+import org.apache.log4j.Logger;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.Point;
+
+import de.intevation.gnv.geobackend.util.DateUtils;
+import de.intevation.gnv.utils.exception.ValidationException;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class InputValidator {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(InputValidator.class);
+    
+    
+    public final static String NODATASELECTEDVALUE = "n/n";
+
+    /**
+     * Constructor
+     */
+    public InputValidator() {
+        super();
+    }
+
+    public boolean isInputValid(String minInput, String maxInput, String type) {
+        log.debug("InputValidator.isInputValid " + minInput + " " + maxInput + " " +type);
+        boolean returnValue = false;
+        if ("Date".equalsIgnoreCase(type)) {
+            try {
+                Date min = DateUtils.getDateFromString(minInput,DateUtils.DATE_PATTERN);
+                Date max = DateUtils.getDateFromString(maxInput,DateUtils.DATE_PATTERN);
+                int value = max.compareTo(min);
+                returnValue = value >= 0;
+            } catch (Exception e) {
+                log.error(e,e);
+            }
+        } else if ("Double".equalsIgnoreCase(type)) {
+            try {
+                double min = Double.parseDouble(minInput);
+                double max = Double.parseDouble(maxInput);
+                returnValue = max >= min;
+            } catch (Exception e) {
+                log.error(e,e);
+            }
+        }
+        log.debug("Is valid? " + returnValue);
+        return returnValue;
+    }
+    
+    public boolean isInputValid(String input, String type) {
+        log.debug("InputValidator.isInputValid " + input + " " + type);
+        boolean returnValue = false;
+        String[] values = input.split(",");
+        for (int i = 0; i < values.length; i++) {
+            boolean valid;
+            
+            if (NODATASELECTEDVALUE.equals(values[i].trim())){
+                valid = true;
+            } else if ("Integer".equalsIgnoreCase(type)) {
+                valid = GenericValidator.isInt(values[i].trim());
+            } else if ("Double".equalsIgnoreCase(type)) {
+                valid = GenericValidator.isDouble(values[i].trim());
+            } else if ("String".equalsIgnoreCase(type)) {
+                valid = GenericValidator.matchRegexp(values[i], "[a-zA-Z0-9]"); // TODO:
+                                                                                // FIXME:
+                                                                                // VALIDATE
+                                                                                // REGEXP
+            } else if ("Date".equalsIgnoreCase(type)) {
+                valid = GenericValidator.isDate(values[i].trim(),
+                        DateUtils.DATE_PATTERN, true);
+            } else if ("Point".equalsIgnoreCase(type)) {
+                valid = GenericValidator.matchRegexp(values[i], "[0-9]"); // TODO:
+                                                                          // FIXME:
+                                                                          // VALIDATE
+                                                                          // REGEXP
+            } else if ("AttributeName".equalsIgnoreCase(type)) {
+                valid = org.apache.commons.validator.GenericValidator
+                        .matchRegexp(values[i], "[a-zA-Z0-9]"); // TODO: FIXME:
+                                                                // VALIDATE
+                                                                // REGEXP
+            } else if ("Coordinate".equalsIgnoreCase(type)) {
+                    try {
+                        valid = this.getPointValue(values[i]) != null;
+                    } catch (ValidationException e) {
+                        log.debug(e.getMessage());
+                        valid = false;
+                    }
+            } else {
+                valid = false;
+            }
+            if (!valid) {
+                returnValue = false;
+                break;
+            } else {
+                returnValue = true;
+            }
+        }
+        log.debug("Is valid? " + returnValue);
+        return returnValue;
+    }
+    
+    
+    public Point getPointValue(String value) throws ValidationException{
+        log.debug("InputValidator.getPointValue " + value);
+        String[] s, p;
+        
+        double x=0,y=0;
+        log.info("Position :"+value);
+        s = value.split(" ");
+        if (s.length != 2) {
+              throw new ValidationException("Kein Blank separiert Breite und Länge");
+        }
+        p = s[0].split("[nNsS]");
+        try {
+            if (p.length == 1)
+                y = new Double(p[0]);
+            else
+                y = new Double(p[0]) +   new Double(p[1]) / new Double(60.);
+            if (s[0].toLowerCase().contains("s"))
+                y = -y;
+        }
+        catch (Exception e) {
+            throw new ValidationException("Kein N|S oder nicht im ersten Substring, zB 56n42");
+        
+        } 
+        p = s[1].split("[eEwW]");
+        try {
+            if (p.length ==1)
+                x = new Double(p[0]);
+            else
+                x = new Double(p[0]) +  new Double(p[1]) / new Double(60.) ;
+            if (s[1].toLowerCase().contains("w"))
+                x = -x;
+        }
+        catch (Exception e) {
+            throw new ValidationException("Kein E|W oder nicht im zweiten Substring");
+        } 
+        return new GeometryFactory().createPoint(new Coordinate(x,y));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/exception/ValidationException.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,48 @@
+/**
+ *
+ */
+package de.intevation.gnv.utils.exception;
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ *
+ */
+public class ValidationException extends Exception {
+
+    /**
+     * The Uid of this Class
+     */
+    private static final long serialVersionUID = -6189218101861801079L;
+
+    /**
+     * Constructor
+     */
+    public ValidationException() {
+        super();
+    }
+
+    /**
+     * Constructor
+     * @param arg0
+     */
+    public ValidationException(String arg0) {
+        super(arg0);
+    }
+
+    /**
+     * Constructor
+     * @param arg0
+     */
+    public ValidationException(Throwable arg0) {
+        super(arg0);
+    }
+
+    /**
+     * Constructor
+     * @param arg0
+     * @param arg1
+     */
+    public ValidationException(String arg0, Throwable arg1) {
+        super(arg0, arg1);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/resources/lang/artifactMessages.properties	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,48 @@
+fis_marnet = Marnet
+fis_imis = IMIS
+fis_staun = STAUN
+fis_modeldata = Modeldata
+fis_delphin = Delphin
+fis_thermosalinograph = Thermosalinograph
+fis_chemusurvey = Chemusurvey
+fis_gts = GTS
+fis_bsh_ctd = CTD
+fis_bsh_xbt = XBT
+fis_eisklimatologie = Eisklimatologie
+fis_sst = SST
+fis_seastate = Sea State
+fis_seacat = SeaCat
+fis_currentmeter = Current Meter
+fis_icestations = Ice Station Report
+
+meshid= Mesh
+product= Product
+timeSeries= Timeseries
+verticalProfile = Verticalprofile
+horizontalProfile = Horizontalprofile
+horizontalCrossSection = Horizontal cross-section
+verticalcrosssection = Vertical cross-section
+featureid = Station
+mesh_coordinate = Geographic position (e.g. 56n30 6e20)
+mesh_point = Mesh Point
+measurementid = Measurement depth/height [m]
+depthrange = Measurementarea depth/height [m]
+mindepthid = Deepest Layer
+maxdepthid = Highest Layer
+parameterid = Parameter
+timeinterval = Time period
+minvalue = from
+maxvalue = to
+dateid = Measurement date
+vehicleid = Ship
+cruiseid = Cruise
+trackid = Track
+seriesid = Series
+surveyid = Survey Info
+axisid = Axis
+depthid = Layer and Depth range [m]
+iposition = I-Axis
+jposition = J-Axis
+instantaneouspoint_point = Momentanmesspunkt
+areaid=Area
+subareaid=Subarea
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/resources/lang/artifactMessages_de.properties	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,48 @@
+fis_marnet = Marnet
+fis_imis = IMIS
+fis_staun = STAUN
+fis_modeldata = Modeldaten
+fis_delphin = Delphin
+fis_thermosalinograph = Thermosalinograph
+fis_chemusurvey = Chemusurvey
+fis_gts = GTS
+fis_bsh_ctd = CTD
+fis_bsh_xbt = XBT
+fis_eisklimatologie = Eisklimatologie
+fis_sst = SST
+fis_seastate = Seegangsarchiv
+fis_seacat = SeaCat
+fis_currentmeter = Strommesser
+fis_icestations = Eismeldungen
+
+product= Produkt
+timeSeries= Zeitserie
+verticalProfile = Vertikalprofil
+horizontalProfile = Horizontalprofil
+horizontalCrossSection = Horizontalschnitt
+verticalcrosssection = Profilschnitt
+featureid = Station
+meshid= Netz
+mesh_coordinate = Position (z.B. 56n30 6e20)
+mesh_point = Messpunkt
+measurementid = Messung Tiefe/Höhe [m]
+depthrange = Messbereich Tiefe/Höhe [m]
+mindepthid = Tiefster Messbereich
+maxdepthid = Flachester Messbereich
+parameterid = Parameter
+timeinterval = Zeitfenster
+minvalue = von
+maxvalue = bis
+dateid = Messdatum
+vehicleid = Schiff
+cruiseid = Reise
+trackid = Track
+seriesid = Serie
+surveyid = Messinformation
+axisid = Achse
+depthid = Ebene und Tiefenbereich [m]
+iposition = I-Achse
+jposition = J-Achse
+instantaneouspoint_point = Momentanmesspunkt
+areaid=Gebiet
+subareaid=Teilgebiet
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/resources/lang/artifactMessages_de_DE.properties	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,48 @@
+fis_marnet = Marnet
+fis_imis = IMIS
+fis_staun = STAUN
+fis_modeldata = Modeldaten
+fis_delphin = Delphin
+fis_thermosalinograph = Thermosalinograph
+fis_chemusurvey = Chemusurvey
+fis_gts = GTS
+fis_bsh_ctd = CTD
+fis_bsh_xbt = XBT
+fis_eisklimatologie = Eisklimatologie
+fis_sst = SST
+fis_seastate = Seegangsarchiv
+fis_seacat = SeaCat
+fis_currentmeter = Strommesser
+fis_icestations = Eismeldungen
+
+product= Produkt
+timeSeries= Zeitserie
+verticalProfile = Vertikalprofil
+horizontalProfile = Horizontalprofil
+horizontalCrossSection = Horizontalschnitt
+verticalcrosssection = Profilschnitt
+featureid = Station
+meshid= Netz
+mesh_coordinate = Position (z.B. 56n30 6e20)
+mesh_point = Messpunkt
+measurementid = Messung Tiefe/Höhe [m]
+depthrange = Messbereich Tiefe/Höhe [m]
+mindepthid = Tiefster Messbereich
+maxdepthid = Flachester Messbereich
+parameterid = Parameter
+timeinterval = Zeitfenster
+minvalue = von
+maxvalue = bis
+dateid = Messdatum
+vehicleid = Schiff
+cruiseid = Reise
+trackid = Track
+seriesid = Serie
+surveyid = Messinformation
+axisid = Achse
+depthid = Ebene und Tiefenbereich [m]
+iposition = I-Achse
+jposition = J-Achse
+instantaneouspoint_point = Momentanmesspunkt
+areaid=Gebiet
+subareaid=Teilgebiet
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/resources/lang/artifactMessages_en.properties	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,48 @@
+fis_marnet = Marnet
+fis_imis = IMIS
+fis_staun = STAUN
+fis_modeldata = Modeldata
+fis_delphin = Delphin
+fis_thermosalinograph = Thermosalinograph
+fis_chemusurvey = Chemusurvey
+fis_gts = GTS
+fis_bsh_ctd = CTD
+fis_bsh_xbt = XBT
+fis_eisklimatologie = Iceclimatology
+fis_sst = SST
+fis_seastate = Sea State
+fis_seacat = SeaCat
+fis_currentmeter = Current Meter
+fis_icestations = Ice Station Report
+
+meshid= Mesh
+product= Product
+timeSeries= Timeseries
+verticalProfile = Verticalprofile
+horizontalProfile = Horizontalprofile
+horizontalCrossSection = Horizontal cross-section
+verticalcrosssection = Vertical cross-section
+featureid = Station
+mesh_coordinate = Geographic position (e.g. 56n30 6e20)
+mesh_point = Mesh Point
+measurementid = Measurement depth/height [m]
+depthrange = Measurementarea depth/height [m]
+mindepthid = Deepest Layer
+maxdepthid = Highest Layer
+parameterid = Parameter
+timeinterval = Time period
+minvalue = from
+maxvalue = to
+dateid = Measurement date
+vehicleid = Ship
+cruiseid = Cruise
+trackid = Track
+seriesid = Series
+surveyid = Survey Info
+axisid = Axis
+depthid = Layer and Depth range [m]
+iposition = I-Axis
+jposition = J-Axis
+instantaneouspoint_point = Instantaneouspoint
+areaid=Area
+subareaid=Subarea
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,964 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+import de.intevation.artifactdatabase.Config;
+import de.intevation.artifactdatabase.DefaultCallMeta;
+import de.intevation.artifactdatabase.DefaultPreferredLocale;
+import de.intevation.artifactdatabase.FactoryBootstrap;
+import de.intevation.artifacts.Artifact;
+import de.intevation.artifacts.ArtifactFactory;
+import de.intevation.artifacts.CallContext;
+import de.intevation.artifacts.CallMeta;
+import de.intevation.artifacts.PreferredLocale;
+import de.intevation.gnv.artifacts.context.GNVArtifactContext;
+import de.intevation.gnv.utils.ArtifactXMLUtilities;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class GNVArtifactsTestCase extends TestCase {
+
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = null;
+
+    static {
+        BasicConfigurator.configure();
+        log = Logger.getLogger(GNVArtifactContext.class);
+    }
+
+    private String configurationDir = "doc/conf";
+
+    private FactoryBootstrap bootstrap = null;
+
+    /**
+     * Constructor
+     * 
+     * @param name
+     */
+    public GNVArtifactsTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        log.debug("GNVArtifactsTestCase.setUp");
+        super.setUp();
+        log.info(Config.CONFIG_DIR + " ==> " + configurationDir);
+        System.setProperty(Config.CONFIG_DIR, configurationDir);
+        log.info("Bootstrap wird initialisiert.");
+        bootstrap = new FactoryBootstrap();
+        bootstrap.boot();
+    }
+
+    public void testTimeSeriesArtifact() {
+        try {
+            log.debug("GNVArtifactsTestCase.testTimeSeriesArtifact");
+            String artefactName = "fis_marnet";
+            ArtifactFactory artifactFactory = this
+                    .getArtifactFactory(artefactName);
+            assertNotNull(artifactFactory);
+            log.debug("TimeSeries-ArtifactFactory is available");
+            Artifact artifact = artifactFactory.createArtifact(
+                    "" + System.currentTimeMillis(), bootstrap.getContext());
+            assertNotNull(artifact);
+            log.debug("TimeSeries-Artifact is available");
+
+            CallContext cc = createCallContext();
+
+            // Erster Schritt
+
+            Document describeDocument = this.readDocument("src/test/ressources/timeseries/timeseries_describe.xml");
+            
+            int steps = 5;
+            
+            for (int i = 1; i <= steps; i++){
+            
+                this.doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/timeseries/" +
+                            "timeseries_step_0"+i+"_feed.xml",
+                            "src/test/ressources/timeseries/" +
+                            "timeseries_step_0"+i+"_advance.xml", 
+                            describeDocument);
+            }
+            
+            Document outputData = artifact.describe(describeDocument,cc);
+            FileOutputStream fos = null;
+            FileOutputStream fos2 = null;
+            FileOutputStream fos3 = null;
+            FileOutputStream fos4 = null;
+            try {
+                fos = new FileOutputStream("src/test/results/timeseries"
+                                           + System.currentTimeMillis()
+                                           + ".png");
+                fos2 = new FileOutputStream("src/test/results/timeseries"
+                                            + System.currentTimeMillis()
+                                            + ".xml");
+                fos3 = new FileOutputStream("src/test/results/timeseries"
+                                            + System.currentTimeMillis()
+                                            + ".csv");
+                fos4 = new FileOutputStream("src/test/results/timeseries"
+                        + System.currentTimeMillis()
+                        + ".odv");
+            
+                artifact.feed(this
+                              .readDocument("src/test/ressources/timeseries/timeseries_step_06_feed.xml"),
+                                            cc);
+                artifact.out(this
+                             .readDocument("src/test/ressources/timeseries/timeseries_step_06_out_chart.xml"),
+                                           fos, cc);
+                artifact.out(this
+                        .readDocument("src/test/ressources/timeseries/timeseries_step_06_out_statistics.xml"),
+                                      fos2, cc);
+                artifact.out(this
+                        .readDocument("src/test/ressources/timeseries/timeseries_step_06_out_csv.xml"),
+                                      fos3, cc);
+                artifact.out(this
+                        .readDocument("src/test/ressources/timeseries/timeseries_step_06_out_odv.xml"),
+                                      fos4, cc);
+            } catch (Exception e) {
+                log.error(e, e);
+                fail();
+            } finally {
+                try {
+                    fos.flush();
+                    fos.close();
+                } catch (Exception e) {
+                    log.error(e, e);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            fail();
+        }
+    }
+
+    /**
+     * @return
+     */
+    private CallContext createCallContext() {
+        CallMeta callMeta = new DefaultCallMeta(
+                new PreferredLocale[] { new DefaultPreferredLocale("de_DE",
+                        1.0f) });
+        CallContext cc = new TestCallContext(bootstrap.getContext(), callMeta);
+        return cc;
+    }
+
+    /**
+     * @param artifact
+     * @param cc
+     * @param describeDocument TODO
+     * @throws Exception
+     */
+    private void doNextStep(Artifact artifact, CallContext cc,
+                            String feedDocument, String advanceDocument, Document describeDocument)
+                                                                        throws Exception {
+        Document outputData = artifact.describe(describeDocument,cc);
+//        this.writeDocument2Log(outputData);
+        outputData = artifact.feed(this.readDocument(feedDocument), cc);
+        this.check4ExceptionReport(outputData);
+        outputData = artifact.advance(this.readDocument(advanceDocument), cc);
+//        this.writeDocument2Log(outputData);
+        this.check4ExceptionReport(outputData);
+
+    }
+
+    public void testTimeSeriesMeshArtifact() {
+        try {
+            log.debug("GNVArtifactsTestCase.testTimeSeriesMeshArtifact");
+            String artefactName = "fis_modeldata";
+            ArtifactFactory artifactFactory = this
+                    .getArtifactFactory(artefactName);
+            assertNotNull(artifactFactory);
+            log.debug("TimeSeriesMesh-ArtifactFactory is available");
+            Artifact artifact = artifactFactory.createArtifact(
+                    "" + System.currentTimeMillis(), bootstrap.getContext());
+            assertNotNull(artifact);
+            log.debug("TimeSeriesMesh-Artifact is available");
+
+            CallContext cc = createCallContext();
+
+            Document describeDocument = this.readDocument("src/test/ressources/timeseries_mesh/timeseries_describe.xml");
+            
+            int steps = 7;
+            
+            for (int i = 1; i <= steps; i++){
+                this.doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/timeseries_mesh/" +
+                            "timeseries_step_0"+i+"_feed.xml",
+                            "src/test/ressources/timeseries_mesh/" +
+                            "timeseries_step_0"+i+"_advance.xml", 
+                            describeDocument);
+            }
+            // Achter Schritt
+            Document outputData = artifact.describe(describeDocument,cc);
+            FileOutputStream fos = null;
+            FileOutputStream fos2 = null;
+            FileOutputStream fos3 = null;
+            FileOutputStream fos4 = null;
+            try {
+                fos = new FileOutputStream("src/test/results/timeseries_mesh"
+                                           + System.currentTimeMillis()
+                                           + ".png");
+                fos2 = new FileOutputStream("src/test/results/timeseries_mesh"
+                                            + System.currentTimeMillis()
+                                            + ".xml");
+                fos3 = new FileOutputStream("src/test/results/timeseries_mesh"
+                                            + System.currentTimeMillis()
+                                            + ".csv");
+                fos4 = new FileOutputStream("src/test/results/timeseries_mesh"
+                        + System.currentTimeMillis()
+                        + ".odv");
+                artifact
+                        .feed(
+                                this
+                                        .readDocument("src/test/ressources/timeseries_mesh/timeseries_step_08_feed.xml"),
+                                cc);
+                artifact
+                        .out(
+                                this
+                                        .readDocument("src/test/ressources/timeseries_mesh/timeseries_step_08_out_statistics.xml"),
+                                fos2, cc);
+                artifact
+                        .out(
+                                this
+                                        .readDocument("src/test/ressources/timeseries_mesh/timeseries_step_08_out_chart.xml"),
+                                fos, cc);
+                artifact
+                        .out(
+                                this
+                                        .readDocument("src/test/ressources/timeseries_mesh/timeseries_step_08_out_csv.xml"),
+                                fos3, cc);
+                artifact
+                .out(
+                        this
+                                .readDocument("src/test/ressources/timeseries_mesh/timeseries_step_08_out_odv.xml"),
+                        fos4, cc);
+            } catch (Exception e) {
+                log.error(e, e);
+                fail();
+            } finally {
+                try {
+                    fos.flush();
+                    fos.close();
+                    fos2.flush();
+                    fos2.close();
+                    fos3.flush();
+                    fos3.close();
+                } catch (Exception e) {
+                    log.error(e, e);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            fail();
+        }
+    }
+
+    public void testVerticalProfileArtifact() {
+        try {
+            log.debug("GNVArtifactsTestCase.testVerticalProfileArtifact");
+            String artefactName = "fis_marnet";
+            ArtifactFactory artifactFactory = this
+                    .getArtifactFactory(artefactName);
+            assertNotNull(artifactFactory);
+            log.debug("VerticalProfile-ArtifactFactory is available");
+            Artifact artifact = artifactFactory.createArtifact(
+                    "" + System.currentTimeMillis(), bootstrap.getContext());
+            assertNotNull(artifact);
+            log.debug("VerticalProfile-Artifact is available");
+
+            CallContext cc = createCallContext();
+
+            Document describeDocument = this.readDocument("src/test/ressources/verticalprofile/verticalprofile_describe.xml");
+            int steps = 5;
+            
+            for (int i = 1; i <= steps; i++){
+                this.doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalprofile/" +
+                            "verticalprofile_step_0"+i+"_feed.xml",
+                            "src/test/ressources/verticalprofile/" +
+                            "verticalprofile_step_0"+i+"_advance.xml", 
+                            describeDocument);
+            }
+
+            // Vierter Schritt
+            Document outputData = artifact.describe(describeDocument,cc);
+            FileOutputStream fos = null;
+            FileOutputStream fos2 = null;
+            FileOutputStream fos3 = null;
+            FileOutputStream fos4 = null;
+            try {
+                fos = new FileOutputStream("src/test/results/verticalprofile"
+                                           + System.currentTimeMillis()
+                                           + ".png");
+                fos2 = new FileOutputStream("src/test/results/verticalprofile"
+                                            + System.currentTimeMillis()
+                                            + ".xml");
+                fos3 = new FileOutputStream("src/test/results/verticalprofile"
+                                            + System.currentTimeMillis()
+                                            + ".csv");
+                fos4 = new FileOutputStream("src/test/results/verticalprofile"
+                        + System.currentTimeMillis()
+                        + ".odv");
+                artifact.feed(this.readDocument("src/test/ressources/" +
+                                                "verticalprofile/" +
+                                                "verticalprofile_step_06_feed.xml"),
+                              cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile/" +
+                                               "verticalprofile_step_06_out_statistics.xml"),
+                             fos2, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile/" +
+                                               "verticalprofile_step_06_out_chart.xml"),
+                             fos, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile/" +
+                                               "verticalprofile_step_06_out_csv.xml"),
+                             fos3, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile/" +
+                                               "verticalprofile_step_06_out_odv.xml"),
+                            fos4, cc);
+            } catch (Exception e) {
+                log.error(e, e);
+                fail();
+            } finally {
+                try {
+                    fos.flush();
+                    fos.close();
+                    fos2.flush();
+                    fos2.close();
+                    fos3.flush();
+                    fos3.close();
+                    fos4.flush();
+                    fos4.close();
+                } catch (Exception e) {
+                    log.error(e, e);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            fail();
+        }
+    }
+
+    public void testVerticalProfileMeshArtifact() {
+        try {
+            log.debug("GNVArtifactsTestCase.testVerticalProfileArtifact");
+            String artefactName = "fis_modeldata";
+            ArtifactFactory artifactFactory = this
+                    .getArtifactFactory(artefactName);
+            assertNotNull(artifactFactory);
+            log.debug("VerticalProfile-ArtifactFactory is available");
+            Artifact artifact = artifactFactory.createArtifact(
+                    "" + System.currentTimeMillis(), bootstrap.getContext());
+            assertNotNull(artifact);
+            log.debug("VerticalProfile-Artifact is available");
+
+            CallContext cc = createCallContext();
+            Document describeDocument = this.readDocument("src/test/ressources/" +
+                                                          "verticalprofile_mesh/" +
+                                                          "verticalprofile_describe.xml");
+            
+            int steps = 9;
+            
+            for (int i = 1; i <= steps; i++){
+                this.doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalprofile_mesh/" +
+                            "verticalprofile_step_0"+i+"_feed.xml",
+                            "src/test/ressources/verticalprofile_mesh/" +
+                            "verticalprofile_step_0"+i+"_advance.xml", 
+                            describeDocument);
+            }
+            // 10. Schritt
+            Document outputData = artifact.describe(describeDocument,cc);
+            FileOutputStream fos = null;
+            FileOutputStream fos2 = null;
+            FileOutputStream fos3 = null;
+            FileOutputStream fos4 = null;
+            try {
+                fos = new FileOutputStream(
+                        "src/test/results/verticalprofile_mesh"
+                                + System.currentTimeMillis() + ".png");
+                fos2 = new FileOutputStream(
+                        "src/test/results/verticalprofile_mesh"
+                                + System.currentTimeMillis() + ".xml");
+                fos3 = new FileOutputStream(
+                        "src/test/results/verticalprofile_mesh"
+                                + System.currentTimeMillis() + ".csv");
+                fos4 = new FileOutputStream(
+                        "src/test/results/verticalprofile_mesh"
+                                + System.currentTimeMillis() + ".odv");
+                artifact.feed(this.readDocument("src/test/ressources/" +
+                                                "verticalprofile_mesh/" +
+                                                "verticalprofile_step_10_feed.xml"),
+                                cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile_mesh/" +
+                                               "verticalprofile_step_10_out_statistics.xml"),
+                             fos2, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile_mesh/" +
+                                               "verticalprofile_step_10_out_chart.xml"),
+                             fos, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                              "verticalprofile_mesh/" +
+                                              "verticalprofile_step_10_out_csv.xml"),
+                             fos3, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile_mesh/" +
+                                               "verticalprofile_step_10_out_odv.xml"),
+                             fos4, cc);
+            } catch (Exception e) {
+                log.error(e, e);
+                fail();
+            } finally {
+                try {
+                    fos.flush();
+                    fos.close();
+                    fos2.flush();
+                    fos2.close();
+                    fos3.flush();
+                    fos3.close();
+                    fos4.flush();
+                    fos4.close();
+                } catch (Exception e) {
+                    log.error(e, e);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            fail();
+        }
+    }
+
+    public void testVerticalProfileInstantaneousPointArtifact() {
+        try {
+            log.debug("GNVArtifactsTestCase.testVerticalProfileArtifact");
+            String artefactName = "fis_bsh_ctd";
+            ArtifactFactory artifactFactory = this
+                    .getArtifactFactory(artefactName);
+            assertNotNull(artifactFactory);
+            log.debug("VerticalProfile-ArtifactFactory is available");
+            Artifact artifact = artifactFactory.createArtifact(
+                    "" + System.currentTimeMillis(), bootstrap.getContext());
+            assertNotNull(artifact);
+            log.debug("VerticalProfile-Artifact is available");
+
+            CallContext cc = createCallContext();
+            Document describeDocument = this.readDocument("src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_describe.xml");
+            
+           int steps = 4;
+            
+            for (int i = 1; i <= steps; i++){
+                this.doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalprofile_instantaneouspoint/" +
+                            "verticalprofile_step_0"+i+"_feed.xml",
+                            "src/test/ressources/verticalprofile_instantaneouspoint/" +
+                            "verticalprofile_step_0"+i+"_advance.xml", 
+                            describeDocument);
+            }
+
+            // Vierter Schritt
+            Document outputData = artifact.describe(describeDocument,cc);
+            FileOutputStream fos = null;
+            FileOutputStream fos2 = null;
+            FileOutputStream fos3 = null;
+            FileOutputStream fos4 = null;
+            try {
+                fos = new FileOutputStream(
+                        "src/test/results/verticalprofile_instantaneouspoint"
+                                + System.currentTimeMillis() + ".png");
+                fos2 = new FileOutputStream(
+                        "src/test/results/verticalprofile_instantaneouspoint"
+                                + System.currentTimeMillis() + ".xml");
+                fos3 = new FileOutputStream(
+                        "src/test/results/verticalprofile_instantaneouspoint"
+                                + System.currentTimeMillis() + ".csv");
+                fos4 = new FileOutputStream(
+                        "src/test/results/verticalprofile_instantaneouspoint"
+                                + System.currentTimeMillis() + ".odv");
+                artifact.feed(this.readDocument("src/test/ressources/" +
+                                                "verticalprofile_instantaneouspoint/" +
+                                                "verticalprofile_step_05_feed.xml"),
+                              cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile_instantaneouspoint/" +
+                                               "verticalprofile_step_05_out_statistics.xml"),
+                             fos2, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile_instantaneouspoint/" +
+                                               "verticalprofile_step_05_out_chart.xml"),
+                             fos, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile_instantaneouspoint/" +
+                                               "verticalprofile_step_05_out_csv.xml"),
+                             fos3, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalprofile_instantaneouspoint/" +
+                                               "verticalprofile_step_05_out_odv.xml"),
+                             fos4, cc);
+            } catch (Exception e) {
+                log.error(e, e);
+                fail();
+            } finally {
+                try {
+                    fos.flush();
+                    fos.close();
+                    fos2.flush();
+                    fos2.close();
+                    fos3.flush();
+                    fos3.close();
+                } catch (Exception e) {
+                    log.error(e, e);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            fail();
+        }
+    }
+
+    public void testHorizontalProfileInstantaneousPointArtifact() {
+        try {
+            log.debug("GNVArtifactsTestCase." +
+                      "testHorizontalProfileInstantaneousPointArtifact");
+            String artefactName = "fis_delphin";
+            ArtifactFactory artifactFactory = this
+                    .getArtifactFactory(artefactName);
+            assertNotNull(artifactFactory);
+            log.debug("VerticalProfile-ArtifactFactory is available");
+            Artifact artifact = artifactFactory.createArtifact(
+                    "" + System.currentTimeMillis(), bootstrap.getContext());
+            assertNotNull(artifact);
+            log.debug("VerticalProfile-Artifact is available");
+
+            CallContext cc = createCallContext();
+            Document describeDocument = this.readDocument("src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_describe.xml");
+            
+            int steps = 6;
+            
+            for (int i = 0; i < steps; i++){
+            
+                this.doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/horizontalProfile_instantaneouspoint/" +
+                            "horizontalprofile_step_0"+i+"_feed.xml",
+                            "src/test/ressources/horizontalProfile_instantaneouspoint/" +
+                            "horizontalprofile_step_0"+i+"_advance.xml", 
+                            describeDocument);
+            }
+
+            Document outputData = artifact.describe(describeDocument, cc);
+            FileOutputStream fos = null;
+            FileOutputStream fos2 = null;
+            FileOutputStream fos3 = null;
+            FileOutputStream fos4 = null;
+            try {
+                fos = new FileOutputStream(
+                        "src/test/results/horizontalprofile_instantaneouspoint"
+                                + System.currentTimeMillis() + ".png");
+                fos2 = new FileOutputStream(
+                        "src/test/results/horizontalprofile_instantaneouspoint"
+                                + System.currentTimeMillis() + ".xml");
+                fos3 = new FileOutputStream(
+                        "src/test/results/horizontalprofile_instantaneouspoint"
+                                + System.currentTimeMillis() + ".csv");
+                fos4 = new FileOutputStream(
+                        "src/test/results/horizontalprofile_instantaneouspoint"
+                                + System.currentTimeMillis() + ".odv");
+                artifact.feed(this.readDocument("src/test/ressources/" +
+                                                "horizontalProfile_instantaneouspoint/" +
+                                                "horizontalprofile_step_06_feed.xml"),
+                              cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalProfile_instantaneouspoint/" +
+                                               "horizontalprofile_step_06_out_statistics.xml"),
+                             fos2,cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalProfile_instantaneouspoint/" +
+                                               "horizontalprofile_step_06_out_chart.xml"),
+                             fos,cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalProfile_instantaneouspoint/" +
+                                               "horizontalprofile_step_06_out_csv.xml"),
+                             fos3,cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalProfile_instantaneouspoint/" +
+                                               "horizontalprofile_step_06_out_odv.xml"),
+                            fos4,cc);
+            } catch (Exception e) {
+                log.error(e, e);
+                fail();
+            } finally {
+                try {
+                    fos.flush();
+                    fos.close();
+                    fos2.flush();
+                    fos2.close();
+                    fos3.flush();
+                    fos3.close();
+                } catch (Exception e) {
+                    log.error(e, e);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            fail();
+        }
+    }
+
+    public void testHorizontalProfileMeshPointArtifact() {
+        try {
+            log.debug("GNVArtifactsTestCase." +
+                      "testHorizontalProfileInstantaneousPointArtifact");
+            String artefactName = "fis_modeldata";
+            ArtifactFactory artifactFactory = this
+                    .getArtifactFactory(artefactName);
+            assertNotNull(artifactFactory);
+            log.debug("VerticalProfile-ArtifactFactory is available");
+            Artifact artifact = artifactFactory.createArtifact(
+                    "" + System.currentTimeMillis(), bootstrap.getContext());
+            assertNotNull(artifact);
+            log.debug("VerticalProfile-Artifact is available");
+
+            CallContext cc = createCallContext();
+            Document describeDocument = this.readDocument("src/test/ressources/horizontalProfile_mesh/horizontalprofile_describe.xml");
+            
+            int steps = 9;
+            
+            for (int i = 1; i <= steps; i++){
+            
+                this.doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/horizontalProfile_mesh/" +
+                            "horizontalprofile_step_0"+i+"_feed.xml",
+                            "src/test/ressources/horizontalProfile_mesh/" +
+                            "horizontalprofile_step_0"+i+"_advance.xml", 
+                            describeDocument);
+            }
+            
+            Document outputData = artifact.describe(describeDocument,cc);
+            FileOutputStream fos = null;
+            FileOutputStream fos2 = null;
+            FileOutputStream fos3 = null;
+            FileOutputStream fos4 = null;
+            try {
+                fos = new FileOutputStream(
+                        "src/test/results/horizontalProfile_mesh"
+                                + System.currentTimeMillis() + ".png");
+                fos2 = new FileOutputStream(
+                        "src/test/results/horizontalProfile_mesh"
+                                + System.currentTimeMillis() + ".xml");
+                fos3 = new FileOutputStream(
+                        "src/test/results/horizontalProfile_mesh"
+                                + System.currentTimeMillis() + ".csv");
+                fos4 = new FileOutputStream(
+                        "src/test/results/horizontalProfile_mesh"
+                                + System.currentTimeMillis() + ".odv");
+                artifact.feed(this.readDocument("src/test/ressources/" +
+                                                "horizontalProfile_mesh/" +
+                                                "horizontalprofile_step_10_feed.xml"),
+                              cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalProfile_mesh/" +
+                                               "horizontalprofile_step_10_out_statistics.xml"),
+                             fos2, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalProfile_mesh/" +
+                                               "horizontalprofile_step_10_out_chart.xml"),
+                                fos, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalProfile_mesh/" +
+                                               "horizontalprofile_step_10_out_csv.xml"),
+                             fos3, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalProfile_mesh/" +
+                                               "horizontalprofile_step_10_out_odv.xml"),
+                             fos4, cc);
+            } catch (Exception e) {
+                log.error(e, e);
+                fail();
+            } finally {
+                try {
+                    fos.flush();
+                    fos.close();
+                    fos2.flush();
+                    fos2.close();
+                    fos3.flush();
+                    fos3.close();
+                    fos4.flush();
+                    fos4.close();
+                } catch (Exception e) {
+                    log.error(e, e);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            fail();
+        }
+    }
+    
+    public void testHorizontalCrossSectionMeshArtifact() {
+        try {
+            log.debug("GNVArtifactsTestCase.testHorizontalCrossSectionMeshArtifact");
+            String artefactName = "fis_modeldata";
+            ArtifactFactory artifactFactory = this
+                    .getArtifactFactory(artefactName);
+            assertNotNull(artifactFactory);
+            log.debug("HorizontalCrossSectionMesh-ArtifactFactory is available");
+            Artifact artifact = artifactFactory.createArtifact(
+                    "" + System.currentTimeMillis(), bootstrap.getContext());
+            assertNotNull(artifact);
+            log.debug("HorizontalCrossSectionMesh-Artifact is available");
+
+            CallContext cc = createCallContext();
+            Document describeDocument = this.readDocument("src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_describe.xml");
+            int steps = 5;
+            
+            for (int i = 1; i <= steps; i++){
+                this.doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/horizontalcrosssection_mesh/" +
+                            "horizontalcrosssection_step_0"+i+"_feed.xml",
+                            "src/test/ressources/horizontalcrosssection_mesh/" +
+                            "horizontalcrosssection_step_0"+i+"_advance.xml", 
+                            describeDocument);
+            }
+            
+            Document outputData = artifact.describe(describeDocument,cc);
+            FileOutputStream fos = null;
+            FileOutputStream fos2 = null;
+            FileOutputStream fos3 = null;
+            try {
+                fos = new FileOutputStream(
+                        "src/test/results/horizontalcrosssection_mesh"
+                                + System.currentTimeMillis() + ".png");
+                
+                fos2 = new FileOutputStream(
+                        "src/test/results/horizontalcrosssection_mesh"
+                                + System.currentTimeMillis() + ".csv");
+                fos3 = new FileOutputStream(
+                        "src/test/results/horizontalcrosssection_mesh"
+                                + System.currentTimeMillis() + ".odv");
+                artifact.feed(this.readDocument("src/test/ressources/" +
+                                                "horizontalcrosssection_mesh/" +
+                                                "horizontalcrosssection_step_06_feed.xml"),
+                              cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalcrosssection_mesh/" +
+                                               "horizontalcrosssection_step_06_out_chart.xml"),
+                              fos, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalcrosssection_mesh/" +
+                                               "horizontalcrosssection_step_06_out_csv.xml"),
+                             fos2,cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "horizontalcrosssection_mesh/" +
+                                               "horizontalcrosssection_step_06_out_odv.xml"),
+                              fos3,cc);
+            } catch (Exception e) {
+                log.error(e, e);
+                fail();
+            } finally {
+                try {
+                    fos.flush();
+                    fos.close();
+                    fos2.flush();
+                    fos2.close();
+                    fos3.flush();
+                    fos3.close();
+                } catch (Exception e) {
+                    log.error(e, e);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            fail();
+        }
+    }
+    
+    public void testVerticalCrossSectionMeshArtifact() {
+        try {
+            log.debug("GNVArtifactsTestCase." +
+                      "testHVerticalCrossSectionMeshArtifact");
+            String artefactName = "fis_modeldata";
+            ArtifactFactory artifactFactory = this
+                    .getArtifactFactory(artefactName);
+            assertNotNull(artifactFactory);
+            log.debug("VerticalProfile-ArtifactFactory is available");
+            Artifact artifact = artifactFactory.createArtifact(
+                    "" + System.currentTimeMillis(), bootstrap.getContext());
+            assertNotNull(artifact);
+            log.debug("VerticalProfile-Artifact is available");
+
+            CallContext cc = createCallContext();
+            Document describeDocument = this.readDocument("src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_describe.xml");
+            
+            int steps = 7;
+            
+            for (int i = 1; i <= steps; i++){
+            
+                this.doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalcrosssection_mesh/" +
+                            "verticalcrosssection_step_0"+i+"_feed.xml",
+                            "src/test/ressources/verticalcrosssection_mesh/" +
+                            "verticalcrosssection_step_0"+i+"_advance.xml", 
+                            describeDocument);
+            }
+            
+            Document outputData = artifact.describe(describeDocument,cc);
+            FileOutputStream fos = null;
+            FileOutputStream fos2 = null;
+            FileOutputStream fos3 = null;
+            try {
+                fos = new FileOutputStream(
+                        "src/test/results/verticalcrosssection_mesh"
+                                + System.currentTimeMillis() + ".png");
+                
+                fos2 = new FileOutputStream(
+                        "src/test/results/verticalcrosssection_mesh"
+                                + System.currentTimeMillis() + ".csv");
+                fos3 = new FileOutputStream(
+                        "src/test/results/verticalcrosssection_mesh"
+                                + System.currentTimeMillis() + ".odv");
+                artifact.feed(this.readDocument("src/test/ressources/" +
+                                                "verticalcrosssection_mesh/" +
+                                                "verticalcrosssection_step_08_feed.xml"),
+                              cc);
+               artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalcrosssection_mesh/" +
+                                               "verticalcrosssection_step_08_out_chart.xml"),
+                             fos, cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalcrosssection_mesh/" +
+                                               "verticalcrosssection_step_08_out_csv.xml"),
+                             fos2,cc);
+                artifact.out(this.readDocument("src/test/ressources/" +
+                                               "verticalcrosssection_mesh/" +
+                                               "verticalcrosssection_step_08_out_odv.xml"),
+                             fos3,cc);
+                
+            } catch (Exception e) {
+                log.error(e, e);
+                fail();
+            } finally {
+                try {
+                    fos.flush();
+                    fos.close();
+                    fos2.flush();
+                    fos2.close();
+                    fos3.flush();
+                    fos3.close();
+                } catch (Exception e) {
+                    log.error(e, e);
+                }
+            }
+        } catch (Exception e) {
+            log.error(e, e);
+            fail();
+        }
+    }
+
+    protected void createFile(byte[] content, String fileName) {
+        try {
+            FileOutputStream fos = new FileOutputStream(new File(fileName));
+            ByteArrayInputStream bis = new ByteArrayInputStream(content);
+            byte[] buf = new byte[4096];
+            while (bis.read(buf) > 0) {
+                fos.write(buf);
+            }
+            fos.flush();
+            fos.close();
+        } catch (FileNotFoundException e) {
+            log.error(e, e);
+        } catch (IOException e) {
+            log.error(e, e);
+        }
+    }
+
+    /**
+     * @param artefactName
+     */
+    private ArtifactFactory getArtifactFactory(String artefactName) {
+        log.debug("GNVArtifactsTestCase.getArtifactFactory");
+        ArtifactFactory[] artifactFactories = bootstrap.getArtifactFactories();
+        for (int i = 0; i < artifactFactories.length; i++) {
+            if (artifactFactories[i].getName().equals(artefactName)) {
+                log.debug("ArtifactFactory wurde gefunden.");
+                return artifactFactories[i];
+            }
+        }
+        return null;
+    }
+
+    protected void writeDocument2Log(Document document) {
+        log.debug(new ArtifactXMLUtilities().writeDocument2String(document));
+    }
+
+    protected Document readDocument(String fileName) {
+        Document returnValue = null;
+        try {
+            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
+                    .newInstance();
+            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
+            returnValue = docBuilder.parse(new File(fileName));
+        } catch (ParserConfigurationException e) {
+            log.error(e, e);
+        } catch (SAXException e) {
+            log.error(e, e);
+        } catch (IOException e) {
+            log.error(e, e);
+        }
+        return returnValue;
+    }
+
+    private void check4ExceptionReport(Document document) throws Exception {
+        document = new ArtifactXMLUtilities().reInitDocument(document);
+        String message = Config.getStringXPath(document,
+                "/exceptionreport/exception");
+        if (message != null) {
+            throw new Exception(message);
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/TestCallContext.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,49 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts;
+
+import de.intevation.artifacts.CallContext;
+import de.intevation.artifacts.CallMeta;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class TestCallContext implements CallContext {
+
+    private Object globalContext = null;
+    private CallMeta callMeta = null;
+
+    /**
+     * Constructor
+     */
+    public TestCallContext(Object globalContext, CallMeta callMeta) {
+        this.globalContext = globalContext;
+        this.callMeta = callMeta;
+    }
+
+    /**
+     * @see de.intevation.artifacts.CallContext#afterBackground(int)
+     */
+    public void afterBackground(int action) {
+    }
+
+    /**
+     * @see de.intevation.artifacts.CallContext#afterCall(int)
+     */
+    public void afterCall(int action) {
+    }
+
+    /**
+     * @see de.intevation.artifacts.CallContext#globalContext()
+     */
+    public Object globalContext() {
+        return this.globalContext;
+    }
+
+    public CallMeta getMeta() {
+        return this.callMeta;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/ressource/RessourceFactoryTestCase.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,59 @@
+package de.intevation.gnv.artifacts.ressource;
+
+import junit.framework.TestCase;
+
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Logger;
+
+import de.intevation.artifactdatabase.DefaultPreferredLocale;
+import de.intevation.artifacts.PreferredLocale;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ * 
+ */
+public class RessourceFactoryTestCase extends TestCase {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = null;
+
+    static {
+        BasicConfigurator.configure();
+        log = Logger.getLogger(RessourceFactoryTestCase.class);
+    }
+
+    /**
+     * Constructor
+     * 
+     * @param name
+     */
+    public RessourceFactoryTestCase(String name) {
+        super(name);
+    }
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // System.setProperty("artifact.ressource.dir",
+        // "src/test/ressources/lang");
+    }
+
+    public void testRessurceFactoryTestCase() {
+        ;
+        String value = RessourceFactory.getInstance()
+                .getRessource(
+                        new PreferredLocale[] { new DefaultPreferredLocale(
+                                "de", 1.0f) }, "fis_modeldata", "N/N");
+        log.debug(value);
+        value = RessourceFactory.getInstance()
+                .getRessource(
+                        new PreferredLocale[] { new DefaultPreferredLocale(
+                                "en", 1.0f) }, "fis_modeldata", "N/N");
+        log.debug(value);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/util/DistanceCalculatorTestCase.java	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,30 @@
+package de.intevation.gnv.artifacts.util;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.Point;
+
+import de.intevation.gnv.utils.DistanceCalculator;
+
+import junit.framework.TestCase;
+
+public class DistanceCalculatorTestCase extends TestCase {
+
+    public DistanceCalculatorTestCase(String name) {
+        super(name);
+    }
+    
+    public void testDistanceCalculator(){
+        
+        GeometryFactory gf = new GeometryFactory();
+        
+        // Distance between Berlin and Tokio
+        Point p1 = gf.createPoint(new Coordinate(13.4000, 52.5167));
+        Point p2 = gf.createPoint(new Coordinate(139.7667, 35.7000));
+        
+        double s = new DistanceCalculator().calculateDistance(p1, p2);
+        
+        assertEquals(8941.201227763724, s);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_describe.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="describe" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:include-ui>true</art:include-ui>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_00_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:target name="horizontalProfile" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_00_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:data>
+		<art:input name="product" value="horizontalProfile" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_01_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:target name="horizontalprofile_instantaneouspoint_track" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_01_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:data>
+		<art:input name="vehicleid" value="8402" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_02_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:target name="horizontalprofile_instantaneouspoint_surveyinfo" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_02_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:data>
+		<art:input name="cruiseid" value="47" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_03_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:target name="horizontalprofile_instantaneouspoint_parameter" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_03_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:data>
+		<art:input name="trackid" value="1671" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_04_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:target name="horizontalprofile_instantaneouspoint_depth" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_04_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:data>
+		<art:input name="surveyid" value="2063" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_05_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:target name="horizontalprofile_instantaneouspoint_calculate_results" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_05_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:data>
+		<art:input name="parameterid" value="2" />
+		<art:input name="parameterid" value="1" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:target name="horizontalprofile_instantaneouspoint_calculate_results" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="5437874" />
+	<art:data>
+		<art:input name="measurementid" value="-5.943" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_chart.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="27021384" />
+	<art:out name="chart">
+		<art:out value="image/png" />
+		<art:params>
+			<art:input name="width" value="600" />
+			<art:input name="height" value="400" />
+		</art:params>
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_csv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+    <art:type name="out" />
+    <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+    <art:hash value="27021384" />
+    <art:out name="csv">
+        <art:out value="text/plain" />
+        <art:params />
+    </art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_odv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+    <art:type name="out" />
+    <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+    <art:hash value="27021384" />
+    <art:out name="odv">
+        <art:out value="text/plain" />
+        <art:params />
+    </art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_statistics.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" />
+	<art:hash value="27021384" />
+	<art:out name="statistics">
+		<art:out value="text/xml" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_describe.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="describe" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:include-ui>true</art:include-ui>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_01_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:target name="horizontalProfile" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_01_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+		<art:input name="product" value="horizontalProfile" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:target name="horizontalprofile_mesh" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+		<art:input name="areaid" value="3" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_03_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:target name="horizontalprofile_mesh_coordinate" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_03_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+		<art:input name="subareaid" value="41"/>
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_04_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="86a0e5c5-e98d-4c7d-93ff-76b099a2de4e" />
+	<art:hash value="7390092" />
+	<art:target name="horizontalprofile_mesh_point" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_04_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+		<art:input name="meshid" value="3" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_05_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="86a0e5c5-e98d-4c7d-93ff-76b099a2de4e" />
+	<art:hash value="7390092" />
+	<art:target name="horizontalprofile_mesh_axis" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_05_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+        <art:input name="mesh_coordinate" value="56n30 6e20" />
+    </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_06_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:target name="horizontalprofile_meshpoint_parameter" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_06_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+		<art:input name="mesh_point" value="2003771" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_07_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:target name="horizontalprofile_meshpoint_depth" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_07_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+		<art:input name="axisid" value="JPOSITION" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:target name="horizontalprofile_mesh_date" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+		<art:input name="parameterid" value="2" />
+		<art:input name="parameterid" value="1" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_09_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:target name="horizontalprofile_mesh_calculate_results" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_09_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+		<art:input name="depthid" value="1" />
+		<art:input name="depthid" value="2" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_10_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:data>
+		<art:input name="dateid" value="2009.11.09 00:00:00" />
+		<art:input name="dateid" value="2009.11.08 00:00:00" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_10_out_chart.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:out name="chart">
+		<art:out value="image/png" />
+		<art:params>
+			<art:input name="width" value="600" />
+			<art:input name="height" value="400" />
+		</art:params>
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_10_out_csv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:out name="csv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_10_out_odv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:out name="odv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_10_out_statistics.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" />
+	<art:hash value="29647319" />
+	<art:out name="statistics">
+		<art:out value="text/xml" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_describe.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+    <art:type name="describe" />
+    <art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+    <art:hash value="6292125" />
+    <art:include-ui>true</art:include-ui>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_01_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+    <art:type name="advance" />
+    <art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+    <art:hash value="6292125" />
+    <art:target name="horizontalCrossSection" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_01_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+    <art:type name="feed" />
+    <art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+    <art:hash value="6292125" />
+    <art:data>
+        <art:input name="product" value="horizontalCrossSection" />
+    </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_02_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+    <art:type name="advance" />
+    <art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+    <art:hash value="6292125" />
+    <art:target name="horizontalcrosssection_meshpoint_depth"/>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_02_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+	<art:hash value="6292125" />
+	   <art:data>
+        <art:input name="areaid" value="n/n" />
+    </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_03_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+	<art:hash value="6292125" />
+	<art:target name="horizontalcrosssection_meshpoint_parameter" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_03_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+	<art:hash value="6292125" />
+	<art:data>
+		<art:input name="meshid" value="3" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_04_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+	<art:hash value="6292125" />
+	<art:target name="horizontalcrosssection_mesh_date" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_04_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+	<art:hash value="6292125" />
+	<art:data>
+		<art:input name="depthid" value="1" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_05_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+	<art:hash value="6292125" />
+	<art:target name="horizontalcrosssection_mesh_calculate_results" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_05_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+	<art:hash value="6292125" />
+	<art:data>
+		<art:input name="parameterid" value="2" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_06_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+	<art:hash value="6292125" />
+	<art:data>
+		<art:input name="dateid" value="2009.11.09 00:00:00" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_06_out_chart.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+    <art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+    <art:hash value="6292125" />
+	<art:out name="chart">
+		<art:out value="image/png" />
+		<art:params>
+			<art:input name="width" value="600" />
+			<art:input name="height" value="400" />
+		</art:params>
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_06_out_csv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+    <art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+    <art:hash value="6292125" />
+	<art:out name="csv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_06_out_odv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+    <art:uuid value="74baff94-b172-4667-b6d8-db21abeb1b81" />
+    <art:hash value="6292125" />
+	<art:out name="odv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/lang/artifactMessages.properties	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,25 @@
+fis_marnet = Marnet
+fis_imis = IMIS
+fis_staun = STAUN
+fis_modeldata = Modeldata
+fis_delphin = Delphin
+fis_thermosalinograph = Thermosalinograph
+fis_chemusurvey = Chemusurvey
+
+timeSeries= Timeseries
+verticalProfile = Verticalprofile
+horizontalProfile = Horizontalprofile
+featureid = Object
+mesh_coordinate = Coordinate Value (x y)
+mesh_point = Meshpoint
+measurementid = Measurement depth
+parameterid = Parameter
+minvalue = Minvalue
+maxvalue = Maxvalue
+dateid = Measurement date
+vehicleid = Ship
+cruiseid = Cruise
+trackid = Track
+surveyid = Survey Info
+axisid = Axis
+depthid = Depth
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/lang/artifactMessages_de_DE.properties	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,25 @@
+fis_marnet = Marnet
+fis_imis = IMIS
+fis_staun = STAUN
+fis_modeldata = Modeldaten
+fis_delphin = Delphin
+fis_thermosalinograph = Thermosalinograph
+fis_chemusurvey = Chemusurvey
+
+timeSeries= Zeitserie
+verticalProfile = Vertikalprofil
+horizontalProfile = Horizontalprofil
+featureid = ObjeKt
+mesh_coordinate = Koordinaten Wert (x y)
+mesh_point = Messpunkt
+measurementid = Messtiefe
+parameterid = Parameter
+minvalue = Minimalwert
+maxvalue = Maximalwert
+dateid = Messdatum
+vehicleid = Schiff
+cruiseid = Reise
+trackid = Track
+surveyid = Messinformation
+axisid = Achse
+depthid = Tiefe
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_describe.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="describe"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:include-ui>true</art:include-ui>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_01_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="advance"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:target name="timeSeriess"/>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_01_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="feed"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:data>
+        <art:input name="product" value="timeSeries"/>
+     </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_02_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="advance"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:target name="timeseries_parameter"/>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_02_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="feed"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:data>
+        <art:input name="areaid" value="n/n" />
+     </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_03_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="advance"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:target name="timeseries_depth_height"/>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_03_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="feed"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:data>
+        <art:input name="featureid" value="100006"/>
+     </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_04_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="advance"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:target name="timeseries_interval"/>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_04_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="feed"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:data>
+        <art:input name="parameterid" value="54"/>
+     </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_05_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="advance"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:target name="timeseries_calculate_results"/>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_05_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="feed"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:data>
+        <art:input name="measurementid" value="500042"/>
+     </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_06_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action
+     xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="feed"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:data>
+        <art:input name="minvalue" value="2001.03.16 16:29:00"/>
+        <art:input name="maxvalue" value="2008.12.31 23:29:00"/>
+     </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_06_out_chart.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="out"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:out name="chart">
+        <art:params>
+            <!-- out params copied from describe -->
+        </art:params>
+     </art:out>
+</art:action>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_06_out_csv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="out"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:out name="csv">
+        <art:params>
+            <!-- out params copied from describe -->
+        </art:params>
+     </art:out>
+</art:action>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_06_out_odv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="out"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:out name="odv">
+        <art:params>
+            <!-- out params copied from describe -->
+        </art:params>
+     </art:out>
+</art:action>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_06_out_statistics.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+     <art:type name="out"/>
+     <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/>
+     <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/>
+     <art:out name="statistics">
+        <art:params>
+            <!-- out params copied from describe -->
+        </art:params>
+     </art:out>
+</art:action>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_describe.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="describe" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:include-ui>true</art:include-ui>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_01_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:target name="timeSeriesMesh" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_01_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:data>
+		<art:input name="product" value="timeSeries" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_02_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:target name="timeseries_mesh_coordinate" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_02_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:data>
+		<art:input name="areaid" value="n/n" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_03_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:target name="timeseries_meshpoint" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_03_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:data>
+		<art:input name="meshid" value="3" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_04_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+    <art:type name="advance" />
+    <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+    <art:hash value="29913235" />
+    <art:target name="timeseries_meshpoint_depth" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_04_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:data>
+		<art:input name="mesh_coordinate" value="56n30 6e20" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_05_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:target name="timeseries_meshpoint_parameter" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_05_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:data>
+		<art:input name="mesh_point" value="2003771" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_06_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:target name="timeseries_meshpoint_interval" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_06_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:data>
+		<art:input name="depthid" value="2003771" />
+		<art:input name="depthid" value="2012198" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_07_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:target name="timeseries_meshpoint_calculate_results" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_07_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:data>
+		<art:input name="parameterid" value="2" />
+		<art:input name="parameterid" value="1" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_08_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:data>
+		<art:input name="maxvalue" value="2009.11.09 00:00:00" />
+		<art:input name="minvalue" value="2009.10.30 01:00:00" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_08_out_chart.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="31343478" />
+	<art:out name="chart">
+		<art:out value="image/png" />
+		<art:params>
+			<art:input name="width" value="600" />
+			<art:input name="height" value="400" />
+		</art:params>
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_08_out_csv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="31343478" />
+	<art:out name="csv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_08_out_odv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:out name="odv">
+		<art:params>
+            <!-- out params copied from describe -->
+        </art:params>
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_08_out_statistics.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" />
+	<art:hash value="29913235" />
+	<art:out name="statistics">
+		<art:out value="text/xml" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_describe.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="describe" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:include-ui>true</art:include-ui>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_01_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:target name="verticalcrosssection" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_01_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:data>
+		<art:input name="product" value="verticalcrosssection" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_02_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:target name="verticalcrosssection_mesh_coordinate" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_02_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:data>
+		<art:input name="areaid" value="n/n" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_03_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:target name="verticalcrosssection_mesh_point" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_03_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:data>
+		<art:input name="meshid" value="3" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_04_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:target name="verticalcrosssection_mesh_axis" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_04_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:data>
+		<art:input name="mesh_coordinate" value="56n30 6e20" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_05_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:target name="verticalcrosssection_mesh_parameter" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_05_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:data>
+		<art:input name="mesh_point" value="2003771" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_06_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:target name="verticalcrosssection_mesh_date" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_06_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:data>
+		<art:input name="axisid" value="IPOSITION" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+    <art:type name="advance" />
+    <art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+    <art:hash value="2969645" />
+    <art:target name="verticalcrosssection_mesh_calculate_results" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+    <art:type name="feed" />
+    <art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+    <art:hash value="2969645" />
+    <art:data>
+        <art:input name="parameterid" value="2" />
+    </art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_08_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:data>
+		<art:input name="dateid" value="2009.11.09 00:00:00" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_08_out_chart.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:out name="chart">
+		<art:out value="image/png" />
+		<art:params>
+			<art:input name="width" value="600" />
+			<art:input name="height" value="400" />
+		</art:params>
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_08_out_csv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:out name="csv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_08_out_odv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="07807bb4-572b-4a46-a71d-7c1c8c9ab50c" />
+	<art:hash value="2969645" />
+	<art:out name="odv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_describe.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="describe" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:include-ui>true</art:include-ui>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_01_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:target name="verticalProfile" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_01_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:data>
+		<art:input name="product" value="verticalProfile" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_02_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:target name="verticalprofile_parameter" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_02_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:data>
+		<art:input name="areaid" value="n/n" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_03_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:target name="verticalprofile_date" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_03_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:data>
+		<art:input name="featureid" value="100011" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_04_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="11096221" />
+	<art:target name="verticalprofile_minmaxdepth" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_04_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:data>
+		<art:input name="parameterid" value="2" />
+		<art:input name="parameterid" value="31" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_05_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="11096221" />
+	<art:target name="verticalprofile_calculate_results" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_05_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="11096221" />
+	<art:data>
+		<art:input name="dateid" value="2008.12.09 00:00:00" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_06_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="11096221" />
+	<art:data>
+		<art:input name="maxvalue" value="-7.0" />
+		<art:input name="minvalue" value="-40.0" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_06_out_chart.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="11096221" />
+	<art:out name="chart">
+		<art:out value="image/png" />
+		<art:params>
+			<art:input name="width" value="600" />
+			<art:input name="height" value="400" />
+		</art:params>
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_06_out_csv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+    <art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+    <art:hash value="11096221" />
+	<art:out name="csv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_06_out_odv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="11096221" />
+	<art:out name="odv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_06_out_statistics.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="11096221" />
+	<art:out name="statistics">
+		<art:out value="text/xml" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_describe.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="describe" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:include-ui>true</art:include-ui>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_01_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:target name="verticalProfile" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_01_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" />
+	<art:hash value="18171662" />
+	<art:data>
+		<art:input name="product" value="verticalProfile" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:target name="verticalprofile_instantaneouspoint_parameter" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:data>
+		<art:input name="seriesid" value="184" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:target name="verticalprofile_instantaneouspoint_minmaxdepth" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:data>
+		<art:input name="instantaneouspoint_point" value="4371899" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:target name="verticalprofile_instantaneouspoint_calculate_results" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:data>
+		<art:input name="parameterid" value="2" />
+		<art:input name="parameterid" value="30" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:data>
+		<art:input name="maxvalue" value="-2.972" />
+		<art:input name="minvalue" value="-11.887" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_out_chart.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:out name="chart">
+		<art:out value="image/png" />
+		<art:params>
+			<art:input name="width" value="600" />
+			<art:input name="height" value="400" />
+		</art:params>
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_out_csv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts"><art:type name="out"/><art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3"/><art:hash value="9390720"/><art:out name="csv"><art:out value="text/plain"/><art:params/></art:out></art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_out_odv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:out name="odv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_05_out_statistics.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" />
+	<art:hash value="9390720" />
+	<art:out name="statistics">
+		<art:out value="text/xml" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_describe.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="describe" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:include-ui>true</art:include-ui>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_01_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:target name="verticalProfile" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_01_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:data>
+		<art:input name="product" value="verticalProfile" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:target name="verticalprofile_mesh" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:data>
+		<art:input name="areaid" value="3" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_03_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:target name="verticalprofile_mesh_coordinate" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_03_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:data>
+		<art:input name="subareaid" value="41"/>
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_04_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:target name="verticalprofile_mesh_point" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_04_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:data>
+		<art:input name="meshid" value="3" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_05_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:target name="verticalprofile_mesh_mindepth" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_05_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:data>
+		<art:input name="mesh_coordinate" value="56n30 6e20" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:target name="verticalprofile_mesh_maxdepth" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:data>
+		<art:input name="mesh_point" value="2003771" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_07_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:target name="verticalprofile_meshpoint_parameter" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_07_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:data>
+		<art:input name="mindepthid" value="4" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_08_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:target name="verticalprofile_mesh_date" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_08_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:data>
+		<art:input name="maxdepthid" value="1" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_09_advance.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="advance" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:target name="verticalprofile_mesh_calculate_results" />
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_09_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+	<art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+	<art:hash value="3061481" />
+	<art:data>
+		<art:input name="parameterid" value="1" />
+		<art:input name="parameterid" value="2" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_10_feed.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="feed" />
+    <art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+    <art:hash value="3061481" />
+	<art:data>
+		<art:input name="dateid" value="2009.11.09 00:00:00" />
+	</art:data>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_10_out_chart.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+    <art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+    <art:hash value="3061481" />/>
+	<art:out name="chart">
+		<art:out value="image/png" />
+		<art:params>
+			<art:input name="width" value="600" />
+			<art:input name="height" value="400" />
+		</art:params>
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_10_out_csv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+    <art:uuid value="73da18e1-16ef-4ef8-9388-df07a22d9099" />
+    <art:hash value="3061481" />
+	<art:out name="csv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_10_out_odv.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" />
+	<art:hash value="31343478" />
+	<art:out name="odv">
+		<art:out value="text/plain" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_10_out_statistics.xml	Fri Sep 28 12:13:44 2012 +0200
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<art:action xmlns:art="http://www.intevation.de/2009/artifacts">
+	<art:type name="out" />
+	<art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" />
+	<art:hash value="31343478" />
+	<art:out name="statistics">
+		<art:out value="text/xml" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file

http://dive4elements.wald.intevation.org