changeset 222:3e82b4f1c455

Removed some Compilation-Errors according to API-Changes in the ArtifactDatabase. Added the possibility to switch to an alternative Transition. gnv-artifacts/trunk@284 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Thu, 05 Nov 2009 14:45:54 +0000
parents 21152e1bf325
children 05663e307495
files gnv-artifacts/ChangeLog gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontalcrosssection/HorizontalCrossSectionMeshArtifact.java gnv-artifacts/src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java gnv-artifacts/src/main/java/de/intevation/gnv/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java gnv-artifacts/src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java gnv-artifacts/src/main/java/de/intevation/gnv/utils/InputValidator.java gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_describe.xml gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_describe.xml gnv-artifacts/src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_describe.xml gnv-artifacts/src/test/ressources/timeseries/timeseries_describe.xml gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_describe.xml gnv-artifacts/src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_describe.xml gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_describe.xml gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_describe.xml gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_describe.xml
diffstat 21 files changed, 368 insertions(+), 149 deletions(-) [+]
line wrap: on
line diff
--- a/gnv-artifacts/ChangeLog	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/ChangeLog	Thu Nov 05 14:45:54 2009 +0000
@@ -1,3 +1,26 @@
+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): 
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java	Thu Nov 05 14:45:54 2009 +0000
@@ -239,7 +239,7 @@
         }
     }
 
-    protected Document createDescibeOutput(CallMeta callMeta, String uuid) {
+    protected Document createDescibeOutput(CallMeta callMeta, String uuid, boolean incudeUI) {
         log.debug("GNVArtifactBase.createDescibeOutput");
         Document document = XMLUtils.newDocument();
         Element rootNode = this.createRootNode(document);
@@ -248,9 +248,20 @@
         this.createCurrentState(rootNode, document);
         this.createReachableStates(rootNode, document);
         this.createModel(rootNode, document);
-        this.createUserInterface(rootNode, document, callMeta, uuid);
+        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,
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java	Thu Nov 05 14:45:54 2009 +0000
@@ -97,7 +97,14 @@
                           + this.xmlUtilities
                                   .writeDocument2String(feedDocument));
                 Document descibeDocument = xmlUtilities
-                        .reInitDocument(this.productArtifact.describe(context));
+                        .reInitDocument(this.
+                                        productArtifact.
+                                        describe(xmlUtilities.
+                                                 reInitDocument(this.
+                                                 createDescribeRequestBody(uuid, 
+                                                                           hash, 
+                                                                           false)),
+                                                 context));
                 log.debug("Descibe ==> "
                           + this.xmlUtilities
                                   .writeDocument2String(descibeDocument));
@@ -122,6 +129,33 @@
         }
         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,
@@ -188,14 +222,14 @@
     }
 
     /**
-     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object)
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
      */
     @Override
-    public Document describe(CallContext context) {
+    public Document describe(Document data, CallContext context) {
         if (this.productArtifact == null) {
             return this.createDescibeOutput(context.getMeta());
         } else {
-            Document document = this.productArtifact.describe(context);
+            Document document = this.productArtifact.describe(data,context);
             document = new ArtifactXMLUtilities().reInitDocument(document);
             Node staticNode = Config
                     .getNodeXPath(document, "/result/ui/static");
@@ -208,6 +242,7 @@
         }
     }
 
+
     /**
      * @see de.intevation.artifactdatabase.DefaultArtifact#feed(org.w3c.dom.Document,
      *      java.lang.Object)
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java	Thu Nov 05 14:45:54 2009 +0000
@@ -36,12 +36,14 @@
     }
 
     /**
-     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object)
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
      */
     @Override
-    public Document describe(CallContext context) {
+    public Document describe(Document data, CallContext context) {
         log.debug("HorizontalProfileArtifact.describe");
-        return super.createDescibeOutput(context.getMeta(), super.identifier);
+        return super.createDescibeOutput(context.getMeta(), 
+                                         super.identifier,
+                                         this.getIncludeUIFromDocument(data));
     }
 
     /**
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontalcrosssection/HorizontalCrossSectionMeshArtifact.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontalcrosssection/HorizontalCrossSectionMeshArtifact.java	Thu Nov 05 14:45:54 2009 +0000
@@ -36,12 +36,14 @@
     }
     
     /**
-     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object)
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
      */
     @Override
-    public Document describe(CallContext context) {
+    public Document describe(Document data, CallContext context) {
         log.debug("HorizontalCrossSectionMeshArtifact.describe");
-        return super.createDescibeOutput(context.getMeta(),super.identifier);
+        return super.createDescibeOutput(context.getMeta(), 
+                super.identifier,
+                this.getIncludeUIFromDocument(data));
     }
 
     /**
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java	Thu Nov 05 14:45:54 2009 +0000
@@ -35,12 +35,14 @@
     }
 
     /**
-     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object)
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
      */
     @Override
-    public Document describe(CallContext context) {
+    public Document describe(Document data, CallContext context) {
         log.debug("VerticalProfileArtifact.describe");
-        return super.createDescibeOutput(context.getMeta(),super.identifier);
+        return super.createDescibeOutput(context.getMeta(), 
+                super.identifier,
+                this.getIncludeUIFromDocument(data));
     }
 
     /**
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/verticalcrosssection/VerticalCrossSectionMeshArtifact.java	Thu Nov 05 14:45:54 2009 +0000
@@ -36,12 +36,14 @@
     }
     
     /**
-     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object)
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
      */
     @Override
-    public Document describe(CallContext context) {
+    public Document describe(Document data, CallContext context) {
         log.debug("VerticalCrossSectionMeshArtifact.describe");
-        return super.createDescibeOutput(context.getMeta(),super.identifier);
+        return super.createDescibeOutput(context.getMeta(), 
+                super.identifier,
+                this.getIncludeUIFromDocument(data));
     }
 
     /**
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java	Thu Nov 05 14:45:54 2009 +0000
@@ -22,6 +22,6 @@
 
     @Override
     protected double calculateXOrdinateValue(Result row) throws SQLException {
-        return row.getDouble("XORDINATE_XCOORD");
+        return 0; // TODO FIXME
     }
 }
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java	Thu Nov 05 14:45:54 2009 +0000
@@ -35,12 +35,14 @@
     }
 
     /**
-     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object)
+     * @see de.intevation.artifactdatabase.DefaultArtifact#describe(org.w3c.dom.Document, de.intevation.artifacts.CallContext)
      */
     @Override
-    public Document describe(CallContext context) {
+    public Document describe(Document data, CallContext context) {
         log.debug("TimeSeriesArtifact.describe");
-        return super.createDescibeOutput(context.getMeta(), super.identifier);
+        return super.createDescibeOutput(context.getMeta(), 
+                super.identifier,
+                this.getIncludeUIFromDocument(data));
     }
 
     /**
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java	Thu Nov 05 14:45:54 2009 +0000
@@ -56,8 +56,10 @@
      */
     private static Logger log = Logger.getLogger(GNVArtifactBase.class);
     
-    private static String MINVALUEFIELDNAME = "minvalue";
-    private static String MAXVALUEFIELDNAME = "maxvalue";
+    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";
 
@@ -68,10 +70,14 @@
     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;
 
@@ -107,7 +113,28 @@
      * @see de.intevation.gnv.transition.Transition#reachableTransitions()
      */
     public Collection<String> reachableTransitions() {
-        return this.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;
     }
 
     /**
@@ -135,7 +162,13 @@
             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
@@ -169,11 +202,17 @@
         this.dataName = Config.getStringXPath(configuration, "dataname");
 
         String dataMultiSelectValue = Config.getStringXPath(configuration,
-                "data-multiselect");
+                                                           "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);
+        }
+        
     }
 
     /**
@@ -298,12 +337,16 @@
     public boolean isTransitionReachable(String transitionID) {
         log.debug("TransitionBase.isTransitionReachable");
         boolean returnValue = false;
-        Iterator<String> transitions = reachableTransitions.iterator();
-        while (transitions.hasNext()) {
-            if (transitions.next().equals(transitionID)) {
-                log.debug("Transition " + transitionID + " wird unterstützt.");
-                returnValue = true;
-                break;
+        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;
@@ -316,52 +359,60 @@
     public void advance(String uuid, CallMeta callMeta)
                                                        throws TransitionException {
         log.debug("TransitionBase.advance");
-        try {
-            List<String> list = new ArrayList<String>();
-
-            Iterator<String> it = this.inputValueNames.iterator();
-            int i = 0;
-            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);
+        
+        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 {
+                List<String> list = new ArrayList<String>();
+                Iterator<String> it = this.inputValueNames.iterator();
+                int i = 0;
+                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]);
+                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);
             }
-            String[] filterValues = list.toArray(new String[0]);
-            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);
         }
     }
     
@@ -424,18 +475,29 @@
      * @param result
      * @return
      */
-    protected NamedCollection<KeyValueDescibeData> extractKVP(
-                                                              Collection<Result> result,
+    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, result.size());
+                this.dataName, dataSize);
         keyValueDescibeData.setMultiSelect(this.dataMultiSelect);
+        
+        if (this.dataNoSelect){
+            keyValueDescibeData.add(new DefaultKeyValueDescribeData(NODATASELECTIONKEY, 
+                                                                   "Keine Auswahl"));
+        }
+        String previousKey = null;
         while (rit.hasNext()) {
             Result resultValue = rit.next();
-            keyValueDescibeData.add(new DefaultKeyValueDescribeData(resultValue
-                    .getString(keyid), resultValue.getString(valueid)));
+            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;
     }
@@ -653,6 +715,10 @@
      * @see de.intevation.gnv.transition.Transition#getInputData()
      */
     public Collection<InputData> getInputData() throws TransitionException {
-        return this.inputData != null ? this.inputData.values() : null;
+        if (this.couldAlternativeTransitionUsed()){
+            return this.alternativeTransition.getInputData();
+        }else{
+            return this.inputData != null ? this.inputData.values() : null;
+        }
     }
 }
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/utils/InputValidator.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/InputValidator.java	Thu Nov 05 14:45:54 2009 +0000
@@ -22,6 +22,9 @@
      * 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
@@ -36,7 +39,10 @@
         String[] values = input.split(",");
         for (int i = 0; i < values.length; i++) {
             boolean valid;
-            if ("Integer".equalsIgnoreCase(type)) {
+            
+            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());
--- a/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java	Tue Nov 03 11:46:30 2009 +0000
+++ b/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java	Thu Nov 05 14:45:54 2009 +0000
@@ -91,12 +91,13 @@
 
             // Erster Schritt
 
+            Document describeDocument = this.readDocument("src/test/ressources/timeseries/timeseries_describe.xml");
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/timeseries/timeseries_step_01_feed.xml",
-                            "src/test/ressources/timeseries/timeseries_step_01_advance.xml");
+                            "src/test/ressources/timeseries/timeseries_step_01_advance.xml", describeDocument);
 
             // Zweiter Schritt
             this
@@ -104,7 +105,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/timeseries/timeseries_step_02_feed.xml",
-                            "src/test/ressources/timeseries/timeseries_step_02_advance.xml");
+                            "src/test/ressources/timeseries/timeseries_step_02_advance.xml", describeDocument);
 
             // Dritter Schritt
             this
@@ -112,7 +113,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/timeseries/timeseries_step_03_feed.xml",
-                            "src/test/ressources/timeseries/timeseries_step_03_advance.xml");
+                            "src/test/ressources/timeseries/timeseries_step_03_advance.xml", describeDocument);
 
             // Vierter Schritt
             this
@@ -120,11 +121,11 @@
                             artifact,
                             cc,
                             "src/test/ressources/timeseries/timeseries_step_04_feed.xml",
-                            "src/test/ressources/timeseries/timeseries_step_04_advance.xml");
+                            "src/test/ressources/timeseries/timeseries_step_04_advance.xml", describeDocument);
 
             Document outputData;
             // Fünfter Schritt
-            outputData = artifact.describe(cc);
+            outputData = artifact.describe(describeDocument,cc);
             FileOutputStream fos = null;
             try {
                 fos = new FileOutputStream(
@@ -171,12 +172,13 @@
     /**
      * @param artifact
      * @param cc
+     * @param describeDocument TODO
      * @throws Exception
      */
     private void doNextStep(Artifact artifact, CallContext cc,
-                            String feedDocument, String advanceDocument)
+                            String feedDocument, String advanceDocument, Document describeDocument)
                                                                         throws Exception {
-        Document outputData = artifact.describe(cc);
+        Document outputData = artifact.describe(describeDocument,cc);
 //        this.writeDocument2Log(outputData);
         outputData = artifact.feed(this.readDocument(feedDocument), cc);
         this.check4ExceptionReport(outputData);
@@ -201,13 +203,14 @@
 
             CallContext cc = createCallContext();
 
+            Document describeDocument = this.readDocument("src/test/ressources/timeseries_mesh/timeseries_describe.xml");
             // Erster Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/timeseries_mesh/timeseries_step_01_feed.xml",
-                            "src/test/ressources/timeseries_mesh/timeseries_step_01_advance.xml");
+                            "src/test/ressources/timeseries_mesh/timeseries_step_01_advance.xml", describeDocument);
 
             // Zweiter Schritt
             this
@@ -215,7 +218,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/timeseries_mesh/timeseries_step_02_feed.xml",
-                            "src/test/ressources/timeseries_mesh/timeseries_step_02_advance.xml");
+                            "src/test/ressources/timeseries_mesh/timeseries_step_02_advance.xml", describeDocument);
 
             // Dritter Schritt
             this
@@ -223,7 +226,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/timeseries_mesh/timeseries_step_03_feed.xml",
-                            "src/test/ressources/timeseries_mesh/timeseries_step_03_advance.xml");
+                            "src/test/ressources/timeseries_mesh/timeseries_step_03_advance.xml", describeDocument);
 
             // Vierter Schritt
             this
@@ -231,7 +234,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/timeseries_mesh/timeseries_step_04_feed.xml",
-                            "src/test/ressources/timeseries_mesh/timeseries_step_04_advance.xml");
+                            "src/test/ressources/timeseries_mesh/timeseries_step_04_advance.xml", describeDocument);
 
             // Fünfter Schritt
             this
@@ -239,7 +242,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/timeseries_mesh/timeseries_step_05_feed.xml",
-                            "src/test/ressources/timeseries_mesh/timeseries_step_05_advance.xml");
+                            "src/test/ressources/timeseries_mesh/timeseries_step_05_advance.xml", describeDocument);
 
             // Sechster Schritt
             this
@@ -247,10 +250,10 @@
                             artifact,
                             cc,
                             "src/test/ressources/timeseries_mesh/timeseries_step_06_feed.xml",
-                            "src/test/ressources/timeseries_mesh/timeseries_step_06_advance.xml");
+                            "src/test/ressources/timeseries_mesh/timeseries_step_06_advance.xml", describeDocument);
 
             // Siebter Schritt
-            Document outputData = artifact.describe(cc);
+            Document outputData = artifact.describe(describeDocument,cc);
             FileOutputStream fos = null;
             FileOutputStream fos2 = null;
             FileOutputStream fos3 = null;
@@ -320,13 +323,14 @@
 
             CallContext cc = createCallContext();
 
+            Document describeDocument = this.readDocument("src/test/ressources/verticalprofile/verticalprofile_describe.xml");
             // Erster Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile/verticalprofile_step_01_feed.xml",
-                            "src/test/ressources/verticalprofile/verticalprofile_step_02_advance.xml");
+                            "src/test/ressources/verticalprofile/verticalprofile_step_02_advance.xml", describeDocument);
 
             // Zweiter Schritt
             this
@@ -334,7 +338,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile/verticalprofile_step_02_feed.xml",
-                            "src/test/ressources/verticalprofile/verticalprofile_step_02_advance.xml");
+                            "src/test/ressources/verticalprofile/verticalprofile_step_02_advance.xml", describeDocument);
 
             // Dritter Schritt
             this
@@ -342,7 +346,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile/verticalprofile_step_03_feed.xml",
-                            "src/test/ressources/verticalprofile/verticalprofile_step_03_advance.xml");
+                            "src/test/ressources/verticalprofile/verticalprofile_step_03_advance.xml", describeDocument);
             
             // Vierter Schritt
             this
@@ -350,11 +354,11 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile/verticalprofile_step_04_feed.xml",
-                            "src/test/ressources/verticalprofile/verticalprofile_step_04_advance.xml");
+                            "src/test/ressources/verticalprofile/verticalprofile_step_04_advance.xml", describeDocument);
 
 
             // Vierter Schritt
-            Document outputData = artifact.describe(cc);
+            Document outputData = artifact.describe(describeDocument,cc);
             FileOutputStream fos = null;
             FileOutputStream fos2 = null;
             FileOutputStream fos3 = null;
@@ -423,14 +427,14 @@
             log.debug("VerticalProfile-Artifact is available");
 
             CallContext cc = createCallContext();
-
+            Document describeDocument = this.readDocument("src/test/ressources/verticalprofile_mesh/verticalprofile_describe.xml");
             // Erster Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile_mesh/verticalprofile_step_01_feed.xml",
-                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_01_advance.xml");
+                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_01_advance.xml", describeDocument);
 
             // Zweiter Schritt
             this
@@ -438,7 +442,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_feed.xml",
-                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_advance.xml");
+                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_advance.xml", describeDocument);
 
             // Dritter Schritt
             this
@@ -446,7 +450,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile_mesh/verticalprofile_step_03_feed.xml",
-                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_03_advance.xml");
+                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_03_advance.xml", describeDocument);
 
             // Vierter Schritt
             this
@@ -454,7 +458,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile_mesh/verticalprofile_step_04_feed.xml",
-                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_04_advance.xml");
+                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_04_advance.xml", describeDocument);
 
             // Fünfter Schritt
             this
@@ -462,7 +466,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile_mesh/verticalprofile_step_05_feed.xml",
-                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_05_advance.xml");
+                            "src/test/ressources/verticalprofile_mesh/verticalprofile_step_05_advance.xml", describeDocument);
             
             // Sechster Schritt
             this
@@ -470,7 +474,7 @@
                     artifact,
                     cc,
                     "src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_feed.xml",
-                    "src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_advance.xml");
+                    "src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_advance.xml", describeDocument);
             
             // Siebter Schritt
             this
@@ -478,10 +482,10 @@
                     artifact,
                     cc,
                     "src/test/ressources/verticalprofile_mesh/verticalprofile_step_07_feed.xml",
-                    "src/test/ressources/verticalprofile_mesh/verticalprofile_step_07_advance.xml");
+                    "src/test/ressources/verticalprofile_mesh/verticalprofile_step_07_advance.xml", describeDocument);
 
             // Achter Schritt
-            Document outputData = artifact.describe(cc);
+            Document outputData = artifact.describe(describeDocument,cc);
             FileOutputStream fos = null;
             FileOutputStream fos2 = null;
             FileOutputStream fos3 = null;
@@ -550,14 +554,14 @@
             log.debug("VerticalProfile-Artifact is available");
 
             CallContext cc = createCallContext();
-
+            Document describeDocument = this.readDocument("src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_describe.xml");
             // Erster Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_01_feed.xml",
-                            "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_01_advance.xml");
+                            "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_01_advance.xml", describeDocument);
 
             // Zweiter Schritt
             this
@@ -565,7 +569,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_feed.xml",
-                            "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_advance.xml");
+                            "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_advance.xml", describeDocument);
 
             // Dritter Schritt
             this
@@ -573,17 +577,17 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_feed.xml",
-                            "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_advance.xml");
+                            "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_advance.xml", describeDocument);
             // Vierter Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_feed.xml",
-                            "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_advance.xml");
+                            "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_advance.xml", describeDocument);
 
             // Vierter Schritt
-            Document outputData = artifact.describe(cc);
+            Document outputData = artifact.describe(describeDocument,cc);
             FileOutputStream fos = null;
             FileOutputStream fos2 = null;
             FileOutputStream fos3 = null;
@@ -653,14 +657,14 @@
             log.debug("VerticalProfile-Artifact is available");
 
             CallContext cc = createCallContext();
-
+            Document describeDocument = this.readDocument("src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_describe.xml");
             // Erster Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_00_feed.xml",
-                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_00_advance.xml");
+                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_00_advance.xml", describeDocument);
 
             // Erster Schritt
             this
@@ -668,7 +672,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_01_feed.xml",
-                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_01_advance.xml");
+                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_01_advance.xml", describeDocument);
 
             // Zweiter Schritt
             this
@@ -676,30 +680,30 @@
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_02_feed.xml",
-                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_02_advance.xml");
+                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_02_advance.xml", describeDocument);
             // Dritter Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_03_feed.xml",
-                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_03_advance.xml");
+                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_03_advance.xml", describeDocument);
             // Vierter Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_04_feed.xml",
-                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_04_advance.xml");
+                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_04_advance.xml", describeDocument);
             // Fünfter Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_05_feed.xml",
-                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_05_advance.xml");
+                            "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_05_advance.xml", describeDocument);
 
-            Document outputData = artifact.describe(cc);
+            Document outputData = artifact.describe(describeDocument, cc);
             FileOutputStream fos = null;
             FileOutputStream fos2 = null;
             FileOutputStream fos3 = null;
@@ -763,14 +767,14 @@
             log.debug("VerticalProfile-Artifact is available");
 
             CallContext cc = createCallContext();
-
+            Document describeDocument = this.readDocument("src/test/ressources/horizontalProfile_mesh/horizontalprofile_describe.xml");
             // Erster Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_01_feed.xml",
-                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_01_advance.xml");
+                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_01_advance.xml", describeDocument);
 
             // Zweiter Schritt
             this
@@ -778,28 +782,28 @@
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_feed.xml",
-                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_advance.xml");
+                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_advance.xml", describeDocument);
             // Dritter Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_03_feed.xml",
-                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_03_advance.xml");
+                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_03_advance.xml", describeDocument);
             // Vierter Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_04_feed.xml",
-                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_04_advance.xml");
+                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_04_advance.xml", describeDocument);
             // Fünfter Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_05_feed.xml",
-                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_05_advance.xml");
+                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_05_advance.xml", describeDocument);
 
             // Sechster Schritt
             this
@@ -807,7 +811,7 @@
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_06_feed.xml",
-                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_06_advance.xml");
+                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_06_advance.xml", describeDocument);
 
             // Siebter Schritt
             this
@@ -815,9 +819,9 @@
                             artifact,
                             cc,
                             "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_07_feed.xml",
-                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_07_advance.xml");
+                            "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_07_advance.xml", describeDocument);
 
-            Document outputData = artifact.describe(cc);
+            Document outputData = artifact.describe(describeDocument,cc);
             FileOutputStream fos = null;
             FileOutputStream fos2 = null;
             FileOutputStream fos3 = null;
@@ -884,14 +888,14 @@
             log.debug("HorizontalCrossSectionMesh-Artifact is available");
 
             CallContext cc = createCallContext();
-
+            Document describeDocument = this.readDocument("src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_describe.xml");
             // Erster Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_01_feed.xml",
-                            "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_01_advance.xml");
+                            "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_01_advance.xml", describeDocument);
 
             // Zweiter Schritt
             this
@@ -899,23 +903,23 @@
                             artifact,
                             cc,
                             "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_02_feed.xml",
-                            "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_02_advance.xml");
+                            "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_02_advance.xml", describeDocument);
             // Dritter Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_03_feed.xml",
-                            "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_03_advance.xml");
+                            "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_03_advance.xml", describeDocument);
             // Vierter Schritt
             this
                     .doNextStep(
                             artifact,
                             cc,
                             "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_04_feed.xml",
-                            "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_04_advance.xml");
+                            "src/test/ressources/horizontalcrosssection_mesh/horizontalcrosssection_step_04_advance.xml", describeDocument);
             
-            Document outputData = artifact.describe(cc);
+            Document outputData = artifact.describe(describeDocument,cc);
             FileOutputStream fos = null;
             FileOutputStream fos2 = null;
             FileOutputStream fos3 = null;
@@ -980,14 +984,14 @@
             log.debug("VerticalProfile-Artifact is available");
 
             CallContext cc = createCallContext();
-
+            Document describeDocument = this.readDocument("src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_describe.xml");
             // 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");
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_01_advance.xml", describeDocument);
 
             // Zweiter Schritt
             this
@@ -995,28 +999,28 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_02_feed.xml",
-                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_02_advance.xml");
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_02_advance.xml", describeDocument);
             // 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");
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_03_advance.xml", describeDocument);
             // 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");
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_04_advance.xml", describeDocument);
             // 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");
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_05_advance.xml", describeDocument);
 
             // Sechster Schritt
             this
@@ -1024,10 +1028,10 @@
                             artifact,
                             cc,
                             "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_06_feed.xml",
-                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_06_advance.xml");
+                            "src/test/ressources/verticalcrosssection_mesh/verticalcrosssection_step_06_advance.xml", describeDocument);
 
            
-            Document outputData = artifact.describe(cc);
+            Document outputData = artifact.describe(describeDocument,cc);
             FileOutputStream fos = null;
             FileOutputStream fos2 = null;
             FileOutputStream fos3 = null;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_describe.xml	Thu Nov 05 14:45:54 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="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_mesh/horizontalprofile_describe.xml	Thu Nov 05 14:45:54 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="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/horizontalcrosssection_mesh/horizontalcrosssection_describe.xml	Thu Nov 05 14:45:54 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="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/timeseries/timeseries_describe.xml	Thu Nov 05 14:45:54 2009 +0000
@@ -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_mesh/timeseries_describe.xml	Thu Nov 05 14:45:54 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="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/verticalcrosssection_mesh/verticalcrosssection_describe.xml	Thu Nov 05 14:45:54 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="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/verticalprofile/verticalprofile_describe.xml	Thu Nov 05 14:45:54 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="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_describe.xml	Thu Nov 05 14:45:54 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="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_mesh/verticalprofile_describe.xml	Thu Nov 05 14:45:54 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="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

http://dive4elements.wald.intevation.org