Mercurial > dive4elements > river
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 } |