annotate artifacts/src/main/java/org/dive4elements/river/artifacts/D4EArtifact.java @ 7844:2abcd7df4e5d

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

http://dive4elements.wald.intevation.org