Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/MapArtifact.java @ 3193:2f922be407ea
Moved common code of the *Artifacts into FLYSArtifact.
flys-artifacts/trunk@4809 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 27 Jun 2012 13:45:55 +0000 |
parents | 4bd3d8bbb60c |
children | 453d2d0c4258 |
comparison
equal
deleted
inserted
replaced
3192:cd309f8597f6 | 3193:2f922be407ea |
---|---|
4 | 4 |
5 import java.util.List; | 5 import java.util.List; |
6 | 6 |
7 import org.w3c.dom.Document; | 7 import org.w3c.dom.Document; |
8 import org.w3c.dom.Element; | 8 import org.w3c.dom.Element; |
9 import org.w3c.dom.Node; | |
10 | 9 |
11 import de.intevation.artifacts.ArtifactFactory; | 10 import de.intevation.artifacts.ArtifactFactory; |
12 import de.intevation.artifacts.CallMeta; | 11 import de.intevation.artifacts.CallMeta; |
13 import de.intevation.artifacts.CallContext; | 12 import de.intevation.artifacts.CallContext; |
14 | 13 |
19 import de.intevation.artifactdatabase.ProtocolUtils; | 18 import de.intevation.artifactdatabase.ProtocolUtils; |
20 import de.intevation.artifactdatabase.state.Facet; | 19 import de.intevation.artifactdatabase.state.Facet; |
21 import de.intevation.artifactdatabase.state.State; | 20 import de.intevation.artifactdatabase.state.State; |
22 import de.intevation.artifactdatabase.state.StateEngine; | 21 import de.intevation.artifactdatabase.state.StateEngine; |
23 import de.intevation.artifactdatabase.state.Output; | 22 import de.intevation.artifactdatabase.state.Output; |
24 import de.intevation.artifactdatabase.transition.TransitionEngine; | |
25 | 23 |
26 import de.intevation.flys.model.River; | 24 import de.intevation.flys.model.River; |
27 import de.intevation.flys.utils.FLYSUtils; | 25 import de.intevation.flys.utils.FLYSUtils; |
28 | 26 |
29 import de.intevation.flys.artifacts.RiverAxisArtifact.RiverAxisState; | 27 import de.intevation.flys.artifacts.RiverAxisArtifact.RiverAxisState; |
56 setCurrentState(states.get(0)); | 54 setCurrentState(states.get(0)); |
57 } | 55 } |
58 | 56 |
59 | 57 |
60 @Override | 58 @Override |
61 public Document describe(Document data, CallContext context) { | 59 protected void appendBackgroundActivity( |
62 logger.debug("Describe: the current state is: " + getCurrentStateId()); | |
63 | |
64 if (logger.isDebugEnabled()) { | |
65 dumpArtifact(); | |
66 } | |
67 | |
68 FLYSContext flysContext = FLYSUtils.getFlysContext(context); | |
69 | |
70 StateEngine stateEngine = (StateEngine) flysContext.get( | |
71 FLYSContext.STATE_ENGINE_KEY); | |
72 | |
73 TransitionEngine transitionEngine = (TransitionEngine) flysContext.get( | |
74 FLYSContext.TRANSITION_ENGINE_KEY); | |
75 | |
76 List<State> reachable = transitionEngine.getReachableStates( | |
77 this, getCurrentState(context), stateEngine); | |
78 | |
79 Document description = XMLUtils.newDocument(); | |
80 XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( | |
81 description, | |
82 ArtifactNamespaceContext.NAMESPACE_URI, | |
83 ArtifactNamespaceContext.NAMESPACE_PREFIX); | |
84 | |
85 Element root = ProtocolUtils.createRootNode(creator); | |
86 description.appendChild(root); | |
87 | |
88 State current = getCurrentState(context); | |
89 | |
90 ProtocolUtils.appendDescribeHeader(creator, root, identifier(), hash()); | |
91 ProtocolUtils.appendState(creator, root, current); | |
92 ProtocolUtils.appendReachableStates(creator, root, reachable); | |
93 | |
94 appendBackgroundActivity(creator, root, context); | |
95 | |
96 Element name = ProtocolUtils.createArtNode( | |
97 creator, "name", | |
98 new String[] { "value" }, | |
99 new String[] { getName() }); | |
100 | |
101 Element ui = ProtocolUtils.createArtNode( | |
102 creator, "ui", null, null); | |
103 | |
104 Element staticUI = ProtocolUtils.createArtNode( | |
105 creator, "static", null, null); | |
106 | |
107 Element outs = ProtocolUtils.createArtNode( | |
108 creator, "outputmodes", null, null); | |
109 appendOutputModes(description, outs, context, identifier()); | |
110 | |
111 appendStaticUI(description, staticUI, context, identifier()); | |
112 | |
113 Element dynamic = current.describe( | |
114 this, | |
115 description, | |
116 root, | |
117 context, | |
118 identifier()); | |
119 | |
120 if (dynamic != null) { | |
121 ui.appendChild(dynamic); | |
122 } | |
123 | |
124 ui.appendChild(staticUI); | |
125 | |
126 root.appendChild(name); | |
127 root.appendChild(ui); | |
128 root.appendChild(outs); | |
129 | |
130 return description; | |
131 | |
132 } | |
133 | |
134 | |
135 protected static void appendBackgroundActivity( | |
136 ElementCreator cr, | 60 ElementCreator cr, |
137 Element root, | 61 Element root, |
138 CallContext context | 62 CallContext context |
139 ) { | 63 ) { |
140 Element inBackground = cr.create("background-processing"); | 64 Element inBackground = cr.create("background-processing"); |
149 | 73 |
150 | 74 |
151 /** | 75 /** |
152 * Append output mode nodes to a document. | 76 * Append output mode nodes to a document. |
153 */ | 77 */ |
78 @Override | |
154 protected void appendOutputModes( | 79 protected void appendOutputModes( |
155 Document doc, | 80 Document doc, |
156 Element outs, | 81 Element outs, |
157 CallContext context, | 82 CallContext context, |
158 String uuid) | 83 String uuid) |
220 catch (IllegalArgumentException iae) { | 145 catch (IllegalArgumentException iae) { |
221 // state is not valid, so we do not append its outputs. | 146 // state is not valid, so we do not append its outputs. |
222 } | 147 } |
223 } | 148 } |
224 | 149 |
225 | |
226 /** | |
227 * This method appends the static data - that has already been inserted by | |
228 * the user - to the static node of the DESCRIBE document. | |
229 * | |
230 * @param doc The document. | |
231 * @param ui The root node. | |
232 * @param context The CallContext. | |
233 * @param uuid The identifier of the artifact. | |
234 */ | |
235 protected void appendStaticUI( | |
236 Document doc, | |
237 Node ui, | |
238 CallContext context, | |
239 String uuid) | |
240 { | |
241 List<String> stateIds = getPreviousStateIds(); | |
242 | |
243 logger.debug("previous states: " + stateIds); | |
244 FLYSContext flysContext = FLYSUtils.getFlysContext(context); | |
245 StateEngine engine = (StateEngine) flysContext.get( | |
246 FLYSContext.STATE_ENGINE_KEY); | |
247 | |
248 for (String stateId: stateIds) { | |
249 logger.debug("Append static data for state: " + stateId); | |
250 DefaultState state = (DefaultState) engine.getState(stateId); | |
251 | |
252 ui.appendChild(state.describeStatic(this, doc, ui, context, uuid)); | |
253 } | |
254 } | |
255 | |
256 | |
257 public static class MapState extends RiverAxisState { | 150 public static class MapState extends RiverAxisState { |
258 | 151 |
259 @Override | 152 @Override |
260 public Object computeAdvance( | 153 public Object computeAdvance( |
261 FLYSArtifact artifact, | 154 FLYSArtifact artifact, |