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 :

http://dive4elements.wald.intevation.org