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