Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 134:f3dfa188d8b2
Let the states describe the static ui part.
flys-artifacts/trunk@1502 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 17 Mar 2011 16:03:36 +0000 |
parents | 206312c2aa76 |
children | dde6904ba160 |
comparison
equal
deleted
inserted
replaced
133:d6197a05a87c | 134:f3dfa188d8b2 |
---|---|
1 package de.intevation.flys.artifacts; | 1 package de.intevation.flys.artifacts; |
2 | 2 |
3 import java.util.List; | 3 import java.util.List; |
4 import java.util.Set; | 4 import java.util.Vector; |
5 | |
6 import javax.xml.xpath.XPathConstants; | |
7 | 5 |
8 import org.w3c.dom.Document; | 6 import org.w3c.dom.Document; |
9 import org.w3c.dom.Element; | 7 import org.w3c.dom.Element; |
10 import org.w3c.dom.Node; | 8 import org.w3c.dom.Node; |
11 | 9 |
13 | 11 |
14 import de.intevation.artifacts.ArtifactNamespaceContext; | 12 import de.intevation.artifacts.ArtifactNamespaceContext; |
15 import de.intevation.artifacts.CallContext; | 13 import de.intevation.artifacts.CallContext; |
16 | 14 |
17 import de.intevation.artifactdatabase.ProtocolUtils; | 15 import de.intevation.artifactdatabase.ProtocolUtils; |
18 import de.intevation.artifactdatabase.data.StateData; | |
19 import de.intevation.artifactdatabase.state.State; | 16 import de.intevation.artifactdatabase.state.State; |
20 import de.intevation.artifactdatabase.state.StateEngine; | 17 import de.intevation.artifactdatabase.state.StateEngine; |
21 import de.intevation.artifactdatabase.transition.TransitionEngine; | 18 import de.intevation.artifactdatabase.transition.TransitionEngine; |
22 | 19 |
23 import de.intevation.artifacts.common.utils.XMLUtils; | 20 import de.intevation.artifacts.common.utils.XMLUtils; |
24 | 21 |
22 import de.intevation.flys.artifacts.states.DefaultState; | |
25 import de.intevation.flys.artifacts.context.FLYSContext; | 23 import de.intevation.flys.artifacts.context.FLYSContext; |
26 import de.intevation.flys.artifacts.resources.Resources; | |
27 | 24 |
28 | 25 |
29 /** | 26 /** |
30 * The default WINFO artifact. | 27 * The default WINFO artifact. |
31 * | 28 * |
98 creator, "ui", null, null); | 95 creator, "ui", null, null); |
99 | 96 |
100 Element staticUI = ProtocolUtils.createArtNode( | 97 Element staticUI = ProtocolUtils.createArtNode( |
101 creator, "static", null, null); | 98 creator, "static", null, null); |
102 | 99 |
103 appendStaticUI(creator, staticUI, context); | 100 appendStaticUI(description, staticUI, context, identifier()); |
104 | 101 |
105 Element dynamic = current.describe( | 102 Element dynamic = current.describe( |
106 description, | 103 description, |
107 root, | 104 root, |
108 context, | 105 context, |
128 | 125 |
129 /** | 126 /** |
130 * This method appends the static data - that has already been inserted by | 127 * This method appends the static data - that has already been inserted by |
131 * the user - to the static node of the DESCRIBE document. | 128 * the user - to the static node of the DESCRIBE document. |
132 * | 129 * |
133 * @param cr The ElementCreator that is used to create new elements. | 130 * @param doc The document. |
134 * @param ui The static ui node. | 131 * @param ui The root node. |
132 * @param context The CallContext. | |
133 * @param uuid The identifier of the artifact. | |
135 */ | 134 */ |
136 protected void appendStaticUI( | 135 protected void appendStaticUI( |
137 XMLUtils.ElementCreator cr, | 136 Document doc, |
138 Node ui, | 137 Node ui, |
139 CallContext context) | 138 CallContext context, |
139 String uuid) | |
140 { | 140 { |
141 Set<String> keys = data.keySet(); | 141 Vector<String> stateIds = getPreviousStateIds(); |
142 | 142 |
143 // XXX This just handles single selection string values. If we need more | 143 FLYSContext flysContext = getFlysContext(context); |
144 // complex (maybe multiselect) objects we should introduce a data | 144 StateEngine engine = (StateEngine) flysContext.get( |
145 // structure for this - this structure should have a method that returns | 145 FLYSContext.STATE_ENGINE_KEY); |
146 // a <data> node that contains its items. | |
147 for (String k: keys) { | |
148 logger.debug("The key = " + k); | |
149 StateData d = getData(k); | |
150 String name = Resources.getMsg( | |
151 context.getMeta(), | |
152 d.getName(), | |
153 d.getName()); | |
154 | 146 |
155 Element dataElement = cr.create("data"); | 147 for (String stateId: stateIds) { |
156 cr.addAttr(dataElement, "name", name, true); | 148 logger.debug("Append static data for state: " + stateId); |
157 cr.addAttr(dataElement, "type", d.getType(), true); | 149 DefaultState state = (DefaultState) engine.getState(stateId); |
150 ui.appendChild(state.describeStatic(doc, ui, context, uuid)); | |
151 } | |
158 | 152 |
159 Element itemElement = cr.create("item"); | |
160 cr.addAttr(itemElement, "value", (String) d.getValue(), true); | |
161 // TODO Description (human readable) is missing | |
162 | |
163 dataElement.appendChild(itemElement); | |
164 ui.appendChild(dataElement); | |
165 } | |
166 } | 153 } |
167 } | 154 } |
168 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 155 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |