annotate artifact-database/src/main/java/de/intevation/artifactdatabase/ProtocolUtils.java @ 261:f3d970a832ff

Bugfix: the document that is used to trigger the OUT operation of a collection will now contain the name of the output mode and its concrete subtype. artifacts/trunk@1933 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 17 May 2011 09:57:10 +0000
parents 4bb6bfaca393
children 5ed1afd81569
rev   line source
107
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 /*
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2 * Copyright (c) 2011 by Intevation GmbH
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 *
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 * This program is free software under the LGPL (>=v2.1)
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 * Read the file LGPL.txt coming with the software for details
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 */
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 package de.intevation.artifactdatabase;
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9
109
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
10 import java.util.List;
107
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import org.w3c.dom.Element;
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import de.intevation.artifacts.common.utils.XMLUtils;
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
227
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
16 import de.intevation.artifactdatabase.state.Facet;
211
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
17 import de.intevation.artifactdatabase.state.Output;
109
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
18 import de.intevation.artifactdatabase.state.State;
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
19
107
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 /**
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 * This class provides methods that help creating the artifact protocol
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 * documents describe, feed, advance and out.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 *
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 */
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 public class ProtocolUtils {
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 /**
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 * It should not be necessary to create instances of this class.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 */
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 private ProtocolUtils() {}
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 /**
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 * This method creates a node that might be used for the artifact protocol.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 *
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 * @param creator The ElementCreator that is used to create the node.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 * @param nodeName The node name.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 * @param attrName The names of optional attributes.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 * @param value The values for the optional attributes.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 *
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 * @return the created node.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 */
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 public static Element createArtNode(
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 XMLUtils.ElementCreator creator,
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 String nodeName, String[] attrName, String[] value)
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 {
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 Element typeNode = creator.create(nodeName);
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 if (attrName != null && value != null) {
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 for (int i = 0; i < attrName.length; i++) {
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 if (i < value.length) {
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 creator.addAttr(typeNode, attrName[i], value[i], true);
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 }
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 else {
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 break;
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 }
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 }
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 }
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 return typeNode;
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 }
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 /**
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 * This method creates the root node for all artifact protocol documents.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 *
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 * @param creator The ElementCreator used to create new elements.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 *
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 * @return the root node for the artifact protocol document.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 */
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 public static Element createRootNode(XMLUtils.ElementCreator creator) {
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74 return createArtNode(creator, "result", null, null);
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 }
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 /**
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 * This method appends the three necessary nodes <i>type</i>, <i>uuid</i>
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 * and <i>hash</i> of the describe document to <i>root</i> node.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 *
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 * @param creator The ElementCreator that is used to create new nodes.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 * @param root The root node of the describe document.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 * @param uuid The UUID of the artifact.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 * @param hash The hash if the artifact.
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 */
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 public static void appendDescribeHeader(
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 XMLUtils.ElementCreator creator, Element root, String uuid, String hash)
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 {
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 root.appendChild(createArtNode(
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 creator,
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 "type",
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 new String[] {"name"},
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 new String[] {"describe"}));
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 root.appendChild(createArtNode(
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 creator,
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 "uuid",
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 new String[] {"value"},
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 new String[] {uuid}));
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 root.appendChild(createArtNode(
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 creator,
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 "hash",
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 new String[] {"value"},
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 new String[] {hash}));
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 }
109
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
108
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
109
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
110 /**
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
111 * This method appends a node that describes the current state to
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
112 * <i>root</i>.
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
113 *
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
114 * @param creator The ElementCreator used to create new elements.
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
115 * @param root The parent node for new elements.
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
116 * @param state The state to be appended.
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
117 */
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
118 public static void appendState(
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
119 XMLUtils.ElementCreator creator, Element root, State state)
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
120 {
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
121 root.appendChild(createArtNode(
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
122 creator, "state",
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
123 new String[] { "description", "name" },
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
124 new String[] { state.getDescription(), state.getID() }));
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
125 }
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
126
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
127
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
128 /**
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
129 * This method appends a node with reachable states to <i>root</i>.
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
130 *
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
131 * @param creator The ElementCreator used to create new elements.
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
132 * @param root The parent node for new elements.
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
133 * @param states The reachable states to be appended.
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
134 */
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
135 public static void appendReachableStates(
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
136 XMLUtils.ElementCreator creator,
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
137 Element root,
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
138 List<State> states)
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
139 {
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
140 Element reachable = createArtNode(
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
141 creator, "reachable-states", null, null);
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
142
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
143 for (State s: states) {
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
144 appendState(creator, reachable, s);
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
145 }
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
146
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
147 root.appendChild(reachable);
ab646e0f5569 Improved the ProtocolUtils - there are new functions to append a current state and the reachable states to a root node.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
148 }
211
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
149
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
150
227
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
151 /**
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
152 * This method appends a node for each Output in the <i>outputs</i> list to
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
153 * <i>out</i>. Note: an output node includes its provided facets!
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
154 *
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
155 * @param creator The ElementCreator used to create new elements.
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
156 * @param out The parent node for new elements.
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
157 * @param outputs The list of reachable outputs.
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
158 */
211
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
159 public static void appendOutputModes(
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
160 XMLUtils.ElementCreator creator,
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
161 Element out,
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
162 List<Output> outputs)
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
163 {
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
164 for (Output o: outputs) {
227
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
165 Element newOut = createArtNode(
211
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
166 creator,
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
167 "output",
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
168 new String[] {"name", "description", "mime-type"},
227
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
169 new String[] {o.getName(),o.getDescription(),o.getMimeType()});
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
170
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
171 Element facets = createArtNode(creator, "facets", null, null);
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
172 appendFacets(creator, facets, o.getFacets());
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
173
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
174 newOut.appendChild(facets);
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
175 out.appendChild(newOut);
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
176 }
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
177 }
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
178
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
179
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
180 /**
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
181 * This method appends a node for each Facet in the <i>facets</i> list to
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
182 * <i>facet</i>.
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
183 *
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
184 * @param creator The ElementCreator used to create new elements.
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
185 * @param facet The root node for new elements.
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
186 * @param facets The list of facets.
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
187 */
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
188 public static void appendFacets(
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
189 XMLUtils.ElementCreator creator,
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
190 Element facet,
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
191 List<Facet> facets)
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
192 {
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
193 if (facets == null || facets.size() == 0) {
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
194 return;
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
195 }
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
196
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
197 for (Facet f: facets) {
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
198 Element newFacet = createArtNode(
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
199 creator,
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
200 "facet",
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
201 new String[] { "name", "description" },
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
202 new String[] { f.getName(), f.getDescription() });
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
203
4bb6bfaca393 The output nodes written into the DESCRIBE document by ProtocolUtils have nodes for each facet supported by an output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 211
diff changeset
204 facet.appendChild(newFacet);
211
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
205 }
435631e07da2 Enhanced the ProtocolUtils and ClientProtocolUtils to append and retrieve output modes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 109
diff changeset
206 }
107
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 }
39d9391059bd Added a ProtocolUtils class that provides functions that help creating the artifact protocol documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

http://dive4elements.wald.intevation.org