comparison 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
comparison
equal deleted inserted replaced
51:71788b63b146 52:4d6a82b96059
1 /**
2 *
3 */
4 package de.intevation.gnv.artifacts;
5
6 import java.util.HashMap;
7 import java.util.Map;
8
9 import org.apache.log4j.Logger;
10 import org.w3c.dom.Document;
11 import org.w3c.dom.Node;
12 import org.w3c.dom.NodeList;
13
14 import de.intevation.artifactdatabase.Config;
15 import de.intevation.artifactdatabase.DefaultArtifact;
16 import de.intevation.gnv.artifacts.context.GNVArtifactContext;
17 import de.intevation.gnv.transition.Transition;
18 import de.intevation.gnv.transition.TransitionFactory;
19
20 /**
21 * @author Tim Englich <tim.englich@intevation.de>
22 *
23 */
24 public abstract class GNVArtifactBase extends DefaultArtifact {
25 /**
26 * the logger, used to log exceptions and additonaly information
27 */
28 private static Logger log = Logger.getLogger(GNVArtifactBase.class);
29 /**
30 * The UID of this Class
31 */
32 private static final long serialVersionUID = -8907096744400741458L;
33
34 public static final String XPATH_IDENTIFIER_REPLACE = "IDENTIFIER";
35 /**
36 * The XPATH to the XML-Fragment that should be used for the Configuration
37 */
38 public static final String XPATH_ARTIFACT_CONFIGURATION= "/artifact-database/artifacts/artifact[@name='"+XPATH_IDENTIFIER_REPLACE+"']";
39
40 protected Transition current = null;
41
42 protected Map<String, Transition> transitions = null;
43
44 protected String name = null;
45 /**
46 * Constructor
47 */
48 public GNVArtifactBase() {
49 super();
50 }
51
52 protected Node getConfigurationFragment(Document document){
53 log.debug("GNVArtifactBase.getConfigurationFragment");
54 String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(XPATH_IDENTIFIER_REPLACE, this.name);
55 log.debug(xpathQuery);
56 return Config.getNodeXPath(document,xpathQuery);
57
58 }
59
60 /**
61 * @see de.intevation.artifactdatabase.DefaultArtifact#setup(java.lang.String, java.lang.Object)
62 */
63 @Override
64 public void setup(String identifier, Object context) {
65 log.debug("GNVArtifactBase.setup");
66 super.setup(identifier, context);
67 if (context instanceof GNVArtifactContext){
68 GNVArtifactContext gnvContext = (GNVArtifactContext)context;
69 Document doc = gnvContext.getConfig();
70 Node artifactNode = this.getConfigurationFragment(doc);
71 NodeList transitionList = Config.getNodeSetXPath(artifactNode, "transitions/transition");
72 this.transitions = new HashMap<String, Transition>(transitionList.getLength());
73 for (int i = 0 ; i < transitionList.getLength(); i++){
74 Transition tmpTransition = TransitionFactory.getInstance().createTransition(transitionList.item(i));
75 if (tmpTransition != null){
76 this.transitions.put(tmpTransition.getID(), tmpTransition);
77 if (this.current == null){
78 this.current = tmpTransition;
79 }
80 }
81 }
82
83 }
84 }
85
86
87 }

http://dive4elements.wald.intevation.org