annotate artifacts/src/main/java/org/dive4elements/river/artifacts/FLYSArtifact.java @ 5865:73da40528cf2

River artifacts: Renamed FLYSUtils to RiverUtils.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 28 Apr 2013 15:09:31 +0200
parents 4897a58c8746
children 9a6741ccf6d4
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
9 package org.dive4elements.river.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
10
3883
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
11 import java.util.ArrayList;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
12 import java.util.Collection;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
13 import java.util.HashMap;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
14 import java.util.HashSet;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
15 import java.util.LinkedList;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
16 import java.util.List;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
17 import java.util.Map;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
18 import java.util.Set;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
19 import java.util.TreeMap;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
20
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
21 import javax.xml.xpath.XPathConstants;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
22
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
23 import net.sf.ehcache.Cache;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
24
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
25 import org.apache.log4j.Logger;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
26 import org.w3c.dom.Document;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
27 import org.w3c.dom.Element;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
28 import org.w3c.dom.Node;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
29 import org.w3c.dom.NodeList;
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
30
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
31 import org.dive4elements.artifactdatabase.ArtifactDatabaseImpl;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
32 import org.dive4elements.artifactdatabase.DefaultArtifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
33 import org.dive4elements.artifactdatabase.ProtocolUtils;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
34 import org.dive4elements.artifactdatabase.data.DefaultStateData;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
35 import org.dive4elements.artifactdatabase.data.StateData;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
36 import org.dive4elements.artifactdatabase.state.DefaultFacet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
37 import org.dive4elements.artifactdatabase.state.DefaultOutput;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
38 import org.dive4elements.artifactdatabase.state.Facet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
39 import org.dive4elements.artifactdatabase.state.Output;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
40 import org.dive4elements.artifactdatabase.state.State;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
41 import org.dive4elements.artifactdatabase.state.StateEngine;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
42 import org.dive4elements.artifactdatabase.transition.TransitionEngine;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
43 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
44 import org.dive4elements.artifacts.ArtifactDatabase;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
45 import org.dive4elements.artifacts.ArtifactDatabaseException;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
46 import org.dive4elements.artifacts.ArtifactFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
47 import org.dive4elements.artifacts.CallContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
48 import org.dive4elements.artifacts.CallMeta;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
49 import org.dive4elements.artifacts.Message;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
50 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
51 import org.dive4elements.artifacts.common.utils.XMLUtils;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
52 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
53 import org.dive4elements.river.artifacts.cache.CacheFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
54 import org.dive4elements.river.artifacts.context.FLYSContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
55 import org.dive4elements.river.artifacts.model.CalculationMessage;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
56 import org.dive4elements.river.artifacts.states.DefaultState;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4497
diff changeset
57 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
58 import org.dive4elements.river.utils.RiverUtils;
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 /**
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
61 * The default FLYS artifact with convenience added.
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
62 * (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
63 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 * @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
65 */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 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
67
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
68 /** 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
69 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
70
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
71 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
72
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
73 /** 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
74 public static final String XPATH_FEED_INPUT =
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
75 "/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
76
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
77 /** 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
78 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
79 "/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
80
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
81 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
82 "/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
83
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
84 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
85 "/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
86
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
87 /** 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
88 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
89
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
90 /** 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
91 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
92
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93 /** 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
94 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
95
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
96 /** 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
97 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
98
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
99 /** 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
100 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
101
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
102 /** 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
103 private Map<String, StateData> data;
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
104
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
105 /** Mapping of state names to created facets. */
4497
a2735a4bf75e Change facets member variable to private
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4496
diff changeset
106 private 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
107
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
108 /**
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
109 * 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
110 * filter in output of collection); out -&gt; facets.
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
111 */
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
112 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
113
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 /**
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
116 * The default constructor that creates an empty FLYSArtifact.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
117 */
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
118 public FLYSArtifact() {
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
119 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
120 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
121 facets = new HashMap<String, List<Facet>>();
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
122 }
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
123
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4050
diff changeset
124
3193
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 * 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
127 * 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
128 *
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
129 * @param doc The document.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
130 * @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
131 * @param context The CallContext.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
132 * @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
133 */
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
134 protected void appendStaticUI(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
135 Document doc,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
136 Node ui,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
137 CallContext context,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
138 String uuid)
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
139 {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
140 List<String> stateIds = getPreviousStateIds();
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
141
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
142 FLYSContext flysContext = RiverUtils.getFlysContext(context);
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
143 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
144 FLYSContext.STATE_ENGINE_KEY);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
145
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
146 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
147
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
148 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
149 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
150 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
151 }
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
152 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
153
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
154 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
155 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
156 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
157
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
158
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
159 /**
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
160 * Returns the name of the concrete artifact.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
161 *
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
162 * @return the name of the concrete artifact.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
163 */
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
164 public String getName() {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
165 return name;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
166 }
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
167
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
168
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 * 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
171 * 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
172 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
173 * @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
174 * @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
175 * @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
176 * @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
177 */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 @Override
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179 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
180 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
181 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
182 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
183 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
184 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
185 {
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
186 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
187
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
188 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
189 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
190 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
191
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
192 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
193
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
194 FLYSContext flysContext = RiverUtils.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
195
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
196 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
197
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
198 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
199
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
200 if (debug) {
3883
f858028dde5f Manual points (work in progress)
Christian Lins <christian.lins@intevation.de>
parents: 3556
diff changeset
201 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
202 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
204 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
205 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
206 + "state could be picked.");
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
207 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208 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
209
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
210 String model = XMLUtils.xpathString(
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
211 data,
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
212 XPATH_MODEL_ARTIFACT,
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
213 ArtifactNamespaceContext.INSTANCE);
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
214
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
215 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
216 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
217 ArtifactDatabaseImpl.GLOBAL_CONTEXT_KEY);
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
218
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
219 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
220 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
221 }
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
222 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
223 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
224 }
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
225 }
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
226
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
227 filterFacets = buildFilterFacets(data);
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
228 }
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
229
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
230
2141
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2128
diff changeset
231 /** 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
232 protected List<String> clonePreviousStateIds() {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
233 return new ArrayList<String>(previousStateIds);
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
234 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
235
2141
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2128
diff changeset
236
1895
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
237 /**
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
238 * 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
239 *
1895
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
240 * @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
241 * @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
242 */
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
243 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
244 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
245 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
246 return;
1895
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
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
249 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
250
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
251 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
252 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
253 return;
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
254 }
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
255
1be3a4636ee3 New convenience function to copy data from one artifact to another.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1809
diff changeset
256 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
257 }
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
258
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
259
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
260 /** 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
261 protected Map<String, StateData> cloneData() {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
262 Map<String, StateData> copy = new TreeMap<String, StateData>();
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
263
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
264 for (Map.Entry<String, StateData> entry: data.entrySet()) {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
265 copy.put(entry.getKey(), entry.getValue().deepCopy());
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
266 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
267
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
268 return copy;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
269 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
270
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4050
diff changeset
271
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
272 /**
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
273 * 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
274 * @return Mapping of state-ids to facets.
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
275 */
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
276 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
277 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
278
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
279 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
280 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
281 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
282 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
283 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
284 }
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
285 copy.put(entry.getKey(), facetCopies);
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
286 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
287
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
288 return copy;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
289 }
940
f4439e015278 Append artifact recommendations to the artifact's describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 937
diff changeset
290
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
291
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
292 /**
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
293 * (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
294 * @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
295 */
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
296 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
297 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
298 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
299 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
300 {
1059
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
301 if (!(artifact instanceof FLYSArtifact)) {
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
302 return;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
303 }
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
304
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
305 FLYSArtifact flys = (FLYSArtifact)artifact;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
306
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
307 currentStateId = flys.currentStateId;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
308 previousStateIds = flys.clonePreviousStateIds();
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
309 name = flys.name;
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
310 data = flys.cloneData();
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
311 facets = flys.cloneFacets();
fdb0f4ef96f0 Made FLYS artifacts cloneable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1057
diff changeset
312 // 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
313
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
314 ArrayList<String> stateIds = (ArrayList<String>) getPreviousStateIds();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
315 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
316
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
317 toInitialize.add(getCurrentStateId());
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
318
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
319 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
320 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
321
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
322 if (state != null) {
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
323 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
324 }
ebc2aa64c1be Call State.initialize() for each State of an Artifact in FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
325 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
326 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
327
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
328
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
329 /**
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
330 * Builds filter facets from document.
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
331 * @see filterFacets
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
332 */
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
333 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
334 if (log.isDebugEnabled()) {
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
335 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
336 }
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
337
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
338 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
339 document,
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
340 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
341 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
342 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
343
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
344 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
345 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
346 }
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 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
349
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
350 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
351 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
352 String oName = element.getAttribute("name");
4403
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
353 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
354 continue;
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
355 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
356
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
357 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
358
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
359 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
360 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
361 "facet");
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
362
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
363 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
364 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
365
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
366 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
367
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
368 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
369 try {
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
370 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
371 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
372 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
373 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
374 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
375 }
4403
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
376 if (log.isDebugEnabled()) {
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
377 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
378 " for out " + oName);
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
379 }
1057
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
380 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
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
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
383 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
384 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
385 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
386 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
387
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
388 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
389 }
d4a5d3941cc0 Build out/facet filter from XML document passed at creation time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1056
diff changeset
390
119
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 /**
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
393 * 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
394 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
395 * @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
396 * @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
397 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
398 * @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
399 */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
400 @Override
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
401 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
402 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
403
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
404 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
405
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
406 XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator(
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
407 doc,
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
408 ArtifactNamespaceContext.NAMESPACE_URI,
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
409 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
410
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
411 Element result = creator.create("result");
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
412 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
413
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
414 try {
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
415 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
416
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
417 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
418
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
419 return describe(target, context);
121
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 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
422 // 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
423 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
424 creator.addAttr(result, "type", OPERATION_FAILED, true);
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
425
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
426 result.setTextContent(iae.getMessage());
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
427 }
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
428
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
429 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
430 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
431
4147
db0b9cff8496 Cosmetics, documentation.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4050
diff changeset
432
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
433 /**
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
434 * 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
435 *
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
436 * @param data Some data.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
437 * @param context The CallContext.
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
438 *
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
439 * @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
440 */
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3203
diff changeset
441 @Override
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
442 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
443
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
444 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
445 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
446 "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
447 dumpArtifact();
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
448 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
449
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
450 FLYSContext flysContext = RiverUtils.getFlysContext(context);
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
451
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
452 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
453 FLYSContext.STATE_ENGINE_KEY);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
454
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
455 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
456 FLYSContext.TRANSITION_ENGINE_KEY);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
457
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
458 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
459 this, getCurrentState(context), stateEngine);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
460
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
461 Document description = XMLUtils.newDocument();
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
462 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
463 description,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
464 ArtifactNamespaceContext.NAMESPACE_URI,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
465 ArtifactNamespaceContext.NAMESPACE_PREFIX);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
466
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
467 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
468 description.appendChild(root);
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 State current = getCurrentState(context);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
471
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
472 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
473 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
474 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
475
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
476 appendBackgroundActivity(creator, root, context);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
477
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
478 Element ui = ProtocolUtils.createArtNode(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
479 creator, "ui", null, null);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
480
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
481 Element staticUI = ProtocolUtils.createArtNode(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
482 creator, "static", null, null);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
483
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
484 Element outs = ProtocolUtils.createArtNode(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
485 creator, "outputmodes", null, null);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
486 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
487
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
488 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
489
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
490 Element name = ProtocolUtils.createArtNode(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
491 creator, "name",
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
492 new String[] { "value" },
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
493 new String[] { getName() });
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
494
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
495 Element dynamic = current.describe(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
496 this,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
497 description,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
498 root,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
499 context,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
500 identifier());
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
501
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
502 if (dynamic != null) {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
503 ui.appendChild(dynamic);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
504 }
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 ui.appendChild(staticUI);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
507
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
508 root.appendChild(name);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
509 root.appendChild(ui);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
510 root.appendChild(outs);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
511
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
512 return description;
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
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
515 /** Override me! */
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
516
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
517 protected void appendBackgroundActivity(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
518 ElementCreator cr,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
519 Element root,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
520 CallContext context
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
521 ) {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
522 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
523
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
524 if (messages == null) {
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
525 return;
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
526 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
527
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
528 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
529 root.appendChild(inBackground);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
530
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
531 cr.addAttr(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
532 inBackground,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
533 "value",
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
534 String.valueOf(context.isInBackground()),
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
535 true);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
536
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
537 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
538 cr.addAttr(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
539 inBackground,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
540 "steps",
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
541 String.valueOf(message.getSteps()),
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
542 true);
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 cr.addAttr(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
545 inBackground,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
546 "currentStep",
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
547 String.valueOf(message.getCurrentStep()),
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
548 true);
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
549
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
550 inBackground.setTextContent(message.getMessage());
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
551 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
552
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 * 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
555 */
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
556 protected void appendOutputModes(
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
557 Document doc,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
558 Element outs,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
559 CallContext context,
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
560 String uuid)
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 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
563
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
564 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
565 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
566 }
3193
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
567
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
568 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
569 }
2f922be407ea Moved common code of the *Artifacts into FLYSArtifact.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2766
diff changeset
570
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
571
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
572 /**
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
573 * 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
574 * 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
575 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
576 * @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
577 * @param context The CallContext.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
578 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
579 * @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
580 */
3306
1b41dc00b1f7 Create shapefile directory instead of shapefile 'file'
Christian Lins <christian.lins@intevation.de>
parents: 3203
diff changeset
581 @Override
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
582 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
583
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
584 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
585
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
586 Document doc = XMLUtils.newDocument();
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
587
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
588 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
589 doc,
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
590 ArtifactNamespaceContext.NAMESPACE_URI,
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
591 ArtifactNamespaceContext.NAMESPACE_PREFIX);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
592
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
593 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
594
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
595 String currentStateId = getCurrentStateId();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
596 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
597 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
598
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
599 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
600 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
601 }
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
602
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
603 if (!currentStateId.equals(targetState)
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
604 && isStateReachable(targetState, context))
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
605 {
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
606 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
607 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
608 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
609
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
610 List<String> prev = getPreviousStateIds();
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
611 prev.add(currentStateId);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
612
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
613 setCurrentStateId(targetState);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
614
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("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
617 }
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
618 compute(context, ComputeType.ADVANCE, true);
693
af393c5eb2c8 Write computed facets into artifacts describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 692
diff changeset
619
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
620 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
621 }
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
622 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
623 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
624 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
625 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
626
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
627 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
628 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
629 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
630
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
631 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
632
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
633 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
634 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
635 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
636 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
637 }
1084
583314dafdb6 Call State.endOfLife() in FLYSArtifact when stepping back to a previous state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1067
diff changeset
638
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
639 prevs.remove(prev);
691
2600aa2c7319 Store facets for each state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 690
diff changeset
640 facets.remove(prev);
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
641 }
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
642
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
643 destroyState(getCurrentStateId(), context);
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
644 setCurrentStateId(targetState);
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
645
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
646 return describe(target, context);
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
647 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
648
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
649 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
650 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
651
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
652 doc.appendChild(result);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
653
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
654 return doc;
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
655 }
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
656
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
657
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
658 /**
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
659 * 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
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 * @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
662 */
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
663 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
664 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
665 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
666
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 * 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
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 * @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
672 */
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
673 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
674 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
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
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 /**
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
679 * 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
680 * 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
681 * 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
682 * 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
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 * @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
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 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
687 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
688 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
689
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
690
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
691 /**
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
692 * 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
693 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
694 * @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
695 */
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
696 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
697 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
698 }
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
699
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
700
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
701 /**
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
702 * 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
703 * @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
704 * @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
705 */
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
706 protected List<State> getStates(Object context) {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
707 FLYSContext flysContext = RiverUtils.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
708 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
709 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
710 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
711 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
712
1067
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
713
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
714 /**
f364410c7bc9 Refactored (state access) to ease future development of more trivial artifacts.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1059
diff changeset
715 * 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
716 * @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
717 * @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
718 * @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
719 */
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
720 protected State getState(Object context, String stateID) {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
721 FLYSContext flysContext = RiverUtils.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
722 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
723 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
724 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
725 }
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
726
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
727
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
728 /**
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
729 * 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
730 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
731 * @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
732 */
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
733 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
734 return previousStateIds;
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
735 }
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
736
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
737
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
738 /**
1783
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
739 * 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
740 * @return #getPreviousStateIds() + #getCurrentStateId()
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 public List<String> getStateHistoryIds() {
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
743 ArrayList<String> prevIds = (ArrayList) getPreviousStateIds();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
744 ArrayList<String> allIds = (ArrayList) prevIds.clone();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
745
1783
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
746 allIds.add(getCurrentStateId());
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
747 return allIds;
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
748 }
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
749
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
750
376c81aa7d55 Added method to FLYSArtifact to access ids of states.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1777
diff changeset
751 /**
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
752 * 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
753 *
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
754 * @param name the name of the data object.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
755 * @param data the data object itself.
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
756 */
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
757 protected void addData(String name, StateData data) {
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
758 this.data.put(name, data);
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
759 }
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
760
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
761
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
762 /** 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
763 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
764 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
765 }
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
766
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
767
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
768 /**
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
769 * 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
770 * 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
771 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
772 * @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
773 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
774 * @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
775 */
298
fc694a43a7e5 Changed the visibility of getData() method of FLYSArtifacts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 140
diff changeset
776 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
777 return data.get(name);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
778 }
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
3920
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
781 /**
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
782 * 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
783 */
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
784 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
785 this.data = data;
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
786 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
787
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
788
2169
b817e680cf18 Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2141
diff changeset
789 /** 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
790 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
791 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
792 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
793 }
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
794
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
795
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
796 /**
2013
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
797 * 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
798 * 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
799 *
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
800 * @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
801 *
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
802 * @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
803 * 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
804 *
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
805 * @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
806 * 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
807 */
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
808 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
809 throws NumberFormatException
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 String value = getDataAsString(name);
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 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
814 return Integer.parseInt(value);
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
815 }
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
816
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
817 return null;
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
818 }
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
819
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
820
9d5f339d83a3 #380 Validate the user selected DEM in the server.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1895
diff changeset
821 /**
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
822 * 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
823 * 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
824 *
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
825 * @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
826 *
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
827 * @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
828 * 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
829 *
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
830 * @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
831 * 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
832 */
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
833 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
834 throws NumberFormatException
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 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
837
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
838 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
839 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
840 }
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
841
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
842 return null;
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
843 }
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
844
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
845
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
846 /**
c553d4fa3957 Moved the implementation of getDataAsDouble() from concrete Artifacts into FLYSArtifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2606
diff changeset
847 * 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
848 * pool of this Artifact as 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 * @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
851 *
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
852 * @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
853 * 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
854 *
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
855 * @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
856 * be transformed into a Long.
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 public Long getDataAsLong(String name)
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
859 throws NumberFormatException
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 String value = getDataAsString(name);
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 if (value != null && value.length() > 0) {
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
864 return Long.parseLong(value);
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
865 }
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
866
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
867 return null;
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
868 }
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
869
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
870
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
871 /**
bf67eb014443 Added convinience functions to FLYSArtifact and FLYSUtils.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2111
diff changeset
872 * 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
873 * 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
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 * @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
876 *
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 * @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
878 * 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
879 */
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 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
881 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
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 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
884 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
885 }
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
886
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
887 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
888 }
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
889
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
890
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
891 /**
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
892 * Add StateData containing a given string.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
893 * @param name Name of the data object.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
894 * @param value String to store.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
895 */
1724
0349dd524f9c Add convenience method to add default data as string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1709
diff changeset
896 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
897 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
898 }
0349dd524f9c Add convenience method to add default data as string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1709
diff changeset
899
3920
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
900 /**
8483d190b2e7 Convert FKYSArtifact data member to a private variable
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3883
diff changeset
901 * 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
902 * @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
903 */
960
92027887775a DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 958
diff changeset
904 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
905 return data.values();
92027887775a DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 958
diff changeset
906 }
92027887775a DataCage: Added a recommend() method to generate recommendations for
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 958
diff changeset
907
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
908
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
909 /** Return all produced facets. */
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
910 public List<Facet> getFacets() {
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
911 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
912
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
913 // Iterate over facets of each state.
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
914 for (List<Facet> fs: facets.values()) {
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
915 all.addAll(fs);
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
916 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
917
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
918 return all;
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
919 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
920
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
921
1771
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
922 /**
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
923 * 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
924 * facet.
c62ff9e72cea Restore mapping of state id to facets (revert, rev 3083 and 3088).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1765
diff changeset
925 * @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
926 * @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
927 */
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
928 public Facet getNativeFacet(Facet facet) {
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
929 String name = facet.getName();
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
930 int index = facet.getIndex();
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
931
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
932 for (List<Facet> fs: facets.values()) {
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
933 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
934 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
935 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
936 }
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
937 }
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
938 }
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
939
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
940 log.warn("Could not find facet: " + name + " at " + index);
4495
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
941 log.warn("Available facets for : " + getName() + " " + identifier() +
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
942 ": " + facets.values());
696
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
943 return null;
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
944 }
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
945
708b270dfd30 OutGenerators use now facets to fetch necessary data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 693
diff changeset
946
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
947 /**
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
948 * 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
949 *
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
950 * @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
951 * @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
952 */
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
953 public void saveData(Document feed, CallContext context)
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
954 throws IllegalArgumentException
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
955 {
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
956 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
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 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
959
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
960 NodeList nodes = (NodeList) XMLUtils.xpath(
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
961 feed,
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
962 XPATH_FEED_INPUT,
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
963 XPathConstants.NODESET,
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
964 ArtifactNamespaceContext.INSTANCE);
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
965
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
966 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
967 throw new IllegalArgumentException("error_feed_no_data");
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
968 }
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
969
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
970 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
971
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
972 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
973
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
974 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
975 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
976 }
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
977
708
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
978 String uri = ArtifactNamespaceContext.NAMESPACE_URI;
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
979
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
980 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
981
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
982 FLYSContext flysContext = RiverUtils.getFlysContext(context);
2205
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
983 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
984 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
985
708
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
986 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
987 Element node = (Element)nodes.item(i);
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
988
708
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
989 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
990 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
991
757ff56b43b3 Added calculation "am Pegel" version to the "Wasserspiegellage" calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
992 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
993 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
994 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
995 }
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
996
2205
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
997 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
998
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
999 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
1000 ? 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
1001 : 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
1002
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
1003 addData(
a22e0cb6eace Format the timerange (static ui) inserted in the 'historical discharge curves' calculation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2169
diff changeset
1004 name, current.transform(this, context, sd, name, value));
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
1005 }
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
1006 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
1007 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
1008 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
1009 }
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
1010 }
121
e0ded17a4846 Implemented the feed() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 119
diff changeset
1011 }
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
1012
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 981
diff changeset
1013 current.validate(this);
122
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
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1016
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 * 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
1019 * 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
1020 * TransitionEngine.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1021 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1022 * @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
1023 * @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
1024 *
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1025 * @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
1026 * otherwise false.
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1027 */
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1028 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
1029
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
1030 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
1031 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
1032 }
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1033
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
1034 FLYSContext flysContext = RiverUtils.getFlysContext(context);
122
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1035
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
1036 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
1037 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
1038 FLYSContext.STATE_ENGINE_KEY);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1039
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1040 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
1041 FLYSContext.TRANSITION_ENGINE_KEY);
d3b8b0b1d010 Implemented the step-forward part of the advance operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 121
diff changeset
1042
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
1043 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
1044 }
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1045
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1046
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1047 /**
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1048 * 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
1049 * 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
1050 *
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1051 * @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
1052 * @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
1053 */
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1054 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
1055 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
1056 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
1057 }
140
43f03f6047b9 Implemented the step-back part of the advance() operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 123
diff changeset
1058
3553
5da58c5c1517 FLYSArtifact: Some code simplifications.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3436
diff changeset
1059 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
1060 }
317
8f40a57229c3 FLYSArtifact provides methods to retrieve the real River, Gauge objects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 298
diff changeset
1061
8f40a57229c3 FLYSArtifact provides methods to retrieve the real River, Gauge objects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 298
diff changeset
1062
8f40a57229c3 FLYSArtifact provides methods to retrieve the real River, Gauge objects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 298
diff changeset
1063 /**
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1064 * 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
1065 *
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1066 * @return a hash code.
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1067 */
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1068 @Override
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1069 public String hash() {
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1070
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1071 long hash = 0L;
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1072 int shift = 3;
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1073
4050
975f608dd254 Cleaned up iterating over maps. Removed some dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3934
diff changeset
1074 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
1075 String key = entry.getKey();
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1076 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
1077
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1078 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
1079 | ((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
1080 shift += 2;
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1081 }
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1082
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1083 return getCurrentStateId() + hash;
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1084 }
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1085
1628
16c74ca3586e Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
1086
16c74ca3586e Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
1087 /**
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1088 * Return List of outputs, where combinations of outputname and filtername
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1089 * that match content in filterFacets is left out.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1090 * @return filtered Outputlist.
1628
16c74ca3586e Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1187
diff changeset
1091 */
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1092 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
1093 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
1094 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
1095 return outs;
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
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
1098 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
1099
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(
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1102 "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
1103 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1104
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1105 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
1106
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1107 for (Output out: outs) {
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1108 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
1109
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1110 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
1111 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
1112 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1113
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1114 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
1115 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
1116 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
1117 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
1118 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
1119 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
1120 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1121 }
1056
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 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
1124
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1125 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
1126 for (Facet fFacet: fFacets) {
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1127 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
1128 && 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
1129 resultFacets.add(facet);
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1130 break;
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1131 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1132 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1133 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1134
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1135 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
1136 log.debug(
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1137 "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
1138 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1139
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1140 if (!resultFacets.isEmpty()) {
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1141 DefaultOutput nout = new DefaultOutput(
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1142 out.getName(),
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1143 out.getDescription(),
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1144 out.getMimeType(),
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1145 resultFacets);
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1146 filtered.add(nout);
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1147 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1148 }
4403
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
1149 else if (debug) {
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
1150 log.debug("No filter Factes for Output: " + outName);
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
1151 }
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1152 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1153
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1154 if (debug) {
4403
d4f88fda6ed3 Improve debugging inf FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4206
diff changeset
1155 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
1156 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1157
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1158 return filtered;
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1159 }
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1160
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1161
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
1162 /**
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
1163 * 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
1164 * 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
1165 *
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
1166 * @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
1167 */
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 981
diff changeset
1168 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
1169 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
1170 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
1171 dumpArtifact();
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1172 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1173
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
1174 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
1175 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
1176
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1177 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
1178 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
1179 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
1180 }
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1181
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
1182 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
1183
1056
bd1b751deab3 Added optional positive filter for outs and facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1055
diff changeset
1184 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
1185 }
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1186
c256061287d7 Simplified the code to read all provided Outputs of an Artifact.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 942
diff changeset
1187
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
1188 /**
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
1189 * 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
1190 * @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
1191 */
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 981
diff changeset
1192 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
1193 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
1194
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1195 try {
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 981
diff changeset
1196 if (cur.validate(this)) {
981
799c7108ea6d datacage: prepared access to outs of artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 965
diff changeset
1197 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
1198 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1199 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1200 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
1201
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1202 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
1203 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1204
1137
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1205
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
1206 /**
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
1207 * 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
1208 * @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
1209 * @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
1210 */
981
799c7108ea6d datacage: prepared access to outs of artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 965
diff changeset
1211 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
1212
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1213 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
1214 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
1215 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
1216 }
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1217
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
1218 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
1219
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1220 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
1221 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
1222 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1223
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
1224 List<Output> list = state.getOutputs();
3555
b1912514e0f5 s/container.size() == 0/container.isEmpty()/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3554
diff changeset
1225 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
1226 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
1227 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
1228 }
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
1229 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
1230 }
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
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1232 String stateId = state.getID();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1233
4497
a2735a4bf75e Change facets member variable to private
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4496
diff changeset
1234 List<Facet> fs = getFacets(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
1235
3555
b1912514e0f5 s/container.size() == 0/container.isEmpty()/
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3554
diff changeset
1236 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
1237 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
1238 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
1239 }
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 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
1241 }
4495
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
1242 if (debug) {
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
1243 log.debug("State '" + stateId + "' has facets " + fs);
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
1244 }
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
1245
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1246 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
1247
3436
0d63581c5df1 FLYSArtifact: Prevent NPE in getOutputForState(). Why does this happen?
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3306
diff changeset
1248 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
1249 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
1250 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1251
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1252 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
1253 }
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1254
79251b1d47da Modified the CollectionMonitor to recommend artifacts for the current state's outputs only.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 960
diff changeset
1255
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1256 /**
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1257 * 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
1258 * of output.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1259 *
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1260 * @param list List of outputs
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1261 * @param fs List of facets
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1262 */
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
1263 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
1264 List<Output> generated = new ArrayList<Output>();
4495
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
1265 log.debug("generateOutputs for Artifact " + getName() + " "
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
1266 + identifier());
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
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
1268 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
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 for (Output out: list) {
4495
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
1271 log.debug("check facets for output: " + out.getName());
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
1272 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
1273 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
1274 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
1275 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
1276 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
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 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
1279
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 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
1281 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
1282 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
1283 }
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 }
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 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
1287 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
1288 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
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 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
1291 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
1292 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
1293 }
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
1294 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
1295 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
1296 }
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
1297 }
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
1298
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
1299 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
1300 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
1301 }
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
1302 }
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
1303
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
1304 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
1305 }
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
1306
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
1307
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
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 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
1310 * 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
1311 * 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
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 */
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1315 public Object compute(
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1316 CallContext context,
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1317 ComputeType type,
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1318 boolean generateFacets
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1319 ) {
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1320 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
1321 }
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
1322
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
1323
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
1324 /**
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
1325 * 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
1326 * 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
1327 * 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
1328 *
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
1329 * @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
1330 * @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
1331 * 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
1332 *
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
1333 * @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
1334 */
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1335 public Object compute(
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1336 CallContext context,
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1337 String hash,
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1338 ComputeType type,
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1339 boolean generateFacets
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1340 ) {
693
af393c5eb2c8 Write computed facets into artifacts describe document.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 692
diff changeset
1341 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
1342 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
1343 }
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
1344
1704
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
1345
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
1346 /**
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
1347 * Like compute, but identify State by it id (string).
e8627d1e2db6 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1656
diff changeset
1348 */
722
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1349 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
1350 CallContext context,
1117
ea80e652f033 Reordered some parameters in a FLYSArtifact method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1094
diff changeset
1351 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
1352 String stateID,
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 741
diff changeset
1353 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
1354 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
1355 ) {
2141
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2128
diff changeset
1356 DefaultState current =
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2128
diff changeset
1357 (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
1358 ? (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
1359 : (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
1360
4800230fba8a Improved situtation on rendering "Abflusskurve am Pegel". Not fully working, yet.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 708
diff changeset
1361 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
1362 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
1363 }
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
1364
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1365 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
1366 }
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
1367
1137
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1368
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1369 /**
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
1370 * 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
1371 *
1137
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1372 * @param key key of state
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1373 * @param state state
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1374 * @param type Type of compute
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1375 * @param generateFacets Whether new facets shall be generated.
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1376 */
690
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1377 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
1378 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
1379 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
1380 DefaultState state,
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1381 ComputeType type,
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1382 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
1383 ) {
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
1384 String stateID = state.getID();
691
2600aa2c7319 Store facets for each state.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 690
diff changeset
1385
1137
073c36bb94ed Minor cosmetics
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1117
diff changeset
1386 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
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 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
1389 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
1390
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 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
1392
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 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
1394 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
1395 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
1396 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
1397 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
1398 }
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 }
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3193
diff changeset
1400 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
1401 log.debug("cache not configured.");
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3193
diff changeset
1402 }
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
1403
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 Object res;
690
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1405 switch (type) {
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1406 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
1407 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
1408 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
1409 case ADVANCE:
700
94f0f91be11c call computeAdvance() if we want to advance.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 699
diff changeset
1410 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
1411 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
1412 case INIT:
958
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 952
diff changeset
1413 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
1414 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
1415 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
1416 }
690
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1417
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
1418 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
1419 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
1420 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
1421 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
1422 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
1423 }
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
1424
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
1425 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
1426 }
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
1427 finally {
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1428 if (generateFacets) {
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1429 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
1430 facets.remove(stateID);
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1431 }
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1432 else {
3934
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1433 addFacets(stateID, fs);
705
853dceead0f4 Only generate facets when needed.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 704
diff changeset
1434 }
690
3481cd37e609 Use enums to dispatch computeFeed() and computeAdvance().
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 689
diff changeset
1435 }
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1436 }
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1437 }
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1438
3934
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1439 /**
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1440 * Sets the facets for an ID
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1441 *
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1442 * Normally the id is a state ID.
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1443 *
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1444 * @param id ID to map the facets to
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1445 * @param facets List of facets to be stored
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1446 */
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1447 protected void addFacets(String id, List<Facet> facets) {
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1448 this.facets.put(id, facets);
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1449 }
33fcc786f246 Add FLYSArtifact addFacets method
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3920
diff changeset
1450
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 661
diff changeset
1451
623
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1452 /**
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1453 * 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
1454 */
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1455 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
1456 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
1457 // Include uuid, type, name
4495
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
1458 log.debug(" - Name: " + getName());
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
1459 log.debug(" - UUID: " + identifier());
c095eb67c975 Improve loggin in FLYSArtifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4433
diff changeset
1460 log.debug(" - Class: " + this.getClass().getName());
623
aa64fe4df8ab Added a method to dump the artifacts state/data.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 459
diff changeset
1461
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
1462 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
1463 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
1464
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
1465 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
1466 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
1467 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
1468
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
1469 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
1470 }
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1471
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
1472 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
1473 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
1474
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
1475 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
1476 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
1477 }
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
1478
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
1479 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
1480
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
1481 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
1482 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
1483
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
1484 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
1485 }
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
1486
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
1487
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1488 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
1489 log.debug("######### FACETS #########");
2095
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1490
4050
975f608dd254 Cleaned up iterating over maps. Removed some dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3934
diff changeset
1491 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
1492 String out = entry.getKey();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1493 List<Facet> fs = entry.getValue();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1494 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
1495 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
1496 }
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
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("######## FACETS END ########");
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
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1503 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
1504 log.debug("######## FILTER FACETS ########");
2095
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 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
1507 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
1508 return;
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1509 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1510
4050
975f608dd254 Cleaned up iterating over maps. Removed some dead code.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3934
diff changeset
1511 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
1512 String out = entry.getKey();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1513 List<Facet> filters = entry.getValue();
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1514
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
1515 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
1516
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1517 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
1518 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
1519 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1520 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1521
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
1522 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
1523 }
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1524
8cb679d4ec49 Implemented initialize() in FloodMapState to enable cloning floodmaps.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2093
diff changeset
1525
4206
6b0683f5c530 Documentation added, cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4147
diff changeset
1526 /** 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
1527 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
1528 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
1529 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
1530 }
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
1531
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
1532
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
1533 /**
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
1534 * 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
1535 *
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
1536 * @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
1537 * @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
1538 */
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
1539 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
1540 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
1541 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
1542 }
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
1543 }
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
1544
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
1545
1763
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1546 /**
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1547 * Destroy the states.
0e748e8972b5 Cosmetics, docs.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1724
diff changeset
1548 */
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
1549 @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
1550 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
1551 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
1552 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
1553 }
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
1554
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1555 ArrayList<String> ids = (ArrayList<String>) getPreviousStateIds();
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1556 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
1557
2606
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1558 toDestroy.add(getCurrentStateId());
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1559
619f6dfec901 #460 Fixed duplicated Outputs in DESCRIBE documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2205
diff changeset
1560 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
1561 }
4496
d8992459b408 Add method to return the facets of an artifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4495
diff changeset
1562
d8992459b408 Add method to return the facets of an artifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4495
diff changeset
1563 /**
d8992459b408 Add method to return the facets of an artifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4495
diff changeset
1564 * Return the Facets which a state provides
d8992459b408 Add method to return the facets of an artifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4495
diff changeset
1565 * @param stateid String that identifies the state
d8992459b408 Add method to return the facets of an artifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4495
diff changeset
1566 * @return List of Facets belonging to the state identifier
d8992459b408 Add method to return the facets of an artifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4495
diff changeset
1567 */
d8992459b408 Add method to return the facets of an artifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4495
diff changeset
1568 protected List<Facet> getFacets(String stateid) {
d8992459b408 Add method to return the facets of an artifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4495
diff changeset
1569 return this.facets.get(stateid);
d8992459b408 Add method to return the facets of an artifact
Björn Ricks <bjoern.ricks@intevation.de>
parents: 4495
diff changeset
1570 }
119
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1571 }
84c0b151203e Added a FLYSArtifact that serves as the default artifact for the FLYS application.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1572 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org