diff gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java @ 54:09b4bf848c7b

2009-09-08 Tim Englich <tim.englich@intevation.de> * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java, * src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java:, * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java: Edited Added Output for Describe to the Artifactimplementation gnv-artifacts/trunk@36 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 08 Sep 2009 09:14:35 +0000
parents 4d6a82b96059
children 737d8bf63701
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java	Tue Sep 08 09:03:48 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java	Tue Sep 08 09:14:35 2009 +0000
@@ -4,10 +4,12 @@
 package de.intevation.gnv.artifacts;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.log4j.Logger;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
@@ -31,17 +33,32 @@
      */
     private static final long serialVersionUID = -8907096744400741458L;
     
+    /**
+     * The Identifier for the Replacement of the Artifactname
+     */
     public static final String XPATH_IDENTIFIER_REPLACE = "IDENTIFIER";
+    
     /**
      * The XPATH to the XML-Fragment that should be used for the Configuration
      */
     public static final String XPATH_ARTIFACT_CONFIGURATION= "/artifact-database/artifacts/artifact[@name='"+XPATH_IDENTIFIER_REPLACE+"']";
     
+    
+    /**
+     * The current Transition
+     */
     protected Transition current = null;
     
+    /**
+     * The Transitions that can be used
+     */
     protected Map<String, Transition> transitions = null;
 
+    /**
+     * The Name of the Artifact
+     */
     protected String name = null;
+    
     /**
      * Constructor
      */
@@ -54,7 +71,6 @@
         String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(XPATH_IDENTIFIER_REPLACE, this.name);
         log.debug(xpathQuery);
         return Config.getNodeXPath(document,xpathQuery);
-        
     }
     
     /**
@@ -83,5 +99,96 @@
         }
     }
     
+    
+    protected Document createDescibeOutput(){
+        log.debug("GNVArtifactBase.createDescibeOutput");
+        Document document = super.newDocument();
+        Element rootNode = this.createRootNode(document);
+        this.createHeader(rootNode, document, "describe");
+        this.createCurrentState(rootNode, document);
+        this.createReachableStates(rootNode, document);
+        this.createModel(rootNode, document);
+        this.createUserInterface(rootNode, document);
+        
+        return document;
+    }
+    
+    protected Element createRootNode(Document document){
+        Element rootNode = createElement(document,"result");
+        document.appendChild(rootNode);
+        return rootNode;
+    }
+    
+    protected void createHeader(Element parent, Document document, String documentType){
+        Element typeNode = createElement(document,"type");
+        typeNode.setAttribute("name", documentType);
+        parent.appendChild(typeNode);
+        
+        Element uuidNode = createElement(document,"uuid");
+        uuidNode.setAttribute("value", super.identifier);
+        parent.appendChild(uuidNode);
+        
+        Element hashNode = createElement(document,"hash");
+        hashNode.setAttribute("value", this.hash());
+        parent.appendChild(hashNode);
+
+        
+    }
+    protected void createReachableStates(Element parent,Document document){
+        Element stateNode = createElement(document,"reachable-states");
+        if (this.current != null){
+            Iterator<String> states = this.current.reachableTransitions().iterator();
+            while(states.hasNext()){
+                String value = states.next();
+                Element currentNode = createElement(document,"state");
+                currentNode.setAttribute("name", value);
+                currentNode.setAttribute("description", transitions.get(value).getDescription());
+                stateNode.appendChild(currentNode);
+            }
+        }
+        parent.appendChild(stateNode);
+    }
+    
+    protected void createCurrentState(Element parent, Document document){
+        Element stateNode = createElement(document,"state");
+        stateNode.setAttribute("name", this.current.getID());
+        stateNode.setAttribute("description", this.current.getDescription());
+        parent.appendChild(stateNode);
+    }
+    
+    
+    protected void createModel(Element parent, Document document){
+        Element modelNode = createElement(document,"model");
+        // TODO mit leben füllen.
+        
+        parent.appendChild(modelNode);
+    }
+    
+    protected void createUserInterface(Element parent, Document document){
+        Element uiNode = createElement(document,"ui");
+        
+        // TODO mit leben füllen.
+        
+        parent.appendChild(uiNode);
+    }
+    
+    protected void createOutputs(Element parent, Document document){
+        Element outputsNode = createElement(document,"outputs");
+        
+        // TODO mit leben füllen.
+        
+        parent.appendChild(outputsNode);
+    }
+
+    /**
+     * @param document
+     * @return
+     */
+    private Element createElement(Document document, String name) {
+        Element node = document.createElementNS(DefaultArtifact.NAMESPACE_URI, name);
+        node.setPrefix(DefaultArtifact.NAMESPACE_PREFIX);
+        return node;
+    }
+    
 
 }

http://dive4elements.wald.intevation.org