Mercurial > dive4elements > gnv-client
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; + } + } + } + + } + } + + +}