Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/AbstractStaticStateArtifact.java @ 4183:1755a1bfe5ce
Merged
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Fri, 19 Oct 2012 09:20:52 +0200 |
parents | 4e1b3b4ef132 |
children | 79878efbdf07 |
comparison
equal
deleted
inserted
replaced
4182:ad2489b595d7 | 4183:1755a1bfe5ce |
---|---|
1 package de.intevation.flys.artifacts; | 1 package de.intevation.flys.artifacts; |
2 | 2 |
3 import java.util.ArrayList; | 3 import java.util.ArrayList; |
4 import java.util.Collection; | |
4 import java.util.List; | 5 import java.util.List; |
5 | 6 |
7 import org.apache.log4j.Logger; | |
8 | |
9 import org.w3c.dom.Document; | |
10 import org.w3c.dom.Element; | |
11 | |
12 import de.intevation.artifacts.CallContext; | |
13 import de.intevation.artifacts.ArtifactNamespaceContext; | |
14 | |
15 import de.intevation.artifacts.common.utils.XMLUtils; | |
16 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; | |
17 | |
18 import de.intevation.artifactdatabase.ProtocolUtils; | |
19 import de.intevation.artifactdatabase.data.StateData; | |
6 import de.intevation.artifactdatabase.state.State; | 20 import de.intevation.artifactdatabase.state.State; |
21 | |
22 import de.intevation.flys.artifacts.states.StaticState; | |
7 | 23 |
8 /** | 24 /** |
9 * A abstract baseclass for Artifacts which are using only one static state. | 25 * A abstract baseclass for Artifacts which are using only one static state. |
10 * | 26 * |
11 * This class is intended to be used without the config/stateengine to generate | 27 * This class is intended to be used without the config/stateengine to generate |
13 * | 29 * |
14 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a> | 30 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a> |
15 */ | 31 */ |
16 public abstract class AbstractStaticStateArtifact extends StaticFLYSArtifact { | 32 public abstract class AbstractStaticStateArtifact extends StaticFLYSArtifact { |
17 | 33 |
18 private transient State staticstate; | 34 private transient StaticState staticstate; |
35 | |
36 private static final Logger logger = | |
37 Logger.getLogger(AbstractStaticStateArtifact.class); | |
19 | 38 |
20 /** | 39 /** |
21 * Get a list containing the one and only State. | 40 * Get a list containing the one and only State. |
22 * @param context ignored. | 41 * @param context ignored. |
23 * @return list with one and only state. | 42 * @return list with one and only state. |
43 /** | 62 /** |
44 * A child class must override this method to set its static state | 63 * A child class must override this method to set its static state |
45 */ | 64 */ |
46 protected abstract void initStaticState(); | 65 protected abstract void initStaticState(); |
47 | 66 |
48 protected void setStaticState(State state) { | 67 protected void setStaticState(StaticState state) { |
49 this.staticstate = state; | 68 this.staticstate = state; |
50 } | 69 } |
51 | 70 |
52 protected State getStaticState() { | 71 protected StaticState getStaticState() { |
53 if (staticstate == null) { | 72 if (staticstate == null) { |
54 initStaticState(); | 73 initStaticState(); |
55 } | 74 } |
56 return staticstate; | 75 return staticstate; |
57 } | 76 } |
64 */ | 83 */ |
65 @Override | 84 @Override |
66 protected State getState(Object context, String stateID) { | 85 protected State getState(Object context, String stateID) { |
67 return getStaticState(); | 86 return getStaticState(); |
68 } | 87 } |
88 | |
89 @Override | |
90 public Document describe(Document data, CallContext cc) { | |
91 logger.debug("Describe artifact: " + identifier()); | |
92 | |
93 Document desc = XMLUtils.newDocument(); | |
94 | |
95 ElementCreator creator = new ElementCreator( | |
96 desc, | |
97 ArtifactNamespaceContext.NAMESPACE_URI, | |
98 ArtifactNamespaceContext.NAMESPACE_PREFIX); | |
99 | |
100 Element root = ProtocolUtils.createRootNode(creator); | |
101 desc.appendChild(root); | |
102 | |
103 Element name = ProtocolUtils.createArtNode( | |
104 creator, "name", | |
105 new String[] { "value" }, | |
106 new String[] { getName() }); | |
107 | |
108 root.appendChild(name); | |
109 root.appendChild(createOutputModes(cc, desc, creator)); | |
110 | |
111 ProtocolUtils.appendDescribeHeader(creator, root, identifier(), hash()); | |
112 | |
113 // Add the data to an anonymous state. | |
114 Collection<StateData> datas = getAllData(); | |
115 if (datas.size() > 0) { | |
116 Element ui = creator.create("ui"); | |
117 Element staticE = creator.create("static"); | |
118 | |
119 StaticState current = getStaticState(); | |
120 Element state = current.describeStatic(this, desc, root, cc, null); | |
121 staticE.appendChild(state); | |
122 | |
123 for (StateData dataItem : datas) { | |
124 Element itemelent = creator.create("data"); | |
125 creator.addAttr(itemelent, "name", dataItem.getName(), true); | |
126 creator.addAttr(itemelent, "type", dataItem.getType(), true); | |
127 state.appendChild(itemelent); | |
128 Element valuement = creator.create("item"); | |
129 creator.addAttr(valuement, "label", dataItem.getDescription(), true); | |
130 creator.addAttr(valuement, "value", dataItem.getValue().toString(), true); | |
131 itemelent.appendChild(valuement); | |
132 } | |
133 | |
134 ui.appendChild(staticE); | |
135 root.appendChild(ui); | |
136 } | |
137 | |
138 return desc; | |
139 } | |
69 } | 140 } |