annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/FLYSArtifact.java @ 4454:c0a418cbd80c

Register flowvelocity artifact factory.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 08 Nov 2012 16:51:58 +0100
parents 5b8919ef601d
children c095eb67c975
rev   line source
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts;
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
3883
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
3 import java.util.ArrayList;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
4 import java.util.Collection;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
5 import java.util.HashMap;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
6 import java.util.HashSet;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
7 import java.util.LinkedList;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
8 import java.util.List;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
9 import java.util.Map;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
10 import java.util.Set;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
11 import java.util.TreeMap;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
12
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
13 import javax.xml.xpath.XPathConstants;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
14
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
15 import net.sf.ehcache.Cache;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
16
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
17 import org.apache.log4j.Logger;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
18 import org.w3c.dom.Document;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
19 import org.w3c.dom.Element;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
20 import org.w3c.dom.Node;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
21 import org.w3c.dom.NodeList;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
22
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
23 import de.intevation.artifactdatabase.ArtifactDatabaseImpl;
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
24 import de.intevation.artifactdatabase.DefaultArtifact;
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3203
diff changeset
25 import de.intevation.artifactdatabase.ProtocolUtils;
1724
0349dd524f9c Add convenience method to add default data as string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1709
diff changeset
26 import de.intevation.artifactdatabase.data.DefaultStateData;
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
27 import de.intevation.artifactdatabase.data.StateData;
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
28 import de.intevation.artifactdatabase.state.DefaultFacet;
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
29 import de.intevation.artifactdatabase.state.DefaultOutput;
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
30 import de.intevation.artifactdatabase.state.Facet;
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
31 import de.intevation.artifactdatabase.state.Output;
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
32 import de.intevation.artifactdatabase.state.State;
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
33 import de.intevation.artifactdatabase.state.StateEngine;
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
34 import de.intevation.artifactdatabase.transition.TransitionEngine;
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
35 import de.intevation.artifacts.Artifact;
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
36 import de.intevation.artifacts.ArtifactDatabase;
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
37 import de.intevation.artifacts.ArtifactDatabaseException;
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 import de.intevation.artifacts.ArtifactFactory;
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 import de.intevation.artifacts.CallContext;
952
7399401f728c Adapted the method of FLYSArtifact.setup() which has been changed in the artifact package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 944
diff changeset
40 import de.intevation.artifacts.CallMeta;
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3203
diff changeset
41 import de.intevation.artifacts.Message;
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 import de.intevation.artifacts.common.ArtifactNamespaceContext;
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 import de.intevation.artifacts.common.utils.XMLUtils;
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3203
diff changeset
44 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
45 import de.intevation.flys.artifacts.cache.CacheFactory;
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 import de.intevation.flys.artifacts.context.FLYSContext;
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3203
diff changeset
47 import de.intevation.flys.artifacts.model.CalculationMessage;
1777
a8aa343799a2 Extracet getFlysContext from FLYSArtifact to FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1771
diff changeset
48 import de.intevation.flys.artifacts.states.DefaultState;
1055
61c051e53f9b Moved WINFO specific stuff from FLYS into WINFO artifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1050
diff changeset
49 import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
1777
a8aa343799a2 Extracet getFlysContext from FLYSArtifact to FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1771
diff changeset
50 import de.intevation.flys.utils.FLYSUtils;
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 /**
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
53 * The default FLYS artifact with convenience added.
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
54 * (Subclass to get fully functional artifacts).
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 public abstract class FLYSArtifact extends DefaultArtifact {
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
60 /** The logger that is used in this artifact. */
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
61 private static Logger log = Logger.getLogger(FLYSArtifact.class);
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
63 public static final String COMPUTING_CACHE = "computed.values";
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
64
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
65 /** The XPath that points to the input data elements of the FEED document. */
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
66 public static final String XPATH_FEED_INPUT =
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
67 "/art:action/art:data/art:input";
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
69 /** The XPath that points to the name of the target state of ADVANCE. */
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
70 public static final String XPATH_ADVANCE_TARGET =
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
71 "/art:action/art:target/@art:name";
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
72
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
73 public static final String XPATH_MODEL_ARTIFACT =
941
1b509e4cf99b Added a computeInit() method to intialize data/facets after creating new artifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 940
diff changeset
74 "/art:action/art:template/@uuid";
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
75
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
76 public static final String XPATH_FILTER =
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
77 "/art:action/art:filter/art:out";
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
78
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
79 /** The constant string that shows that an operation was successful. */
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
80 public static final String OPERATION_SUCCESSFUL = "SUCCESS";
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
81
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
82 /** The constant string that shows that an operation failed. */
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
83 public static final String OPERATION_FAILED = "FAILURE";
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
84
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85 /** The identifier of the current state. */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 protected String currentStateId;
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
88 /** The identifiers of previous states on a stack. */
661
fdc898a134a7 Use java.util.List instead of java.util.Vector. Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 658
diff changeset
89 protected List<String> previousStateIds;
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
90
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
91 /** The name of the artifact. */
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92 protected String name;
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
94 /** The data that have been inserted into this artifact. */
3920
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
95 private Map<String, StateData> data;
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
96
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
97 /** Mapping of state names to created facets. */
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
98 protected Map<String, List<Facet>> facets;
687
06689035024c Added a compute() method to WINFOArtifact which acts as a dispatcher for different computations. It triggers a calculation based on ComputeCallbacks that are generated by the current states.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 686
diff changeset
99
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
100 /**
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
101 * Used to generates "view" on the facets (hides facets not matching the
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
102 * filter in output of collection); out -&gt; facets.
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
103 */
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
104 protected Map<String, List<Facet>> filterFacets;
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
105
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
106
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
107 /**
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
108 * The default constructor that creates an empty FLYSArtifact.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
109 */
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
110 public FLYSArtifact() {
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
111 data = new TreeMap<String, StateData>();
661
fdc898a134a7 Use java.util.List instead of java.util.Vector. Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 658
diff changeset
112 previousStateIds = new ArrayList<String>();
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
113 facets = new HashMap<String, List<Facet>>();
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
114 }
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
115
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4050
diff changeset
116
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
117 /**
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
118 * This method appends the static data - that has already been inserted by
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
119 * the user - to the static node of the DESCRIBE document.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
120 *
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
121 * @param doc The document.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
122 * @param ui The root node.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
123 * @param context The CallContext.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
124 * @param uuid The identifier of the artifact.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
125 */
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
126 protected void appendStaticUI(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
127 Document doc,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
128 Node ui,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
129 CallContext context,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
130 String uuid)
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
131 {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
132 List<String> stateIds = getPreviousStateIds();
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
133
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
134 FLYSContext flysContext = FLYSUtils.getFlysContext(context);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
135 StateEngine engine = (StateEngine) flysContext.get(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
136 FLYSContext.STATE_ENGINE_KEY);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
137
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
138 boolean debug = log.isDebugEnabled();
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
139
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
140 for (String stateId: stateIds) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
141 if (debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
142 log.debug("Append static data for state: " + stateId);
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
143 }
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
144 DefaultState state = (DefaultState) engine.getState(stateId);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
145
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
146 ui.appendChild(state.describeStatic(this, doc, ui, context, uuid));
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
147 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
148 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
149
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
150
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
151 /**
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
152 * Returns the name of the concrete artifact.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
153 *
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
154 * @return the name of the concrete artifact.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
155 */
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
156 public String getName() {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
157 return name;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
158 }
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
159
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
160
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
161 /**
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
162 * Initialize the artifact and insert new data if <code>data</code> contains
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
163 * information necessary for this artifact.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165 * @param identifier The UUID.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166 * @param factory The factory that is used to create this artifact.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
167 * @param context The CallContext.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168 * @param data Some optional data.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
169 */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
170 @Override
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171 public void setup(
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
172 String identifier,
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173 ArtifactFactory factory,
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
174 Object context,
952
7399401f728c Adapted the method of FLYSArtifact.setup() which has been changed in the artifact package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 944
diff changeset
175 CallMeta callMeta,
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
176 Document data)
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177 {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
178 boolean debug = log.isDebugEnabled();
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
179
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
180 if (debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
181 log.debug("Setup this artifact with the uuid: " + identifier);
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
182 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
183
952
7399401f728c Adapted the method of FLYSArtifact.setup() which has been changed in the artifact package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 944
diff changeset
184 super.setup(identifier, factory, context, callMeta, data);
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
185
1777
a8aa343799a2 Extracet getFlysContext from FLYSArtifact to FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1771
diff changeset
186 FLYSContext flysContext = FLYSUtils.getFlysContext(context);
1067
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
187
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
188 List<State> states = getStates(context);
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
189
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
190 String name = getName();
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
191
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
192 if (debug) {
3883
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
193 log.debug("setup(): Set initial state for artifact '" + name + "'");
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
194 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
195
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
196 if (states == null) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
197 log.error("No states found from which an initial "
2766
7dc4681a2bed Allow easy change of sticky axis for annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2701
diff changeset
198 + "state could be picked.");
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
199 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 setCurrentState(states.get(0));
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
201
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
202 String model = XMLUtils.xpathString(
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
203 data,
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
204 XPATH_MODEL_ARTIFACT,
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
205 ArtifactNamespaceContext.INSTANCE);
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
206
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
207 if (model != null && model.length() > 0) {
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
208 ArtifactDatabase db = (ArtifactDatabase) flysContext.get(
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
209 ArtifactDatabaseImpl.GLOBAL_CONTEXT_KEY);
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
210
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
211 try {
952
7399401f728c Adapted the method of FLYSArtifact.setup() which has been changed in the artifact package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 944
diff changeset
212 initialize(db.getRawArtifact(model), context, callMeta);
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
213 }
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
214 catch (ArtifactDatabaseException adbe) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
215 log.error(adbe, adbe);
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
216 }
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
217 }
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
218
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
219 filterFacets = buildFilterFacets(data);
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
220 }
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
221
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
222
2141
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2128
diff changeset
223 /** Get copy of previous state ids as Strings in list. */
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
224 protected List<String> clonePreviousStateIds() {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
225 return new ArrayList<String>(previousStateIds);
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
226 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
227
2141
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2128
diff changeset
228
1895
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
229 /**
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
230 * Copies data item from other artifact to this artifact.
2111
85d31c2620e5 Avoid an unlikely NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2095
diff changeset
231 *
1895
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
232 * @param other Artifact from which to get data.
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
233 * @param name Name of data.
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
234 */
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
235 protected void importData(FLYSArtifact other, final String name) {
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
236 if (other == null) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
237 log.error("No other art. to import data " + name + " from.");
2111
85d31c2620e5 Avoid an unlikely NPE.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2095
diff changeset
238 return;
1895
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
239 }
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
240
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
241 StateData sd = other.getData(name);
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
242
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
243 if (sd == null) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
244 log.warn("Other artifact has no data " + name + ".");
1895
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
245 return;
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
246 }
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
247
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
248 this.addData(name, sd);
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
249 }
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
250
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
251
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
252 /** Clone the internal map of map of state-name to state-data. */
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
253 protected Map<String, StateData> cloneData() {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
254 Map<String, StateData> copy = new TreeMap<String, StateData>();
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
255
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
256 for (Map.Entry<String, StateData> entry: data.entrySet()) {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
257 copy.put(entry.getKey(), entry.getValue().deepCopy());
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
258 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
259
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
260 return copy;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
261 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
262
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4050
diff changeset
263
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
264 /**
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
265 * Return a copy of the facet mapping.
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
266 * @return Mapping of state-ids to facets.
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
267 */
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
268 protected Map<String, List<Facet>> cloneFacets() {
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3203
diff changeset
269 Map<String, List<Facet>> copy = new HashMap<String, List<Facet>>();
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
270
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
271 for (Map.Entry<String, List<Facet>> entry: facets.entrySet()) {
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
272 List<Facet> facets = entry.getValue();
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
273 List<Facet> facetCopies = new ArrayList<Facet>(facets.size());
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
274 for (Facet facet: facets) {
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
275 facetCopies.add(facet.deepCopy());
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
276 }
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
277 copy.put(entry.getKey(), facetCopies);
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
278 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
279
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
280 return copy;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
281 }
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
282
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
283
1765
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
284 /**
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
285 * (called from setup).
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
286 * @param artifact master-artifact (if any, otherwise initialize is not called).
1765
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
287 */
952
7399401f728c Adapted the method of FLYSArtifact.setup() which has been changed in the artifact package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 944
diff changeset
288 protected void initialize(
7399401f728c Adapted the method of FLYSArtifact.setup() which has been changed in the artifact package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 944
diff changeset
289 Artifact artifact,
7399401f728c Adapted the method of FLYSArtifact.setup() which has been changed in the artifact package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 944
diff changeset
290 Object context,
7399401f728c Adapted the method of FLYSArtifact.setup() which has been changed in the artifact package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 944
diff changeset
291 CallMeta callMeta)
7399401f728c Adapted the method of FLYSArtifact.setup() which has been changed in the artifact package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 944
diff changeset
292 {
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
293 if (!(artifact instanceof FLYSArtifact)) {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
294 return;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
295 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
296
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
297 FLYSArtifact flys = (FLYSArtifact)artifact;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
298
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
299 currentStateId = flys.currentStateId;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
300 previousStateIds = flys.clonePreviousStateIds();
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
301 name = flys.name;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
302 data = flys.cloneData();
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
303 facets = flys.cloneFacets();
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
304 // Do not clone filter facets!
2093
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
305
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
306 ArrayList<String> stateIds = (ArrayList<String>) getPreviousStateIds();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
307 ArrayList<String> toInitialize = (ArrayList<String>) stateIds.clone();
2093
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
308
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
309 toInitialize.add(getCurrentStateId());
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
310
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
311 for (String stateId: toInitialize) {
2093
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
312 State state = getState(context, stateId);
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
313
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
314 if (state != null) {
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
315 state.initialize(artifact, this, context, callMeta);
2093
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
316 }
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
317 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
318 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
319
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
320
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
321 /**
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
322 * Builds filter facets from document.
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
323 * @see filterFacets
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
324 */
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
325 protected Map<String, List<Facet>> buildFilterFacets(Document document) {
4403
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
326 if (log.isDebugEnabled()) {
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
327 log.debug("Building filter factes for artifact " + this.getName());
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
328 }
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
329
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
330 NodeList nodes = (NodeList)XMLUtils.xpath(
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
331 document,
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
332 XPATH_FILTER,
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
333 XPathConstants.NODESET,
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
334 ArtifactNamespaceContext.INSTANCE);
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
335
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
336 if (nodes == null || nodes.getLength() == 0) {
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
337 return null;
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
338 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
339
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
340 Map<String, List<Facet>> result = new HashMap<String, List<Facet>>();
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
341
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
342 for (int i = 0, N = nodes.getLength(); i < N; ++i) {
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
343 Element element = (Element)nodes.item(i);
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
344 String oName = element.getAttribute("name");
4403
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
345 if (oName == null || oName.isEmpty()) {
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
346 continue;
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
347 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
348
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
349 List<Facet> facets = new ArrayList<Facet>();
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
350
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
351 NodeList facetNodes = element.getElementsByTagNameNS(
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
352 ArtifactNamespaceContext.NAMESPACE_URI,
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
353 "facet");
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
354
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
355 for (int j = 0, M = facetNodes.getLength(); j < M; ++j) {
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
356 Element facetElement = (Element)facetNodes.item(j);
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
357
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
358 String fName = facetElement.getAttribute("name");
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
359
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
360 int index;
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
361 try {
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
362 index = Integer.parseInt(facetElement.getAttribute("index"));
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
363 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
364 catch (NumberFormatException nfe) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
365 log.warn(nfe);
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
366 index = 0;
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
367 }
4403
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
368 if (log.isDebugEnabled()) {
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
369 log.debug("Creating filter facet " + fName + " with index " + index +
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
370 " for out " + oName);
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
371 }
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
372 facets.add(new DefaultFacet(index, fName, ""));
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
373 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
374
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
375 if (!facets.isEmpty()) {
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
376 result.put(oName, facets);
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
377 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
378 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
379
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
380 return result;
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
381 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
382
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
383
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
384 /**
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
385 * Insert new data included in <code>input</code> into the current state.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
386 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
387 * @param target XML document that contains new data.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
388 * @param context The CallContext.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
389 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
390 * @return a document that contains a SUCCESS or FAILURE message.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
391 */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
392 @Override
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
393 public Document feed(Document target, CallContext context) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
394 log.debug("FLYSArtifact.feed()");
123
ebb1cb69d847 The operations feed() and advance() return the current description of the artifact now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 122
diff changeset
395
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
396 Document doc = XMLUtils.newDocument();
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
397
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
398 XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator(
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
399 doc,
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
400 ArtifactNamespaceContext.NAMESPACE_URI,
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
401 ArtifactNamespaceContext.NAMESPACE_PREFIX);
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
402
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
403 Element result = creator.create("result");
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
404 doc.appendChild(result);
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
405
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
406 try {
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
407 saveData(target, context);
689
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
408
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
409 compute(context, ComputeType.FEED, true);
689
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
410
123
ebb1cb69d847 The operations feed() and advance() return the current description of the artifact now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 122
diff changeset
411 return describe(target, context);
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
412 }
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
413 catch (IllegalArgumentException iae) {
658
ed7c901ee712 If Artifact.feed() fails do not store invalid values in database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 655
diff changeset
414 // do not store state if validation fails.
ed7c901ee712 If Artifact.feed() fails do not store invalid values in database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 655
diff changeset
415 context.afterCall(CallContext.NOTHING);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
416 creator.addAttr(result, "type", OPERATION_FAILED, true);
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
417
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
418 result.setTextContent(iae.getMessage());
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
419 }
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
420
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
421 return doc;
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
422 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
423
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4050
diff changeset
424
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
425 /**
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
426 * This method returns a description of this artifact.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
427 *
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
428 * @param data Some data.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
429 * @param context The CallContext.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
430 *
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
431 * @return the description of this artifact.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
432 */
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3203
diff changeset
433 @Override
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
434 public Document describe(Document data, CallContext context) {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
435
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
436 if (log.isDebugEnabled()) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
437 log.debug(
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
438 "Describe: the current state is: " + getCurrentStateId());
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
439 dumpArtifact();
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
440 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
441
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
442 FLYSContext flysContext = FLYSUtils.getFlysContext(context);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
443
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
444 StateEngine stateEngine = (StateEngine) flysContext.get(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
445 FLYSContext.STATE_ENGINE_KEY);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
446
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
447 TransitionEngine transitionEngine = (TransitionEngine) flysContext.get(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
448 FLYSContext.TRANSITION_ENGINE_KEY);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
449
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
450 List<State> reachable = transitionEngine.getReachableStates(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
451 this, getCurrentState(context), stateEngine);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
452
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
453 Document description = XMLUtils.newDocument();
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
454 XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
455 description,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
456 ArtifactNamespaceContext.NAMESPACE_URI,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
457 ArtifactNamespaceContext.NAMESPACE_PREFIX);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
458
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
459 Element root = ProtocolUtils.createRootNode(creator);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
460 description.appendChild(root);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
461
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
462 State current = getCurrentState(context);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
463
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
464 ProtocolUtils.appendDescribeHeader(creator, root, identifier(), hash());
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
465 ProtocolUtils.appendState(creator, root, current);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
466 ProtocolUtils.appendReachableStates(creator, root, reachable);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
467
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
468 appendBackgroundActivity(creator, root, context);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
469
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
470 Element ui = ProtocolUtils.createArtNode(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
471 creator, "ui", null, null);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
472
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
473 Element staticUI = ProtocolUtils.createArtNode(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
474 creator, "static", null, null);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
475
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
476 Element outs = ProtocolUtils.createArtNode(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
477 creator, "outputmodes", null, null);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
478 appendOutputModes(description, outs, context, identifier());
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
479
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
480 appendStaticUI(description, staticUI, context, identifier());
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
481
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
482 Element name = ProtocolUtils.createArtNode(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
483 creator, "name",
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
484 new String[] { "value" },
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
485 new String[] { getName() });
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
486
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
487 Element dynamic = current.describe(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
488 this,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
489 description,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
490 root,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
491 context,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
492 identifier());
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
493
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
494 if (dynamic != null) {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
495 ui.appendChild(dynamic);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
496 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
497
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
498 ui.appendChild(staticUI);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
499
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
500 root.appendChild(name);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
501 root.appendChild(ui);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
502 root.appendChild(outs);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
503
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
504 return description;
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
505 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
506
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
507 /** Override me! */
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
508
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
509 protected void appendBackgroundActivity(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
510 ElementCreator cr,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
511 Element root,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
512 CallContext context
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
513 ) {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
514 LinkedList<Message> messages = context.getBackgroundMessages();
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
515
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
516 if (messages == null) {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
517 return;
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
518 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
519
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
520 Element inBackground = cr.create("background-processing");
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
521 root.appendChild(inBackground);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
522
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
523 cr.addAttr(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
524 inBackground,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
525 "value",
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
526 String.valueOf(context.isInBackground()),
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
527 true);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
528
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
529 CalculationMessage message = (CalculationMessage) messages.getLast();
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
530 cr.addAttr(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
531 inBackground,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
532 "steps",
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
533 String.valueOf(message.getSteps()),
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
534 true);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
535
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
536 cr.addAttr(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
537 inBackground,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
538 "currentStep",
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
539 String.valueOf(message.getCurrentStep()),
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
540 true);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
541
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
542 inBackground.setTextContent(message.getMessage());
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
543 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
544
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
545 /**
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
546 * Append output mode nodes to a document.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
547 */
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
548 protected void appendOutputModes(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
549 Document doc,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
550 Element outs,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
551 CallContext context,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
552 String uuid)
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
553 {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
554 List<Output> generated = getOutputs(context);
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
555
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
556 if (log.isDebugEnabled()) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
557 log.debug("This Artifact has " + generated.size() + " Outputs.");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
558 }
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
559
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
560 ProtocolUtils.appendOutputModes(doc, outs, generated);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
561 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
562
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
563
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
564 /**
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
565 * This method handles request for changing the current state of an
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
566 * artifact. It is possible to step forward or backward.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
567 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
568 * @param target The incoming ADVANCE document.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
569 * @param context The CallContext.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
570 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
571 * @return a document that contains a SUCCESS or FAILURE message.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
572 */
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3203
diff changeset
573 @Override
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
574 public Document advance(Document target, CallContext context) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
575
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
576 boolean debug = log.isDebugEnabled();
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
577
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
578 Document doc = XMLUtils.newDocument();
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
579
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
580 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
581 doc,
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
582 ArtifactNamespaceContext.NAMESPACE_URI,
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
583 ArtifactNamespaceContext.NAMESPACE_PREFIX);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
584
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
585 Element result = ec.create("result");
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
586
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
587 String currentStateId = getCurrentStateId();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
588 String targetState = XMLUtils.xpathString(
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
589 target, XPATH_ADVANCE_TARGET, ArtifactNamespaceContext.INSTANCE);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
590
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
591 if (debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
592 log.debug("FLYSArtifact.advance() to '" + targetState + "'");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
593 }
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
594
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
595 if (!currentStateId.equals(targetState)
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
596 && isStateReachable(targetState, context))
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
597 {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
598 if (debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
599 log.debug("Advance: Step forward");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
600 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
601
661
fdc898a134a7 Use java.util.List instead of java.util.Vector. Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 658
diff changeset
602 List<String> prev = getPreviousStateIds();
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
603 prev.add(currentStateId);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
604
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
605 setCurrentStateId(targetState);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
606
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
607 if (debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
608 log.debug("Compute data for state: " + targetState);
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
609 }
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
610 compute(context, ComputeType.ADVANCE, true);
693
af393c5eb2c8 Write computed facets into artifacts describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 692
diff changeset
611
123
ebb1cb69d847 The operations feed() and advance() return the current description of the artifact now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 122
diff changeset
612 return describe(target, context);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
613 }
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
614 else if (isPreviousState(targetState, context)) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
615 if (debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
616 log.debug("Advance: Step back to");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
617 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
618
1086
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
619 List<String> prevs = getPreviousStateIds();
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
620 int targetIdx = prevs.indexOf(targetState);
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
621 int start = prevs.size() - 1;
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
622
1086
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
623 destroyStates(prevs, context);
1084
583314dafdb6 Call State.endOfLife() in FLYSArtifact when stepping back to a previous state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1067
diff changeset
624
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
625 for (int i = start; i >= targetIdx; i--) {
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
626 String prev = prevs.get(i);
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
627 if (debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
628 log.debug("Remove state id '" + prev + "'");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
629 }
1084
583314dafdb6 Call State.endOfLife() in FLYSArtifact when stepping back to a previous state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1067
diff changeset
630
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
631 prevs.remove(prev);
691
2600aa2c7319 Store facets for each state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 690
diff changeset
632 facets.remove(prev);
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
633 }
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
634
1094
b1c6d945848d Added a new method to FLYSArtifact to destroy a single state (call its endOfLife).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1086
diff changeset
635 destroyState(getCurrentStateId(), context);
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
636 setCurrentStateId(targetState);
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
637
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
638 return describe(target, context);
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
639 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
640
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
641 log.warn("Advance: Cannot advance to '" + targetState + "'");
123
ebb1cb69d847 The operations feed() and advance() return the current description of the artifact now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 122
diff changeset
642 ec.addAttr(result, "type", OPERATION_FAILED, true);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
643
123
ebb1cb69d847 The operations feed() and advance() return the current description of the artifact now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 122
diff changeset
644 doc.appendChild(result);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
645
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
646 return doc;
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
647 }
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
648
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
649
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
650 /**
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
651 * Returns the identifier of the current state.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
652 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
653 * @return the identifier of the current state.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
654 */
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
655 public String getCurrentStateId() {
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
656 return currentStateId;
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
657 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
658
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
659
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
660 /**
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
661 * Sets the identifier of the current state.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
662 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
663 * @param id the identifier of a state.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
664 */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
665 protected void setCurrentStateId(String id) {
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
666 currentStateId = id;
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
667 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
668
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
669
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
670 /**
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
671 * Set the current state of this artifact. <b>NOTE</b>We don't store the
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
672 * State object itself - which is not necessary - but its identifier. So
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
673 * this method will just call the setCurrentStateId() method with the
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
674 * identifier of <i>state</i>.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
675 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
676 * @param state The new current state.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
677 */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
678 protected void setCurrentState(State state) {
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
679 setCurrentStateId(state.getID());
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
680 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
681
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
682
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
683 /**
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
684 * Returns the current state of the artifact.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
685 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
686 * @return the current State of the artifact.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
687 */
1654
33ade8153d74 Little modifications for making recommendations - will now work for states with background calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1628
diff changeset
688 public State getCurrentState(Object context) {
1067
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
689 return getState(context, getCurrentStateId());
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
690 }
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
691
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
692
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
693 /**
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
694 * Get list of existant states for this Artifact.
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
695 * @param context Contex to get StateEngine from.
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
696 * @return list of states.
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
697 */
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
698 protected List<State> getStates(Object context) {
1777
a8aa343799a2 Extracet getFlysContext from FLYSArtifact to FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1771
diff changeset
699 FLYSContext flysContext = FLYSUtils.getFlysContext(context);
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
700 StateEngine engine = (StateEngine) flysContext.get(
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
701 FLYSContext.STATE_ENGINE_KEY);
1067
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
702 return engine.getStates(getName());
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
703 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
704
1067
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
705
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
706 /**
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
707 * Get state with given ID.
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
708 * @param context Context to get StateEngine from.
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
709 * @param stateID ID of state to get.
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
710 * @return state with given ID.
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
711 */
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
712 protected State getState(Object context, String stateID) {
1777
a8aa343799a2 Extracet getFlysContext from FLYSArtifact to FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1771
diff changeset
713 FLYSContext flysContext = FLYSUtils.getFlysContext(context);
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
714 StateEngine engine = (StateEngine) flysContext.get(
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
715 FLYSContext.STATE_ENGINE_KEY);
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
716 return engine.getState(stateID);
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
717 }
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
718
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
719
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
720 /**
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
721 * Returns the vector of previous state identifiers.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
722 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
723 * @return the vector of previous state identifiers.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
724 */
661
fdc898a134a7 Use java.util.List instead of java.util.Vector. Removed superfluous imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 658
diff changeset
725 protected List<String> getPreviousStateIds() {
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
726 return previousStateIds;
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
727 }
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
728
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
729
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
730 /**
1783
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
731 * Get all previous and the current state id.
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
732 * @return #getPreviousStateIds() + #getCurrentStateId()
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
733 */
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
734 public List<String> getStateHistoryIds() {
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
735 ArrayList<String> prevIds = (ArrayList) getPreviousStateIds();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
736 ArrayList<String> allIds = (ArrayList) prevIds.clone();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
737
1783
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
738 allIds.add(getCurrentStateId());
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
739 return allIds;
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
740 }
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
741
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
742
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
743 /**
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
744 * Adds a new StateData item to the data pool of this artifact.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
745 *
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
746 * @param name the name of the data object.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
747 * @param data the data object itself.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
748 */
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
749 protected void addData(String name, StateData data) {
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
750 this.data.put(name, data);
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
751 }
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
752
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
753
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
754 /** Remove and return statedata associated to name. */
1656
94732906b094 Made feed() operation able to remove existing data items from Artifact's data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1654
diff changeset
755 protected StateData removeData(String name) {
94732906b094 Made feed() operation able to remove existing data items from Artifact's data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1654
diff changeset
756 return this.data.remove(name);
94732906b094 Made feed() operation able to remove existing data items from Artifact's data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1654
diff changeset
757 }
94732906b094 Made feed() operation able to remove existing data items from Artifact's data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1654
diff changeset
758
94732906b094 Made feed() operation able to remove existing data items from Artifact's data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1654
diff changeset
759
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
760 /**
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
761 * This method returns a specific StateData object that is stored in the
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
762 * data pool of this artifact.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
763 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
764 * @param name The name of the data object.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
765 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
766 * @return the StateData object if existing, otherwise null.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
767 */
298
fc694a43a7e5 Changed the visibility of getData() method of FLYSArtifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 140
diff changeset
768 public StateData getData(String name) {
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
769 return data.get(name);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
770 }
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
771
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
772
3920
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
773 /**
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
774 * A derived Artifact class can use this method to set the data
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
775 */
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
776 protected void setData(Map<String, StateData> data) {
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
777 this.data = data;
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
778 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
779
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
780
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
781 /** Return named data item, null if not found. */
937
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
782 public String getDataAsString(String name) {
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
783 StateData data = getData(name);
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
784 return data != null ? (String) data.getValue() : null;
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
785 }
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
786
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
787
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
788 /**
2013
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
789 * This method returns the value of a StateData object stored in the data
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
790 * pool of this Artifact as Integer.
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
791 *
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
792 * @param name The name of the StateData object.
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
793 *
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
794 * @return an Integer representing the value of the data object or null if
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
795 * no object was found for <i>name</i>.
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
796 *
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
797 * @throws NumberFormatException if the value of the data object could not
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
798 * be transformed into an Integer.
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
799 */
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
800 public Integer getDataAsInteger(String name)
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
801 throws NumberFormatException
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
802 {
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
803 String value = getDataAsString(name);
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
804
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
805 if (value != null && value.length() > 0) {
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
806 return Integer.parseInt(value);
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
807 }
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
808
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
809 return null;
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
810 }
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
811
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
812
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
813 /**
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
814 * This method returns the value of a StateData object stored in the data
2701
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
815 * pool of this Artifact as Double.
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
816 *
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
817 * @param name The name of the StateData object.
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
818 *
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
819 * @return an Double representing the value of the data object or null if
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
820 * no object was found for <i>name</i>.
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
821 *
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
822 * @throws NumberFormatException if the value of the data object could not
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
823 * be transformed into a Double.
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
824 */
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
825 public Double getDataAsDouble(String name)
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
826 throws NumberFormatException
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
827 {
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
828 String value = getDataAsString(name);
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
829
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
830 if (value != null && value.length() > 0) {
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
831 return Double.parseDouble(value);
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
832 }
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
833
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
834 return null;
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
835 }
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
836
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
837
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
838 /**
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
839 * This method returns the value of a StateData object stored in the data
2128
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
840 * pool of this Artifact as Long.
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
841 *
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
842 * @param name The name of the StateData object.
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
843 *
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
844 * @return a Long representing the value of the data object or null if
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
845 * no object was found for <i>name</i>.
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
846 *
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
847 * @throws NumberFormatException if the value of the data object could not
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
848 * be transformed into a Long.
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
849 */
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
850 public Long getDataAsLong(String name)
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
851 throws NumberFormatException
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
852 {
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
853 String value = getDataAsString(name);
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
854
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
855 if (value != null && value.length() > 0) {
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
856 return Long.parseLong(value);
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
857 }
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
858
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
859 return null;
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
860 }
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
861
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
862
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
863 /**
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
864 * This method returns the value of a StateData object stored in the data
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
865 * pool of this Artifact is Boolean using Boolean.valueOf().
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
866 *
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
867 * @param name The name of the StateData object.
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
868 *
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
869 * @return a Boolean representing the value of the data object or null if no
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
870 * such object is existing.
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
871 */
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
872 public Boolean getDataAsBoolean(String name) {
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
873 String value = getDataAsString(name);
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
874
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
875 if (value == null || value.length() == 0) {
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
876 return null;
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
877 }
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
878
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
879 return Boolean.valueOf(value);
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
880 }
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
881
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
882
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2013
diff changeset
883 /**
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
884 * Add StateData containing a given string.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
885 * @param name Name of the data object.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
886 * @param value String to store.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
887 */
1724
0349dd524f9c Add convenience method to add default data as string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1709
diff changeset
888 public void addStringData(String name, String value) {
0349dd524f9c Add convenience method to add default data as string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1709
diff changeset
889 addData(name, new DefaultStateData(name, null, null, value));
0349dd524f9c Add convenience method to add default data as string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1709
diff changeset
890 }
0349dd524f9c Add convenience method to add default data as string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1709
diff changeset
891
3920
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
892 /**
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
893 * This method returns all stored StateData in this artifact as a Collection
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
894 * @return a Collection of all StateData objects in this artifact
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
895 */
960
92027887775a DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 958
diff changeset
896 public Collection<StateData> getAllData() {
92027887775a DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 958
diff changeset
897 return data.values();
92027887775a DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 958
diff changeset
898 }
92027887775a DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 958
diff changeset
899
937
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
900
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
901 /** Return all produced facets. */
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
902 public List<Facet> getFacets() {
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
903 List<Facet> all = new ArrayList<Facet>();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
904
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
905 // Iterate over facets of each state.
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
906 for (List<Facet> fs: facets.values()) {
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
907 all.addAll(fs);
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
908 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
909
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
910 return all;
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
911 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
912
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
913
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
914 /**
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
915 * Get facet as stored internally, with equalling name and index than given
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
916 * facet.
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
917 * @param facet that defines index and name of facet searched.
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
918 * @return facet instance or null if not found.
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
919 */
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
920 public Facet getNativeFacet(Facet facet) {
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
921 String name = facet.getName();
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
922 int index = facet.getIndex();
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
923
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
924 for (List<Facet> fs: facets.values()) {
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
925 for (Facet f: fs) {
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
926 if (f.getIndex() == index && f.getName().equals(name)) {
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
927 return f;
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
928 }
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
929 }
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
930 }
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
931
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
932 log.warn("Could not find facet: " + name + " at " + index);
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
933 return null;
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
934 }
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
935
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
936
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
937 /**
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
938 * This method stores the data that is contained in the FEED document.
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
939 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
940 * @param feed The FEED document.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
941 * @param xpath The XPath that points to the data nodes.
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
942 */
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
943 public void saveData(Document feed, CallContext context)
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
944 throws IllegalArgumentException
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
945 {
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
946 if (feed == null) {
325
7a0907742cc0 Changed the error key that is written to the result document of the feed operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 322
diff changeset
947 throw new IllegalArgumentException("error_feed_no_data");
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
948 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
949
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
950 NodeList nodes = (NodeList) XMLUtils.xpath(
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
951 feed,
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
952 XPATH_FEED_INPUT,
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
953 XPathConstants.NODESET,
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
954 ArtifactNamespaceContext.INSTANCE);
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
955
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
956 if (nodes == null || nodes.getLength() == 0) {
325
7a0907742cc0 Changed the error key that is written to the result document of the feed operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 322
diff changeset
957 throw new IllegalArgumentException("error_feed_no_data");
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
958 }
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
959
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
960 boolean debug = log.isDebugEnabled();
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
961
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
962 int count = nodes.getLength();
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
963
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
964 if (debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
965 log.debug("Try to save " + count + " data items.");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
966 }
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
967
708
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
968 String uri = ArtifactNamespaceContext.NAMESPACE_URI;
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
969
1176
28154920e0b3 Introduced the possibility for States to transform/modify input before the data is added to FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1137
diff changeset
970 DefaultState current = (DefaultState) getCurrentState(context);
28154920e0b3 Introduced the possibility for States to transform/modify input before the data is added to FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1137
diff changeset
971
2205
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
972 FLYSContext flysContext = FLYSUtils.getFlysContext(context);
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
973 StateEngine engine = (StateEngine) flysContext.get(
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
974 FLYSContext.STATE_ENGINE_KEY);
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
975
708
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
976 for (int i = 0; i < count; i++) {
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
977 Element node = (Element)nodes.item(i);
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
978
708
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
979 String name = node.getAttributeNS(uri, "name");
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
980 String value = node.getAttributeNS(uri, "value");
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
981
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
982 if (name.length() > 0 && value.length() > 0) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
983 if (debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
984 log.debug("Save data item for '" + name + "' : " + value);
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
985 }
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
986
2205
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
987 StateData model = engine.getStateData(getName(), name);
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
988
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
989 StateData sd = model != null
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
990 ? model.deepCopy()
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
991 : new DefaultStateData(name, null, null, value);
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
992
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
993 addData(
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
994 name, current.transform(this, context, sd, name, value));
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
995 }
1656
94732906b094 Made feed() operation able to remove existing data items from Artifact's data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1654
diff changeset
996 else if (name.length() > 0 && value.length() == 0) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
997 if (removeData(name) != null && debug) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
998 log.debug("Removed data '" + name + "' successfully.");
1656
94732906b094 Made feed() operation able to remove existing data items from Artifact's data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1654
diff changeset
999 }
94732906b094 Made feed() operation able to remove existing data items from Artifact's data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1654
diff changeset
1000 }
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
1001 }
322
448d0dc64357 The inserted ranges (distance and WQ ranges) are validated in the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 321
diff changeset
1002
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 981
diff changeset
1003 current.validate(this);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1004 }
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1005
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1006
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1007 /**
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1008 * Determines if the state with the identifier <i>stateId</i> is reachable
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1009 * from the current state. The determination itself takes place in the
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1010 * TransitionEngine.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1011 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1012 * @param stateId The identifier of a state.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1013 * @param context The context object.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1014 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1015 * @return true, if the state specified by <i>stateId</i> is reacahble,
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1016 * otherwise false.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1017 */
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1018 protected boolean isStateReachable(String stateId, Object context) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1019
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1020 if (log.isDebugEnabled()) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1021 log.debug("Determine if the state '" + stateId + "' is reachable.");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1022 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1023
1777
a8aa343799a2 Extracet getFlysContext from FLYSArtifact to FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1771
diff changeset
1024 FLYSContext flysContext = FLYSUtils.getFlysContext(context);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1025
624
929137ee8154 ISSUE-62 (part I/II) States are no longer filled with data - if a state needs user input, it needs to query the owner artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 623
diff changeset
1026 State currentState = getCurrentState(context);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1027 StateEngine sEngine = (StateEngine) flysContext.get(
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1028 FLYSContext.STATE_ENGINE_KEY);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1029
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1030 TransitionEngine tEngine = (TransitionEngine) flysContext.get(
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1031 FLYSContext.TRANSITION_ENGINE_KEY);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1032
355
d97982627596 Bugfixes: Adapted a broken method call of TransitionEngine.isStateReachable() and added the outputs of a current state to the DESCRIBE.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 325
diff changeset
1033 return tEngine.isStateReachable(this, stateId, currentState, sEngine);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1034 }
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1035
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1036
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1037 /**
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1038 * Determines if the state with the identifier <i>stateId</i> is a previous
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1039 * state of the current state.
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1040 *
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1041 * @param stateId The target state identifier.
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1042 * @param context The context object.
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1043 */
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1044 protected boolean isPreviousState(String stateId, Object context) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1045 if (log.isDebugEnabled()) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1046 log.debug("Determine if the state '" + stateId + "' is old.");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1047 }
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1048
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
1049 return getPreviousStateIds().contains(stateId);
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1050 }
317
8f40a57229c3 FLYSArtifact provides methods to retrieve the real River, Gauge objects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 298
diff changeset
1051
8f40a57229c3 FLYSArtifact provides methods to retrieve the real River, Gauge objects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 298
diff changeset
1052
8f40a57229c3 FLYSArtifact provides methods to retrieve the real River, Gauge objects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 298
diff changeset
1053 /**
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1054 * Computes the hash code of the entered values.
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1055 *
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1056 * @return a hash code.
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1057 */
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1058 @Override
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1059 public String hash() {
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1060
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1061 long hash = 0L;
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1062 int shift = 3;
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1063
4050
975f608dd254 Cleaned up iterating over maps. Removed some dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3934
diff changeset
1064 for (Map.Entry<String, StateData> entry: data.entrySet()) {
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1065 String key = entry.getKey();
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1066 Object value = entry.getValue().getValue();
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1067
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1068 hash ^= ((long)key.hashCode() << shift)
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1069 | ((long)value.hashCode() << (shift + 3));
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1070 shift += 2;
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1071 }
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1072
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1073 return getCurrentStateId() + hash;
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1074 }
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1075
1628
16c74ca3586e Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
1076
16c74ca3586e Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
1077 /**
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1078 * Return List of outputs, where combinations of outputname and filtername
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1079 * that match content in filterFacets is left out.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1080 * @return filtered Outputlist.
1628
16c74ca3586e Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
1081 */
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1082 protected List<Output> filterOutputs(List<Output> outs) {
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1083 if (filterFacets == null || filterFacets.isEmpty()) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1084 log.debug("No filter for Outputs.");
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1085 return outs;
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1086 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1087
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1088 boolean debug = log.isDebugEnabled();
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1089
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1090 if (debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1091 log.debug(
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1092 "Filter Facets with " + filterFacets.size() + " filters.");
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1093 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1094
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1095 List<Output> filtered = new ArrayList<Output>();
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1096
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1097 for (Output out: outs) {
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1098 String outName = out.getName();
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1099
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1100 if (debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1101 log.debug(" filter Facets for Output: " + outName);
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1102 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1103
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1104 List<Facet> fFacets = filterFacets.get(outName);
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1105 if (fFacets != null) {
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1106 if (debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1107 log.debug("" + fFacets.size() + " filters for: " + outName);
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1108 for (Facet tmp: fFacets) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1109 log.debug(" filter = '" + tmp.getName() + "'");
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1110 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1111 }
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1112
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1113 List<Facet> resultFacets = new ArrayList<Facet>();
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1114
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1115 for (Facet facet: out.getFacets()) {
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1116 for (Facet fFacet: fFacets) {
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1117 if (facet.getIndex() == fFacet.getIndex()
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1118 && facet.getName().equals(fFacet.getName())) {
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1119 resultFacets.add(facet);
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1120 break;
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1121 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1122 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1123 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1124
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1125 if (debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1126 log.debug(
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1127 "Facets after filtering = " + resultFacets.size());
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1128 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1129
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1130 if (!resultFacets.isEmpty()) {
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1131 DefaultOutput nout = new DefaultOutput(
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1132 out.getName(),
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1133 out.getDescription(),
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1134 out.getMimeType(),
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1135 resultFacets);
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1136 filtered.add(nout);
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1137 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1138 }
4403
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
1139 else if (debug) {
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
1140 log.debug("No filter Factes for Output: " + outName);
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
1141 }
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1142 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1143
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1144 if (debug) {
4403
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
1145 log.debug("Number of outs after filtering = " + filtered.size());
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1146 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1147
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1148 return filtered;
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1149 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1150
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1151
1765
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1152 /**
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1153 * Get all outputs that the Artifact can do in this state (which includes
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1154 * all previous states).
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1155 *
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1156 * @return list of outputs
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1157 */
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 981
diff changeset
1158 public List<Output> getOutputs(Object context) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1159 if (log.isDebugEnabled()) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1160 log.debug("##### Get Outputs for: " + identifier() + " #####");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1161 dumpArtifact();
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1162 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1163
965
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1164 List<String> stateIds = getPreviousStateIds();
944
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1165 List<Output> generated = new ArrayList<Output>();
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1166
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1167 for (String stateId: stateIds) {
1067
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
1168 DefaultState state = (DefaultState) getState(context, stateId);
981
799c7108ea6d datacage: prepared access to outs of artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 965
diff changeset
1169 generated.addAll(getOutputForState(state));
944
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1170 }
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1171
965
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1172 generated.addAll(getCurrentOutputs(context));
944
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1173
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1174 return filterOutputs(generated);
944
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1175 }
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1176
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1177
1765
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1178 /**
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1179 * Get output(s) for current state.
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1180 * @return list of outputs for current state.
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1181 */
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 981
diff changeset
1182 public List<Output> getCurrentOutputs(Object context) {
965
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1183 DefaultState cur = (DefaultState) getCurrentState(context);
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1184
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1185 try {
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 981
diff changeset
1186 if (cur.validate(this)) {
981
799c7108ea6d datacage: prepared access to outs of artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 965
diff changeset
1187 return getOutputForState(cur);
965
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1188 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1189 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1190 catch (IllegalArgumentException iae) { }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1191
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1192 return new ArrayList<Output>();
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1193 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1194
1137
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1195
1765
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1196 /**
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1197 * Get output(s) for a specific state.
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1198 * @param state State of interest
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1199 * @return list of output(s) for given state.
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1200 */
981
799c7108ea6d datacage: prepared access to outs of artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 965
diff changeset
1201 protected List<Output> getOutputForState(DefaultState state) {
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1202
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1203 if (state == null) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1204 log.error("state == null: This should not happen!");
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1205 return new ArrayList<Output>();
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1206 }
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1207
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1208 boolean debug = log.isDebugEnabled();
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1209
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1210 if (debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1211 log.debug("Find Outputs for State: " + state.getID());
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1212 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1213
965
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1214 List<Output> list = state.getOutputs();
3555
b1912514e0f5 s/container.size() == 0/container.isEmpty()/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3554
diff changeset
1215 if (list == null || list.isEmpty()) {
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1216 if (debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1217 log.debug("-> No output modes for this state.");
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1218 }
965
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1219 return new ArrayList<Output>();
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1220 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1221
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1222 String stateId = state.getID();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1223
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1224 List<Facet> fs = facets.get(stateId);
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
1225
3555
b1912514e0f5 s/container.size() == 0/container.isEmpty()/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3554
diff changeset
1226 if (fs == null || fs.isEmpty()) {
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1227 if (debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1228 log.debug("No facets found.");
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1229 }
965
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1230 return new ArrayList<Output>();
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1231 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1232
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1233 List<Output> gen = generateOutputs(list, fs);
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1234
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1235 if (debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1236 log.debug("State '" + stateId + "' has " + gen.size() + " outs");
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1237 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1238
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1239 return gen;
965
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1240 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1241
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1242
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1243 /**
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1244 * Generate a list of outputs with facets from fs if type is found in list
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1245 * of output.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1246 *
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1247 * @param list List of outputs
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1248 * @param fs List of facets
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1249 */
937
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1250 protected List<Output> generateOutputs(List<Output> list, List<Facet> fs) {
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1251 List<Output> generated = new ArrayList<Output>();
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1252
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1253 boolean debug = log.isDebugEnabled();
937
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1254
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1255 for (Output out: list) {
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1256 Output o = new DefaultOutput(
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1257 out.getName(),
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1258 out.getDescription(),
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1259 out.getMimeType(),
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1260 out.getType());
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1261
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1262 Set<String> outTypes = new HashSet<String>();
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1263
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1264 for (Facet f: out.getFacets()) {
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1265 if (outTypes.add(f.getName()) && debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1266 log.debug("configured facet " + f);
937
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1267 }
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1268 }
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1269
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1270 boolean facetAdded = false;
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1271 for (Facet f: fs) {
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1272 String type = f.getName();
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1273
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1274 if (outTypes.contains(type)) {
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1275 if (debug) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1276 log.debug("Add facet " + f);
937
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1277 }
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1278 facetAdded = true;
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1279 o.addFacet(f);
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1280 }
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1281 }
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1282
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1283 if (facetAdded) {
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1284 generated.add(o);
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1285 }
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1286 }
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1287
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1288 return generated;
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1289 }
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1290
9e813e9137a5 Added a monitor that creates new artifacts for default themes in charts and maps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 742
diff changeset
1291
689
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1292 /**
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1293 * Dispatches the computation request to compute(CallContext context, String
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1294 * hash) with the current hash value of the artifact which is provided by
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1295 * hash().
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1296 *
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1297 * @param context The CallContext.
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1298 */
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1299 public Object compute(
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1300 CallContext context,
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1301 ComputeType type,
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1302 boolean generateFacets
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1303 ) {
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1304 return compute(context, hash(), type, generateFacets);
689
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1305 }
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1306
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1307
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1308 /**
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1309 * Dispatches computation requests to the current state which needs to
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1310 * implement a createComputeCallback(String hash, FLYSArtifact artifact)
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1311 * method.
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1312 *
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1313 * @param context The CallContext.
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1314 * @param hash The hash value which is used to fetch computed data from
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1315 * cache.
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1316 *
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1317 * @return the computed data.
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1318 */
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1319 public Object compute(
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1320 CallContext context,
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1321 String hash,
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1322 ComputeType type,
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1323 boolean generateFacets
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1324 ) {
693
af393c5eb2c8 Write computed facets into artifacts describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 692
diff changeset
1325 DefaultState current = (DefaultState) getCurrentState(context);
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1326 return compute(context, hash, current, type, generateFacets);
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1327 }
689
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1328
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
1329
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
1330 /**
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
1331 * Like compute, but identify State by it id (string).
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
1332 */
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1333 public Object compute(
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1334 CallContext context,
1117
ea80e652f033 Reordered some parameters in a FLYSArtifact method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1094
diff changeset
1335 String hash,
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1336 String stateID,
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1337 ComputeType type,
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1338 boolean generateFacets
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1339 ) {
2141
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2128
diff changeset
1340 DefaultState current =
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2128
diff changeset
1341 (stateID == null)
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1342 ? (DefaultState)getCurrentState(context)
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1343 : (DefaultState)getState(context, stateID);
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1344
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1345 if (hash == null) {
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1346 hash = hash();
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1347 }
689
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1348
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1349 return compute(context, hash, current, type, generateFacets);
689
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1350 }
f8ac04b2dbd0 Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 687
diff changeset
1351
1137
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1352
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1353 /**
1765
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1354 * Let current state compute and register facets.
5d8b3880a553 Do not store association of states to facets, let artifacts keep facets in a pure list.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1763
diff changeset
1355 *
1137
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1356 * @param key key of state
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1357 * @param state state
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1358 * @param type Type of compute
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1359 * @param generateFacets Whether new facets shall be generated.
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1360 */
690
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1361 public Object compute(
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1362 CallContext context,
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1363 String key,
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1364 DefaultState state,
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1365 ComputeType type,
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1366 boolean generateFacets
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1367 ) {
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1368 String stateID = state.getID();
691
2600aa2c7319 Store facets for each state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 690
diff changeset
1369
1137
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1370 List<Facet> fs = (generateFacets) ? new ArrayList<Facet>() : null;
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1371
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1372 try {
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1373 Cache cache = CacheFactory.getCache(COMPUTING_CACHE);
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1374
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1375 Object old = null;
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1376
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1377 if (cache != null) {
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1378 net.sf.ehcache.Element element = cache.get(key);
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1379 if (element != null) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1380 log.debug("Got computation result from cache.");
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1381 old = element.getValue();
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1382 }
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1383 }
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3193
diff changeset
1384 else {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1385 log.debug("cache not configured.");
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3193
diff changeset
1386 }
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1387
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1388 Object res;
690
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1389 switch (type) {
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1390 case FEED:
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1391 res = state.computeFeed(this, key, context, fs, old);
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1392 break;
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1393 case ADVANCE:
700
94f0f91be11c call computeAdvance() if we want to advance.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 699
diff changeset
1394 res = state.computeAdvance(this, key, context, fs, old);
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1395 break;
942
796c54058dc4 Added artifacts/states for WMS background an river axis and a configuration for the output-defaults.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 941
diff changeset
1396 case INIT:
958
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 952
diff changeset
1397 res = state.computeInit(this, key, context, context.getMeta(), fs);
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1398 default:
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1399 res = null;
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1400 }
690
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1401
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1402 if (cache != null && old != res && res != null) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1403 log.debug("Store computation result to cache.");
697
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1404 net.sf.ehcache.Element element =
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1405 new net.sf.ehcache.Element(key, res);
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1406 cache.put(element);
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1407 }
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1408
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1409 return res;
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1410 }
b972eba2ed8a Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 696
diff changeset
1411 finally {
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1412 if (generateFacets) {
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1413 if (fs.isEmpty()) {
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
1414 facets.remove(stateID);
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1415 }
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1416 else {
3934
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1417 addFacets(stateID, fs);
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1418 }
690
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1419 }
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1420 }
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1421 }
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1422
3934
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1423 /**
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1424 * Sets the facets for an ID
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1425 *
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1426 * Normally the id is a state ID.
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1427 *
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1428 * @param id ID to map the facets to
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1429 * @param facets List of facets to be stored
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1430 */
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1431 protected void addFacets(String id, List<Facet> facets) {
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1432 this.facets.put(id, facets);
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1433 }
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1434
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1435
623
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1436 /**
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1437 * Method to dump the artifacts state/data.
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1438 */
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1439 protected void dumpArtifact() {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1440 log.debug("++++++++++++++ DUMP ARTIFACT DATA +++++++++++++++++");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1441 // Include uuid, type, name
623
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1442
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1443 log.debug("------ DUMP DATA ------");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1444 Collection<StateData> allData = data.values();
623
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1445
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1446 for (StateData d: allData) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1447 String name = d.getName();
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1448 String value = (String) d.getValue();
623
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1449
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1450 log.debug("- " + name + ": " + value);
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1451 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1452
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1453 log.debug("------ DUMP PREVIOUS STATES ------");
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1454 List<String> stateIds = getPreviousStateIds();
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1455
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1456 for (String id: stateIds) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1457 log.debug("- State: " + id);
623
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1458 }
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1459
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1460 log.debug("CURRENT STATE: " + getCurrentStateId());
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1461
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1462 debugFacets();
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1463 dumpFilterFacets();
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1464
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1465 log.debug("++++++++++++++ END ARTIFACT DUMP +++++++++++++++++");
623
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1466 }
1086
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1467
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1468
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1469 protected void debugFacets() {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1470 log.debug("######### FACETS #########");
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1471
4050
975f608dd254 Cleaned up iterating over maps. Removed some dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3934
diff changeset
1472 for (Map.Entry<String, List<Facet>> entry: facets.entrySet()) {
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1473 String out = entry.getKey();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1474 List<Facet> fs = entry.getValue();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1475 for (Facet f: fs) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1476 log.debug(" # " + out + " : " + f.getName());
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1477 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1478 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1479
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1480 log.debug("######## FACETS END ########");
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1481 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1482
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1483
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1484 protected void dumpFilterFacets() {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1485 log.debug("######## FILTER FACETS ########");
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1486
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1487 if (filterFacets == null || filterFacets.isEmpty()) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1488 log.debug("No Filter Facets defined.");
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1489 return;
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1490 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1491
4050
975f608dd254 Cleaned up iterating over maps. Removed some dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3934
diff changeset
1492 for (Map.Entry<String, List<Facet>> entry: filterFacets.entrySet()) {
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1493 String out = entry.getKey();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1494 List<Facet> filters = entry.getValue();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1495
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1496 log.debug("There are " + filters.size() + " filters for: " +out);
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1497
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1498 for (Facet filter: filters) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1499 log.debug(" filter: " + filter.getName());
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1500 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1501 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1502
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1503 log.debug("######## FILTER FACETS END ########");
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1504 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1505
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1506
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
1507 /** Destroy and clean up state with given id. */
1094
b1c6d945848d Added a new method to FLYSArtifact to destroy a single state (call its endOfLife).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1086
diff changeset
1508 protected void destroyState(String id, Object context) {
b1c6d945848d Added a new method to FLYSArtifact to destroy a single state (call its endOfLife).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1086
diff changeset
1509 State s = getState(context, id);
b1c6d945848d Added a new method to FLYSArtifact to destroy a single state (call its endOfLife).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1086
diff changeset
1510 s.endOfLife(this, context);
b1c6d945848d Added a new method to FLYSArtifact to destroy a single state (call its endOfLife).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1086
diff changeset
1511 }
b1c6d945848d Added a new method to FLYSArtifact to destroy a single state (call its endOfLife).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1086
diff changeset
1512
b1c6d945848d Added a new method to FLYSArtifact to destroy a single state (call its endOfLife).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1086
diff changeset
1513
1086
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1514 /**
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1515 * Calls endOfLife() for each state in the list <i>ids</i>.
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1516 *
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1517 * @param ids The State IDs that should be destroyed.
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1518 * @param context The FLYSContext.
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1519 */
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1520 protected void destroyStates(List<String> ids, Object context) {
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1521 for (int i = 0, num = ids.size(); i < num; i++) {
1094
b1c6d945848d Added a new method to FLYSArtifact to destroy a single state (call its endOfLife).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1086
diff changeset
1522 destroyState(ids.get(i), context);
1086
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1523 }
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1524 }
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1525
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1526
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1527 /**
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1528 * Destroy the states.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1529 */
1086
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1530 @Override
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1531 public void endOfLife(Object context) {
3554
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1532 if (log.isDebugEnabled()) {
9b356ed24411 FLYSArtifact: Lowered logging output level from info to debug. Made some more debug outputs conditional.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3553
diff changeset
1533 log.debug("FLYSArtifact.endOfLife: " + identifier());
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1534 }
1086
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1535
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1536 ArrayList<String> ids = (ArrayList<String>) getPreviousStateIds();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1537 ArrayList<String> toDestroy = (ArrayList<String>) ids.clone();
1086
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1538
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1539 toDestroy.add(getCurrentStateId());
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1540
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1541 destroyStates(toDestroy, context);
1086
825ea312116d Call State.endOfLife() for all States in the Artifact when Artifact.endOfLife() is called.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1084
diff changeset
1542 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1543 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1544 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org