annotate artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java @ 367:6431b7efe240

Cosmetics. artifacts/trunk@3680 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Mon, 16 Jan 2012 08:58:36 +0000
parents 81ae7948bff0
children 6072f84608c2
rev   line source
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 /*
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2 * Copyright (c) 2011 by Intevation GmbH
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 * This program is free software under the LGPL (>=v2.1)
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 * Read the file LGPL.txt coming with the software for details
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 package de.intevation.artifactdatabase.state;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
10 import java.util.ArrayList;
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.util.HashMap;
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
12 import java.util.List;
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import java.util.Map;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
15 import javax.xml.xpath.XPathConstants;
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
16
226
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
17 import org.apache.log4j.Logger;
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
18
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import org.w3c.dom.Document;
205
2a9591f76270 Changed the return type of a State's describe() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
20 import org.w3c.dom.Element;
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 import org.w3c.dom.Node;
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
22 import org.w3c.dom.NodeList;
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23
244
3d14fe6e05f7 Improved the describe() of a State - a reference to an artifact has been added.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 226
diff changeset
24 import de.intevation.artifacts.Artifact;
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
25 import de.intevation.artifacts.ArtifactNamespaceContext;
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 import de.intevation.artifacts.CallContext;
363
4d3298295a64 Enhanced the State interface with a new method initialize() which might be used to initialize the State based on a model Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
27 import de.intevation.artifacts.CallMeta;
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
29 import de.intevation.artifacts.common.utils.XMLUtils;
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
30
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 import de.intevation.artifactdatabase.data.StateData;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 * An abstract implementation of a {@link State}. It implements some basic
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 * methods that return the id, description and data. The methods
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 * <code>describe()</code> and <code>setup()</code> depend on the concrete class
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 * and need to be implemented by those.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 public abstract class AbstractState implements State {
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
42 /** The XPath to the ID of the state relative to the state node in the
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
43 * configuration. */
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
44 public static final String XPATH_ID = "@id";
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
45
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
46 /** The XPath to the description of the state relative to the state node in
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
47 * the configuration. */
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
48 public static final String XPATH_DESCRIPTION = "@description";
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
49
367
6431b7efe240 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 365
diff changeset
50 /** The XPath to the output nodes of the state configuration. */
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
51 public static final String XPATH_OUTPUT_MODES = "outputmodes/outputmode";
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
52
226
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
53 /** The XPath to the list of facets relative to the output mode it belongs
367
6431b7efe240 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 365
diff changeset
54 * to. */
226
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
55 public static final String XPATH_FACETS = "facets/facet";
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
56
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
57
367
6431b7efe240 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 365
diff changeset
58 /** The logger that is used in this class. */
226
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
59 private static Logger logger = Logger.getLogger(AbstractState.class);
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
60
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
61
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 /** The ID of the state. */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 protected String id;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 /** The description of the state. */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 protected String description;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 /** The data provided by this state. */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 protected Map<String, StateData> data;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70
367
6431b7efe240 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 365
diff changeset
71 /** A list of output modes which are available for this state. */
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
72 protected List<Output> outputs;
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
73
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74
205
2a9591f76270 Changed the return type of a State's describe() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
75 public AbstractState() {
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
76 outputs = new ArrayList<Output>();
205
2a9591f76270 Changed the return type of a State's describe() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
77 }
2a9591f76270 Changed the return type of a State's describe() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
78
2a9591f76270 Changed the return type of a State's describe() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
79
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 * The default constructor.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 * @param id The ID of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 * @param description The description of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 public AbstractState(String id, String description) {
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
87 super();
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
88
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 this.id = id;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 this.description = description;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 * Returns the ID of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 * @return the ID of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 public String getID() {
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 return id;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105 * Set the ID of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 * @param id The ID of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 public void setID(String id) {
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 this.id = id;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115 * Returns the description of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 * @return the description of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 public String getDescription() {
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 return description;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 * Set the description of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 * @param description The description of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 public void setDescription(String description) {
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 this.description = description;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135 * Returns the data of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
137 * @return the data of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139 public Map<String, StateData> getData() {
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140 return data;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
142
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
143
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144 /**
256
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
145 * Returns a specific data object of the state.
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
146 *
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
147 * @param name The name of the data object.
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
148 *
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
149 * @return a data object of the state or null if no such data object exists.
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
150 */
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
151 public StateData getData(String name) {
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
152 return data.get(name);
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
153 }
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
154
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
155
55d08706ccf2 Added a getData(String) method to a State to get just a single StateData object.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 244
diff changeset
156 /**
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
157 * Add new data to the state. NOTE: If there is already an object existing
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
158 * with the key <i>name</i>, this object is overwritten by the new value.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
159 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160 * @param name The name of the data object.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161 * @param StateData The data object.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
162 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163 public void addData(String name, StateData data) {
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 if (this.data == null) {
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165 this.data = new HashMap<String, StateData>();
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168 this.data.put(name, data);
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
170
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 /**
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
173 * Returns the list of possible outputs of this state. The list is empty
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
174 * if no output is available for this state.
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
175 *
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
176 * @return a list of possible outputs of this state.
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
177 */
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
178 public List<Output> getOutputs() {
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
179 return outputs;
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
180 }
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
181
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
182
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
183 /**
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
184 * Initialize the state based on the state node in the configuration.
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
185 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
186 * @param config The state configuration node.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
187 */
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
188 public void setup(Node config) {
226
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
189 logger.info("AbstractState.setup");
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
190
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
191 id = (String) XMLUtils.xpath(config, XPATH_ID, XPathConstants.STRING);
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
192
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
193 description = (String) XMLUtils.xpath(
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
194 config, XPATH_DESCRIPTION, XPathConstants.STRING);
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
195
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
196 setupOutputs(config);
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
197 }
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
198
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
199
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
200 /**
363
4d3298295a64 Enhanced the State interface with a new method initialize() which might be used to initialize the State based on a model Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
201 * This default implementation does nothing at all.
365
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
202 *
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
203 * @param orig
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
204 * @param owner
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
205 * @param context
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
206 * @param callMeta
363
4d3298295a64 Enhanced the State interface with a new method initialize() which might be used to initialize the State based on a model Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
207 */
365
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
208 public void initialize(
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
209 Artifact orig,
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
210 Artifact owner,
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
211 Object context,
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
212 CallMeta callMeta
81ae7948bff0 Added the owner Artifact as parameter to State.initialize().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 363
diff changeset
213 ) {
363
4d3298295a64 Enhanced the State interface with a new method initialize() which might be used to initialize the State based on a model Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
214 // do nothing.
4d3298295a64 Enhanced the State interface with a new method initialize() which might be used to initialize the State based on a model Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
215 }
4d3298295a64 Enhanced the State interface with a new method initialize() which might be used to initialize the State based on a model Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
216
4d3298295a64 Enhanced the State interface with a new method initialize() which might be used to initialize the State based on a model Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
217
4d3298295a64 Enhanced the State interface with a new method initialize() which might be used to initialize the State based on a model Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 327
diff changeset
218 /**
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
219 * This method tries reading the available output nodes configured in the
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
220 * state configuration and adds possible Outputs to the outputs list.
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
221 *
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
222 * @param config The state configuration node.
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
223 */
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
224 protected void setupOutputs(Node config) {
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
225 NodeList outs = (NodeList) XMLUtils.xpath(
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
226 config,
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
227 XPATH_OUTPUT_MODES,
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
228 XPathConstants.NODESET,
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
229 ArtifactNamespaceContext.INSTANCE);
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
230
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
231 if (outs == null || outs.getLength() == 0) {
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
232 return;
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
233 }
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
234
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
235 int size = outs.getLength();
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
236
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
237 for (int i = 0; i < size; i++) {
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
238 outputs.add(buildOutput(outs.item(i)));
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
239 }
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
240 }
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
241
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
242
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
243 /**
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
244 * A helper method that creates an Output object based on the <i>out</i>
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
245 * node.
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
246 *
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
247 * @param out The output node configuration.
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
248 *
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
249 * @return an Output object.
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
250 */
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
251 protected Output buildOutput(Node out) {
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
252 String name = XMLUtils.xpathString(
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
253 out, "@name", ArtifactNamespaceContext.INSTANCE);
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
254
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
255 String desc = XMLUtils.xpathString(
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
256 out, "@description", ArtifactNamespaceContext.INSTANCE);
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
257
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
258 String mimetype = XMLUtils.xpathString(
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
259 out, "@mime-type", ArtifactNamespaceContext.INSTANCE);
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
260
290
995fa6994480 Outputs can have a member variable 'type' that should make it easier to distinguish the type of an Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
261 String type = XMLUtils.xpathString(
995fa6994480 Outputs can have a member variable 'type' that should make it easier to distinguish the type of an Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
262 out, "@type", ArtifactNamespaceContext.INSTANCE);
995fa6994480 Outputs can have a member variable 'type' that should make it easier to distinguish the type of an Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
263
226
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
264 if (name == null) {
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
265 return null;
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
266 }
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
267
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
268 NodeList facets = (NodeList) XMLUtils.xpath(
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
269 out,
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
270 XPATH_FACETS,
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
271 XPathConstants.NODESET,
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
272 ArtifactNamespaceContext.INSTANCE);
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
273
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
274 if (facets == null || facets.getLength() == 0) {
290
995fa6994480 Outputs can have a member variable 'type' that should make it easier to distinguish the type of an Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
275 return new DefaultOutput(name, desc, mimetype, type);
226
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
276 }
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
277
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
278 int num = facets.getLength();
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
279
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
280 List<Facet> facetList = new ArrayList<Facet>(num);
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
281
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
282 for (int i = 0; i < num; i++) {
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
283 Facet facet = buildFacet(facets.item(i));
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
284
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
285 if (facet != null) {
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
286 facetList.add(facet);
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
287 }
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
288 }
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
289
290
995fa6994480 Outputs can have a member variable 'type' that should make it easier to distinguish the type of an Output.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 256
diff changeset
290 return new DefaultOutput(name, desc, mimetype, facetList, type);
226
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
291 }
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
292
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
293
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
294 /**
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
295 * A helper method that creates a Facet object based on the <i>facet</i>
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
296 * node.
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
297 *
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
298 * @param facet The facet node.
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
299 *
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
300 * @return a Facet object or null if no valid Facet was found.
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
301 */
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
302 protected Facet buildFacet(Node facet) {
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
303 String name = XMLUtils.xpathString(
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
304 facet, "@name", ArtifactNamespaceContext.INSTANCE);
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
305
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
306 String desc = XMLUtils.xpathString(
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
307 facet, "@description", ArtifactNamespaceContext.INSTANCE);
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
308
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
309 return name != null ? new DefaultFacet(name, desc) : null;
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
310 }
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
311
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
312
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
313 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
314 * Describes the UI of the state. This method needs to be implemented by
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
315 * concrete subclasses.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
316 *
244
3d14fe6e05f7 Improved the describe() of a State - a reference to an artifact has been added.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 226
diff changeset
317 * @param artifact A reference to the artifact this state belongs to.
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
318 * @param document Describe doucment.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
319 * @param rootNode Parent node for all new elements.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
320 * @param context The CallContext.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
321 * @param uuid The uuid of an artifact.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
322 */
205
2a9591f76270 Changed the return type of a State's describe() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
323 public abstract Element describe(
244
3d14fe6e05f7 Improved the describe() of a State - a reference to an artifact has been added.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 226
diff changeset
324 Artifact artifact,
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
325 Document document,
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
326 Node rootNode,
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
327 CallContext context,
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
328 String uuid
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
329 );
327
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
330
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
331
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
332 @Override
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
333 public void endOfLife(Artifact artifact, Object context) {
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
334 // nothing to do here
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
335 }
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
336 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
337 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org