comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticFLYSArtifact.java @ 2424:092e519ff461

merged flys-artifacts/2.6.1
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:26 +0200
parents baefcfba97aa
children 64dc2997b2dd
comparison
equal deleted inserted replaced
2392:8112ec686a9a 2424:092e519ff461
1 package de.intevation.flys.artifacts;
2
3 import java.util.Collection;
4 import java.util.List;
5
6 import org.apache.log4j.Logger;
7
8 import org.w3c.dom.Document;
9 import org.w3c.dom.Element;
10
11 import de.intevation.artifacts.ArtifactNamespaceContext;
12 import de.intevation.artifacts.CallContext;
13
14 import de.intevation.artifactdatabase.data.StateData;
15 import de.intevation.artifactdatabase.ProtocolUtils;
16 import de.intevation.artifactdatabase.state.Facet;
17 import de.intevation.artifactdatabase.state.Output;
18 import de.intevation.artifactdatabase.state.State;
19
20 import de.intevation.artifacts.common.utils.XMLUtils;
21 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
22
23 /**
24 * A basic FLYSArtifact.
25 */
26 public abstract class StaticFLYSArtifact extends FLYSArtifact {
27
28 private static final Logger logger =
29 Logger.getLogger(StaticFLYSArtifact.class);
30
31
32 /**
33 * Create description document which includes outputmodes.
34 * @param data ignored.
35 */
36 @Override
37 public Document describe(Document data, CallContext cc) {
38 logger.debug("Describe artifact: " + identifier());
39
40 Document desc = XMLUtils.newDocument();
41
42 ElementCreator creator = new ElementCreator(
43 desc,
44 ArtifactNamespaceContext.NAMESPACE_URI,
45 ArtifactNamespaceContext.NAMESPACE_PREFIX);
46
47 Element root = ProtocolUtils.createRootNode(creator);
48 desc.appendChild(root);
49
50 ProtocolUtils.appendDescribeHeader(creator, root, identifier(), hash());
51 root.appendChild(createOutputModes(cc, desc, creator));
52
53 // Add the data to an anonymous state.
54 Collection<StateData> datas = this.data.values();
55 if (datas.size() > 0) {
56 Element ui = creator.create("ui");
57 Element staticE = creator.create("static");
58 Element state = creator.create("state");
59 ui.appendChild(staticE);
60 staticE.appendChild(state);
61 root.appendChild(ui);
62
63 for (StateData dataItem : datas) {
64 Element itemelent = creator.create("data");
65 creator.addAttr(itemelent, "name", dataItem.getName(), true);
66 creator.addAttr(itemelent, "type", dataItem.getType(), true);
67 state.appendChild(itemelent);
68 Element valuement = creator.create("item");
69 creator.addAttr(valuement, "label", dataItem.getDescription(), true);
70 creator.addAttr(valuement, "value", dataItem.getValue().toString(), true);
71 itemelent.appendChild(valuement);
72 }
73 }
74
75 return desc;
76 }
77
78
79 protected Element createOutputModes(
80 CallContext cc,
81 Document doc,
82 ElementCreator creator)
83 {
84 Element outs = ProtocolUtils.createArtNode(
85 creator, "outputmodes", null, null);
86
87 State state = getCurrentState(cc);
88 List<Output> list = state.getOutputs();
89
90 if (list != null && list.size() > 0) {
91 List<Facet> fs = facets.get(state.getID());
92 if (fs != null && fs.size() > 0) {
93 List<Output> generated = generateOutputs(list, fs);
94
95 logger.debug("Found " + fs.size() + " current facets.");
96 if (!generated.isEmpty()) {
97 ProtocolUtils.appendOutputModes(
98 doc, outs, generated);
99 }
100 }
101 else {
102 logger.debug("No facets found for the current state.");
103 }
104 }
105
106 return outs;
107 }
108 }
109 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org