comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/AbstractStaticStateArtifact.java @ 4158:a699d6c42a8b

Override describe method to return also a uiprovider.
author Björn Ricks <bjoern.ricks@intevation.de>
date Tue, 16 Oct 2012 15:50:27 +0200
parents 44d27b8bb0bc
children 79878efbdf07
comparison
equal deleted inserted replaced
4157:44d27b8bb0bc 4158:a699d6c42a8b
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;
7 21
8 import de.intevation.flys.artifacts.states.StaticState; 22 import de.intevation.flys.artifacts.states.StaticState;
9 23
10 /** 24 /**
16 * @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>
17 */ 31 */
18 public abstract class AbstractStaticStateArtifact extends StaticFLYSArtifact { 32 public abstract class AbstractStaticStateArtifact extends StaticFLYSArtifact {
19 33
20 private transient StaticState staticstate; 34 private transient StaticState staticstate;
35
36 private static final Logger logger =
37 Logger.getLogger(AbstractStaticStateArtifact.class);
21 38
22 /** 39 /**
23 * Get a list containing the one and only State. 40 * Get a list containing the one and only State.
24 * @param context ignored. 41 * @param context ignored.
25 * @return list with one and only state. 42 * @return list with one and only state.
66 */ 83 */
67 @Override 84 @Override
68 protected State getState(Object context, String stateID) { 85 protected State getState(Object context, String stateID) {
69 return getStaticState(); 86 return getStaticState();
70 } 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 }
71 } 140 }

http://dive4elements.wald.intevation.org