changeset 197:bab92ad1165d

Added the required Classes an Configuration for providing VerticalCrossSections gnv-artifacts/trunk@250 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 20 Oct 2009 13:32:05 +0000 (2009-10-20)
parents 60c61f323f16
children d19259c86b72
files gnv-artifacts/ChangeLog gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalCrossSectionChartFactory.java gnv-artifacts/src/main/java/de/intevation/gnv/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java gnv-artifacts/src/main/java/de/intevation/gnv/statistics/VerticalProfileStatistics.java gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/verticalcrosssection/VerticalCrossSectionOutputTransition.java gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java gnv-artifacts/src/test/ressources/conf.xml gnv-artifacts/src/test/ressources/queries.properties gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_01_advance.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_01_feed.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_02_advance.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_02_feed.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_03_advance.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_03_feed.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_04_advance.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_04_feed.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_05_advance.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_05_feed.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_06_advance.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_06_feed.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_feed.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_out_chart.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_out_csv.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_out_statistics.xml
diffstat 24 files changed, 692 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/gnv-artifacts/ChangeLog	Tue Oct 20 10:07:22 2009 +0000
+++ b/gnv-artifacts/ChangeLog	Tue Oct 20 13:32:05 2009 +0000
@@ -1,3 +1,26 @@
+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>
+	
+	* 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>
 
 	* src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe): 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalCrossSectionChartFactory.java	Tue Oct 20 13:32:05 2009 +0000
@@ -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/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java	Tue Oct 20 13:32:05 2009 +0000
@@ -0,0 +1,56 @@
+/**
+ *
+ */
+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(java.lang.Object)
+     */
+    @Override
+    public Document describe(CallContext context) {
+        log.debug("VerticalCrossSectionMeshArtifact.describe");
+        return super.createDescibeOutput(context.getMeta());
+    }
+
+    /**
+     * @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);
+    }
+}
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/VerticalProfileStatistics.java	Tue Oct 20 10:07:22 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/VerticalProfileStatistics.java	Tue Oct 20 13:32:05 2009 +0000
@@ -22,7 +22,7 @@
 
     @Override
     protected double calculateXOrdinateValue(Result row) throws SQLException {
-        return row.getDouble("XORDINATE");
+        return 0;
     }
 
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/verticalcrosssection/VerticalCrossSectionOutputTransition.java	Tue Oct 20 13:32:05 2009 +0000
@@ -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.");
+        }
+    }
+
+}
--- a/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java	Tue Oct 20 10:07:22 2009 +0000
+++ b/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java	Tue Oct 20 13:32:05 2009 +0000
@@ -837,6 +837,120 @@
             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();
+
+            // Erster Schritt
+            this
+                    .doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_01_feed.xml",
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_01_advance.xml");
+
+            // Zweiter Schritt
+            this
+                    .doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_02_feed.xml",
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_02_advance.xml");
+            // Dritter Schritt
+            this
+                    .doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_03_feed.xml",
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_03_advance.xml");
+            // Vierter Schritt
+            this
+                    .doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_04_feed.xml",
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_04_advance.xml");
+            // F�nfter Schritt
+            this
+                    .doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_05_feed.xml",
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_05_advance.xml");
+
+            // Sechster Schritt
+            this
+                    .doNextStep(
+                            artifact,
+                            cc,
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_06_feed.xml",
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_06_advance.xml");
+
+           
+            Document outputData = artifact.describe(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() + ".xml");
+                fos3 = new FileOutputStream(
+                        "src/test/results/verticalcrosssection_mesh"
+                                + System.currentTimeMillis() + ".csv");
+                artifact
+                        .feed(
+                                this
+                                        .readDocument("src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_feed.xml"),
+                                cc);
+                artifact
+                        .out(
+                                this
+                                        .readDocument("src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_out_statistics.xml"),
+                                fos2, cc);
+                artifact
+                        .out(
+                                this
+                                        .readDocument("src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_out_chart.xml"),
+                                fos, cc);
+                artifact.out(this.readDocument("src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_07_out_csv.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 {
--- a/gnv-artifacts/src/test/ressources/conf.xml	Tue Oct 20 10:07:22 2009 +0000
+++ b/gnv-artifacts/src/test/ressources/conf.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -115,6 +115,18 @@
                         <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>
+                
+                
+                
+                
             </products>
         </artifact>
         <artifact name="fis_eisklimatologie">
@@ -910,6 +922,121 @@
                         <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/>
                     </outputsModes>
                 </transition>
+             </transitions>
+          </artifact>
+          <artifact name="verticalCrossSectionMesh">
+            <transitions>
+                <transition id="verticalcrosssection_mesh" 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>
+                
+                <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>v
+                    </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>v
+                    </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>v
+                    </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>
+                    <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"/>
+                        <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/>
+                    </outputsModes>
+                </transition>
+                
+                
+                
             </transitions>
          </artifact>
            
--- a/gnv-artifacts/src/test/ressources/queries.properties	Tue Oct 20 10:07:22 2009 +0000
+++ b/gnv-artifacts/src/test/ressources/queries.properties	Tue Oct 20 13:32:05 2009 +0000
@@ -500,4 +500,53 @@
             msv.PARAMETERID, \
             MEDIAN.MESHPOINT.JPOSITION , \
             MEDIAN.MESHPOINT.IPOSITION
-             
\ No newline at end of file
+             
+             
+#############################################
+#############################################
+########### 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
+          
\ 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	Tue Oct 20 13:32:05 2009 +0000
@@ -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	Tue Oct 20 13:32:05 2009 +0000
@@ -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	Tue Oct 20 13:32:05 2009 +0000
@@ -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_02_feed.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_03_advance.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_03_feed.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_04_advance.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_04_feed.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_05_advance.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_05_feed.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_06_advance.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_06_feed.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_07_feed.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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.10.13 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/verticalcrosssection_mesh/verticalcrosssection_step_07_out_chart.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_07_out_csv.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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_07_out_statistics.xml	Tue Oct 20 13:32:05 2009 +0000
@@ -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="statistics">
+		<art:out value="text/xml" />
+		<art:params />
+	</art:out>
+</art:action>
\ No newline at end of file

http://dive4elements.wald.intevation.org