diff gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java @ 52:4d6a82b96059

First Implementation of the GNV-Artifacts gnv-artifacts/trunk@32 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Mon, 07 Sep 2009 15:29:24 +0000
parents
children 09b4bf848c7b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java	Mon Sep 07 15:29:24 2009 +0000
@@ -0,0 +1,87 @@
+/**
+ *
+ */
+package de.intevation.gnv.artifacts;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import de.intevation.artifactdatabase.Config;
+import de.intevation.artifactdatabase.DefaultArtifact;
+import de.intevation.gnv.artifacts.context.GNVArtifactContext;
+import de.intevation.gnv.transition.Transition;
+import de.intevation.gnv.transition.TransitionFactory;
+
+/**
+ * @author Tim Englich <tim.englich@intevation.de>
+ *
+ */
+public abstract class GNVArtifactBase extends DefaultArtifact {
+    /**
+     * the logger, used to log exceptions and additonaly information
+     */
+    private static Logger log = Logger.getLogger(GNVArtifactBase.class);
+    /**
+     * The UID of this Class
+     */
+    private static final long serialVersionUID = -8907096744400741458L;
+    
+    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+"']";
+    
+    protected Transition current = null;
+    
+    protected Map<String, Transition> transitions = null;
+
+    protected String name = null;
+    /**
+     * Constructor
+     */
+    public GNVArtifactBase() {
+        super();
+    }
+    
+    protected Node getConfigurationFragment(Document document){
+        log.debug("GNVArtifactBase.getConfigurationFragment");
+        String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(XPATH_IDENTIFIER_REPLACE, this.name);
+        log.debug(xpathQuery);
+        return Config.getNodeXPath(document,xpathQuery);
+        
+    }
+    
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#setup(java.lang.String, java.lang.Object)
+     */
+    @Override
+    public void setup(String identifier, Object context) {
+        log.debug("GNVArtifactBase.setup");
+        super.setup(identifier, context);
+        if (context instanceof GNVArtifactContext){
+            GNVArtifactContext gnvContext = (GNVArtifactContext)context;
+            Document doc = gnvContext.getConfig();
+            Node artifactNode = this.getConfigurationFragment(doc);
+            NodeList transitionList = Config.getNodeSetXPath(artifactNode, "transitions/transition");
+            this.transitions = new HashMap<String, Transition>(transitionList.getLength());
+            for (int i  = 0 ; i < transitionList.getLength(); i++){
+                Transition tmpTransition = TransitionFactory.getInstance().createTransition(transitionList.item(i));
+                if (tmpTransition != null){
+                    this.transitions.put(tmpTransition.getID(), tmpTransition);
+                    if (this.current == null){
+                        this.current = tmpTransition;
+                    }
+                }
+            }
+            
+        }
+    }
+    
+
+}

http://dive4elements.wald.intevation.org