comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/AbstractStaticStateArtifact.java @ 4183:1755a1bfe5ce

Merged
author Christian Lins <christian.lins@intevation.de>
date Fri, 19 Oct 2012 09:20:52 +0200
parents 4e1b3b4ef132
children 79878efbdf07
comparison
equal deleted inserted replaced
4182:ad2489b595d7 4183:1755a1bfe5ce
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;
21
22 import de.intevation.flys.artifacts.states.StaticState;
7 23
8 /** 24 /**
9 * A abstract baseclass for Artifacts which are using only one static state. 25 * A abstract baseclass for Artifacts which are using only one static state.
10 * 26 *
11 * This class is intended to be used without the config/stateengine to generate 27 * This class is intended to be used without the config/stateengine to generate
13 * 29 *
14 * @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>
15 */ 31 */
16 public abstract class AbstractStaticStateArtifact extends StaticFLYSArtifact { 32 public abstract class AbstractStaticStateArtifact extends StaticFLYSArtifact {
17 33
18 private transient State staticstate; 34 private transient StaticState staticstate;
35
36 private static final Logger logger =
37 Logger.getLogger(AbstractStaticStateArtifact.class);
19 38
20 /** 39 /**
21 * Get a list containing the one and only State. 40 * Get a list containing the one and only State.
22 * @param context ignored. 41 * @param context ignored.
23 * @return list with one and only state. 42 * @return list with one and only state.
43 /** 62 /**
44 * A child class must override this method to set its static state 63 * A child class must override this method to set its static state
45 */ 64 */
46 protected abstract void initStaticState(); 65 protected abstract void initStaticState();
47 66
48 protected void setStaticState(State state) { 67 protected void setStaticState(StaticState state) {
49 this.staticstate = state; 68 this.staticstate = state;
50 } 69 }
51 70
52 protected State getStaticState() { 71 protected StaticState getStaticState() {
53 if (staticstate == null) { 72 if (staticstate == null) {
54 initStaticState(); 73 initStaticState();
55 } 74 }
56 return staticstate; 75 return staticstate;
57 } 76 }
64 */ 83 */
65 @Override 84 @Override
66 protected State getState(Object context, String stateID) { 85 protected State getState(Object context, String stateID) {
67 return getStaticState(); 86 return getStaticState();
68 } 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 }
69 } 140 }

http://dive4elements.wald.intevation.org