annotate artifact-database/src/main/java/de/intevation/artifactdatabase/state/AbstractState.java @ 330:3168af23aec5

Added a CallContext.isInBackground() method to determine if an Artifact or a Collection has started a background thread and is currently locked. artifacts/trunk@2666 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 07 Sep 2011 13:51:02 +0000
parents 8a3ddd374dd1
children 4d3298295a64
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;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
28 import de.intevation.artifacts.common.utils.XMLUtils;
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
29
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 import de.intevation.artifactdatabase.data.StateData;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31
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 * 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
35 * 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
36 * <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
37 * and need to be implemented by those.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 public abstract class AbstractState implements State {
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
41 /** 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
42 * configuration. */
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
43 public static final String XPATH_ID = "@id";
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
44
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
45 /** 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
46 * the configuration. */
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
47 public static final String XPATH_DESCRIPTION = "@description";
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
48
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
49 /** The XPath to the output nodes of the state configuration.*/
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
50 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
51
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
52 /** The XPath to the list of facets relative to the output mode it belongs
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 * to.*/
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
54 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
55
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 /** The logger that is used in this 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
58 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
59
106
ece0fdb07975 Implementations to initialize and retrieve states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 105
diff changeset
60
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 /** The ID of the state. */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 protected String id;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 /** The description of the state. */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 protected String description;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 /** The data provided by this state. */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 protected Map<String, StateData> data;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
70 /** A list of output modes which are 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
71 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
72
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73
205
2a9591f76270 Changed the return type of a State's describe() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
74 public AbstractState() {
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
75 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
76 }
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
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 * The default constructor.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 *
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 * @param id The ID of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 * @param description The description of the state.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 */
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 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
86 super();
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
87
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 this.id = id;
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 this.description = description;
209
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
90
105
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 /**
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
201 * 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
202 * 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
203 *
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
204 * @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
205 */
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
206 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
207 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
208 config,
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
209 XPATH_OUTPUT_MODES,
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
210 XPathConstants.NODESET,
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
211 ArtifactNamespaceContext.INSTANCE);
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
212
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
213 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
214 return;
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
215 }
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
216
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
217 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
218
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
219 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
220 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
221 }
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
222 }
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
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
225 /**
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
226 * 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
227 * node.
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
228 *
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
229 * @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
230 *
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
231 * @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
232 */
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
233 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
234 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
235 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
236
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
237 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
238 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
239
1a3fb29b8b2e Enhanced the abstract state: the output modes are read now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 205
diff changeset
240 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
241 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
242
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
243 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
244 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
245
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
246 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
247 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
248 }
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
249
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
250 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
251 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
252 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
253 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
254 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
255
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
256 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
257 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
258 }
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
259
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
260 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
261
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
262 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
263
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 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
265 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
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 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
268 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
269 }
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 }
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
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
272 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
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
41404961c804 Added support for facets - facets of output modes are read from configuration now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 209
diff changeset
275
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 * 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
278 * 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
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 * @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
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 * @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
283 */
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 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
285 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
286 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
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 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
289 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
290
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 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
292 }
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
293
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
294
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
295 /**
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
296 * 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
297 * concrete subclasses.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
298 *
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
299 * @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
300 * @param document Describe doucment.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
301 * @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
302 * @param context The CallContext.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
303 * @param uuid The uuid of an artifact.
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
304 */
205
2a9591f76270 Changed the return type of a State's describe() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
305 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
306 Artifact artifact,
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
307 Document document,
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
308 Node rootNode,
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
309 CallContext context,
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
310 String uuid
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
311 );
327
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
312
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
313
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
314 @Override
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
315 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
316 // nothing to do here
8a3ddd374dd1 Enhanced the State interface with an endOfLife() method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 290
diff changeset
317 }
105
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
318 }
265f150f4f7f Added an abstract implementation of a State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
319 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org