annotate artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContextFactory.java @ 8086:7ede7904c8a5

Be more tolerant with not existing artifact configurations.
author Sascha L. Teichmann <teichmann@intevation.de>
date Tue, 12 Aug 2014 10:57:53 +0200
parents cd04a7389389
children 2fcbcc9bb59a
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: 5867
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: 5867
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: 5152
diff changeset
9 package org.dive4elements.river.artifacts.context;
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
11 import java.io.File;
4656
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4629
diff changeset
12
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import java.util.ArrayList;
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
14 import java.util.HashMap;
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import java.util.List;
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
16 import java.util.Map;
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import javax.xml.xpath.XPathConstants;
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import org.apache.log4j.Logger;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
21
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
22 import org.dive4elements.artifactdatabase.state.State;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
23 import org.dive4elements.artifactdatabase.state.StateEngine;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
24
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
25 import org.dive4elements.artifactdatabase.transition.Transition;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
26 import org.dive4elements.artifactdatabase.transition.TransitionEngine;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
27
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
28 import org.dive4elements.artifacts.ArtifactContextFactory;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
29 import org.dive4elements.artifacts.GlobalContext;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
30
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
31 import org.dive4elements.artifacts.common.utils.Config;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
32 import org.dive4elements.artifacts.common.utils.ElementConverter;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
33 import org.dive4elements.artifacts.common.utils.XMLUtils;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
34
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
35 import org.dive4elements.river.artifacts.model.Module;
7756
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
36 import org.dive4elements.river.artifacts.model.RiverFactory;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
37 import org.dive4elements.river.artifacts.model.ZoomScale;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
38
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
39 import org.dive4elements.river.artifacts.states.StateFactory;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
40
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
41 import org.dive4elements.river.artifacts.transitions.TransitionFactory;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
42
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7099
diff changeset
43 import org.dive4elements.river.exports.GeneratorLookup;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
44 import org.dive4elements.river.exports.OutGenerator;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
45
7756
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
46 import org.dive4elements.river.model.River;
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
47 import org.dive4elements.river.themes.Theme;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
48 import org.dive4elements.river.themes.ThemeFactory;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
49 import org.dive4elements.river.themes.ThemeGroup;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
50 import org.dive4elements.river.themes.ThemeMapping;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
51
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 import org.w3c.dom.Document;
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 import org.w3c.dom.Element;
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
54 import org.w3c.dom.Node;
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 import org.w3c.dom.NodeList;
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 /**
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 * The ArtifactContextFactory is used to initialize basic components and put
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 * them into the global context of the application.
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 *
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 */
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
63 public class RiverContextFactory implements ArtifactContextFactory {
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64
1826
8d9b573d1b9a Minor comsetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1822
diff changeset
65 /** The logger that is used in this class. */
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
66 private static Logger logger = Logger.getLogger(RiverContextFactory.class);
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 /** The XPath to the artifacts configured in the configuration. */
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 public static final String XPATH_ARTIFACTS =
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 "/artifact-database/artifacts/artifact";
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 /** The XPath to the name of the artifact. */
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
73 public static final String XPATH_ARTIFACT_NAME = "/artifact/@name";
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 /** The XPath to the xlink ref in an artifact configuration. */
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 public static final String XPATH_XLINK = "xlink:href";
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 /** The XPath to the transitions configured in the artifact config. */
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 public static final String XPATH_TRANSITIONS =
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 "/artifact/states/transition";
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
82 /** The XPath to the states configured in the artifact config. */
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
83 public static final String XPATH_STATES =
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
84 "/artifact/states/state";
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
85
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
86 public static final String XPATH_OUTPUT_GENERATORS =
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
87 "/artifact-database/output-generators/output-generator";
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
88
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
89 public static final String XPATH_THEME_CONFIG =
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
90 "/artifact-database/flys/themes/configuration/text()";
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
91
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
92 public static final String XPATH_THEMES =
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
93 "theme";
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
94
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
95 public static final String XPATH_THEME_GROUPS =
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
96 "/themes/themegroup";
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
97
345
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
98 public static final String XPATH_THEME_MAPPINGS =
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
99 "/themes/mappings/mapping";
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
100
958
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
101 public static final String XPATH_RIVER_WMS =
1062
ee105e5d5ead Repaired broken river wms initialization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 958
diff changeset
102 "/artifact-database/floodmap/river";
958
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
103
3630
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
104 public static final String XPATH_MODULES = "/artifact-database/modules/module";
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
105
4619
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
106 private static final String XPATH_ZOOM_SCALES = "/artifact-database/options/zoom-scales/zoom-scale";
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
107
5152
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
108 private static final String XPATH_DGM_PATH = "/artifact-database/options/dgm-path/text()";
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
109
6933
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
110 private static GlobalContext GLOBAL_CONTEXT_INSTANCE;
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
111
5152
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
112
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 /**
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
114 * Creates a new D4EArtifactContext object and initialize all
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115 * components required by the application.
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 *
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 * @param config The artifact server configuration.
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5866
diff changeset
118 * @return a D4EArtifactContext.
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 */
4656
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4629
diff changeset
120 @Override
939
32d0a543e3e8 Adapted a method signature of FLYSContextFactory to apply the changes in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 345
diff changeset
121 public GlobalContext createArtifactContext(Document config) {
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
122 RiverContext context = new RiverContext(config);
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 configureTransitions(config, context);
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
125 configureStates(config, context);
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
126 configureOutGenerators(config, context);
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
127 configureThemes(config, context);
345
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
128 configureThemesMappings(config, context);
4656
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4629
diff changeset
129 configureFloodmapWMS(config, context);
3630
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
130 configureModules(config, context);
4619
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
131 configureZoomScales(config, context);
5152
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
132 configureDGMPath(config, context);
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133
6933
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
134 synchronized (RiverContextFactory.class) {
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
135 GLOBAL_CONTEXT_INSTANCE = context;
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
136 }
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
137
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 return context;
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139 }
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140
6933
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
141 public static synchronized GlobalContext getGlobalContext() {
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
142 return GLOBAL_CONTEXT_INSTANCE;
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
143 }
468d9ebda4ce Datacage: Add dc:all-state-successors() to enable predicates like dc:contains(dc:all-state-successors($artifact-name, $current-state-id), 'state.winfo.calculation_mode') which recursively collects all successor state ids an check for containment.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
144
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
145
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
146 private void configureDGMPath(Document config, RiverContext context) {
5152
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
147 String dgmPath = (String) XMLUtils.xpath(
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
148 config,
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
149 XPATH_DGM_PATH,
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
150 XPathConstants.STRING);
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
151
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
152 context.put("dgm-path", dgmPath);
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
153 }
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
154
b26465581abf Add a configurable path prefix to relative DGM path to allways have an absolute path.
Raimund Renkert <rrenkert@intevation.de>
parents: 4656
diff changeset
155
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
156 protected void configureZoomScales(Document config, RiverContext context) {
4619
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
157 NodeList list = (NodeList)XMLUtils.xpath(
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
158 config,
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
159 XPATH_ZOOM_SCALES,
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
160 XPathConstants.NODESET);
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
161 ZoomScale scale = new ZoomScale();
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
162 for (int i = 0; i < list.getLength(); i++) {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
163 Element element = (Element)list.item(i);
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
164 String river = "default";
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
165 double range = 0d;
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
166 double radius = 10d;
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
167 if (element.hasAttribute("river")) {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
168 river = element.getAttribute("river");
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
169 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
170 if (!element.hasAttribute("range")) {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
171 continue;
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
172 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
173 else {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
174 String r = element.getAttribute("range");
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
175 try {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
176 range = Double.parseDouble(r);
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
177 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
178 catch (NumberFormatException nfe) {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
179 continue;
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
180 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
181 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
182 if (!element.hasAttribute("radius")) {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
183 continue;
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
184 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
185 else {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
186 String r = element.getAttribute("radius");
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
187 try {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
188 radius = Double.parseDouble(r);
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
189 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
190 catch (NumberFormatException nfe) {
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
191 continue;
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
192 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
193 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
194 scale.addRange(river, range, radius);
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
195 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
196 context.put("zoomscale", scale);
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
197 }
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
198
05c9902c761d Added example config for river 'Elbe' and read the config in context factory.
Raimund Renkert <rrenkert@intevation.de>
parents: 4051
diff changeset
199
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 /**
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201 * This method initializes the transition configuration.
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202 *
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 * @param config the config document.
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
204 * @param context the RiverContext.
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 */
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
206 protected void configureTransitions(Document config, RiverContext context) {
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 TransitionEngine engine = new TransitionEngine();
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208
8086
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
209 List<Document> artifacts = getArtifactConfigurations(config);
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
210 logger.info("Found " + artifacts.size() + " artifacts in the config.");
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
211
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212 for (Document doc: artifacts) {
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
213
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
214 String artName = (String) XMLUtils.xpath(
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
215 doc, XPATH_ARTIFACT_NAME, XPathConstants.STRING);
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
216
111
7222d8fb53ea Changed the way of storing transitions in the TransitionEngine.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
217 NodeList list = (NodeList) XMLUtils.xpath(
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
218 doc, XPATH_TRANSITIONS, XPathConstants.NODESET);
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
219
111
7222d8fb53ea Changed the way of storing transitions in the TransitionEngine.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
220 if (list == null) {
2141
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1828
diff changeset
221 logger.warn("The artifact " + artName +
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1828
diff changeset
222 " has no transitions configured.");
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
223 continue;
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
224 }
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
225
111
7222d8fb53ea Changed the way of storing transitions in the TransitionEngine.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
226 int trans = list.getLength();
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
227
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
228 logger.info(
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
229 "Artifact '" + artName + "' has " + trans + " transitions.");
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
230
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
231 for (int i = 0; i < trans; i++) {
111
7222d8fb53ea Changed the way of storing transitions in the TransitionEngine.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
232 Transition t = TransitionFactory.createTransition(list.item(i));
7222d8fb53ea Changed the way of storing transitions in the TransitionEngine.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
233 String s = t.getFrom();
7222d8fb53ea Changed the way of storing transitions in the TransitionEngine.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 107
diff changeset
234 engine.addTransition(s, t);
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
235 }
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
236 }
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
237
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
238 context.put(RiverContext.TRANSITION_ENGINE_KEY, engine);
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
239 }
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
240
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
242 /**
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
243 * This method returns all artifact documents defined in
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
244 * <code>config</code>. <br>NOTE: The artifact configurations need to be
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
245 * stored in own files referenced by an xlink.
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
246 *
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
247 * @param config The global configuration.
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
248 *
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
249 * @return an array of Artifact configurations.
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
250 */
8086
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
251 protected List<Document> getArtifactConfigurations(Document config) {
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
252 NodeList artifacts = (NodeList) XMLUtils.xpath(
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
253 config, XPATH_ARTIFACTS, XPathConstants.NODESET);
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
254
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
255 int count = artifacts.getLength();
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
256
8086
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
257 ArrayList<Document> docs = new ArrayList<Document>(count);
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
258
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
259 for (int i = 0; i < count; i++) {
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
260 Element tmp = (Element) artifacts.item(i);
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
261
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
262 String xlink = tmp.getAttribute(XPATH_XLINK);
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
263 xlink = Config.replaceConfigDir(xlink);
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
264
8086
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
265 File file = new File(xlink);
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
266 if (!file.isFile() || !file.canRead()) {
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
267 logger.warn("Artifact configuration '" + file + "' not found.");
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
268 continue;
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
269 }
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
270
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
271 Document doc = XMLUtils.parseDocument(file);
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
272 if (doc != null) {
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
273 docs.add(doc);
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
274 }
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
275 }
8086
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
276 return docs;
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
277 }
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
278
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
279
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
280 /**
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
281 * This method initializes the transition configuration.
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
282 *
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
283 * @param config the config document.
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
284 * @param context the RiverContext.
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
285 */
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
286 protected void configureStates(Document config, RiverContext context) {
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
287 StateEngine engine = new StateEngine();
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
288
8086
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
289 List<Document> artifacts = getArtifactConfigurations(config);
7ede7904c8a5 Be more tolerant with not existing artifact configurations.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7756
diff changeset
290 logger.info("Found " + artifacts.size() + " artifacts in the config.");
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
291
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
292 for (Document doc: artifacts) {
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
293 List<State> states = new ArrayList<State>();
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
294
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
295 String artName = (String) XMLUtils.xpath(
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
296 doc, XPATH_ARTIFACT_NAME, XPathConstants.STRING);
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
297
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
298 NodeList stateList = (NodeList) XMLUtils.xpath(
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
299 doc, XPATH_STATES, XPathConstants.NODESET);
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
300
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
301 if (stateList == null) {
2141
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1828
diff changeset
302 logger.warn("The artifact " + artName +
79a94c4171cb Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1828
diff changeset
303 " has no states configured.");
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
304 continue;
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
305 }
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
306
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
307 int count = stateList.getLength();
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
308
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
309 logger.info(
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
310 "Artifact '" + artName + "' has " + count + " states.");
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
311
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
312 for (int i = 0; i < count; i++) {
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
313 states.add(StateFactory.createState(
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
314 stateList.item(i)));
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
315 }
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
316
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
317 engine.addStates(artName, states);
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
318 }
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
319
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
320 context.put(RiverContext.STATE_ENGINE_KEY, engine);
107
a228b39494a9 Improved the bootstrap process - the states are initialized.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 106
diff changeset
321 }
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
322
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
323
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
324 /**
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
325 * This method intializes the provided output generators.
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
326 *
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
327 * @param config the config document.
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
328 * @param context the RiverContext.
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
329 */
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
330 protected void configureOutGenerators(Document config, RiverContext context){
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
331
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
332 NodeList outGenerators = (NodeList) XMLUtils.xpath(
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
333 config,
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
334 XPATH_OUTPUT_GENERATORS,
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
335 XPathConstants.NODESET);
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
336
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
337 int num = outGenerators == null ? 0 : outGenerators.getLength();
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
338
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
339 if (num == 0) {
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
340 logger.warn("No output generators configured in this application.");
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
341 return;
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
342 }
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
343
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
344 logger.info("Found " + num + " configured output generators.");
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
345
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7099
diff changeset
346 GeneratorLookup generators = new GeneratorLookup();
7037
5c6fd2c010dd Add setup(Element config) method to Generator interface to be initialized from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6933
diff changeset
347
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
348 int idx = 0;
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
349
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
350 for (int i = 0; i < num; i++) {
7037
5c6fd2c010dd Add setup(Element config) method to Generator interface to be initialized from configuration.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6933
diff changeset
351 Element item = (Element)outGenerators.item(i);
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
352
7074
a2abd87c0d3b Trim "names" and "class" attribute of out generators before using.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7073
diff changeset
353 String names = item.getAttribute("names").trim();
a2abd87c0d3b Trim "names" and "class" attribute of out generators before using.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7073
diff changeset
354 String clazz = item.getAttribute("class").trim();
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
355 String converter = item.getAttribute("converter").trim();
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
356
7074
a2abd87c0d3b Trim "names" and "class" attribute of out generators before using.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7073
diff changeset
357 if (names.isEmpty() || clazz.isEmpty()) {
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
358 continue;
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
359 }
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
360
7073
beb9e94f04d3 Allow comma separated names in "names" attribute in out generators to allow registering for more than one name. Old "name" attribute is removed.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7072
diff changeset
361 Class<OutGenerator> generatorClass = null;
beb9e94f04d3 Allow comma separated names in "names" attribute in out generators to allow registering for more than one name. Old "name" attribute is removed.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7072
diff changeset
362
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
363 try {
7073
beb9e94f04d3 Allow comma separated names in "names" attribute in out generators to allow registering for more than one name. Old "name" attribute is removed.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7072
diff changeset
364 generatorClass = (Class<OutGenerator>)Class.forName(clazz);
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
365 }
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
366 catch (ClassNotFoundException cnfe) {
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
367 logger.error(cnfe, cnfe);
7073
beb9e94f04d3 Allow comma separated names in "names" attribute in out generators to allow registering for more than one name. Old "name" attribute is removed.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7072
diff changeset
368 continue;
beb9e94f04d3 Allow comma separated names in "names" attribute in out generators to allow registering for more than one name. Old "name" attribute is removed.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7072
diff changeset
369 }
beb9e94f04d3 Allow comma separated names in "names" attribute in out generators to allow registering for more than one name. Old "name" attribute is removed.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7072
diff changeset
370
7099
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
371 Object cfg = null;
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
372
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
373 if (!converter.isEmpty()) {
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
374 try {
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
375 ElementConverter ec =
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
376 (ElementConverter)Class.forName(converter)
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
377 .newInstance();
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
378 cfg = ec.convert(item);
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
379 }
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
380 catch (ClassNotFoundException cnfe) {
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
381 logger.error(cnfe, cnfe);
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
382 }
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
383 catch (InstantiationException ie) {
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
384 logger.error(ie);
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
385 }
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
386 catch (IllegalAccessException iae) {
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
387 logger.error(iae);
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
388 }
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
389 }
24f153ad1f40 Use pre-converted diagram attributes now.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7074
diff changeset
390
7074
a2abd87c0d3b Trim "names" and "class" attribute of out generators before using.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7073
diff changeset
391 for (String key: names.split("[\\s,]")) {
7073
beb9e94f04d3 Allow comma separated names in "names" attribute in out generators to allow registering for more than one name. Old "name" attribute is removed.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7072
diff changeset
392 if (!(key = key.trim()).isEmpty()) {
7226
8ab618dda850 Made lookup for generators a class of its own. First step to use it as a compat filter for facets, too.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7099
diff changeset
393 generators.putGenerator(key, generatorClass, cfg);
7073
beb9e94f04d3 Allow comma separated names in "names" attribute in out generators to allow registering for more than one name. Old "name" attribute is removed.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7072
diff changeset
394 idx++;
beb9e94f04d3 Allow comma separated names in "names" attribute in out generators to allow registering for more than one name. Old "name" attribute is removed.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7072
diff changeset
395 }
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
396 }
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
397 }
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
398
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
399 logger.info("Successfully loaded " + idx + " output generators.");
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
400 context.put(RiverContext.OUTGENERATORS_KEY, generators);
7227
744df5a03337 Use diagram configuration and there processors to define compatible facets in loaded data.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7226
diff changeset
401 context.put(RiverContext.FACETFILTER_KEY, generators);
295
53c155bfde07 Added code to parse the configured OutGenerators in the global configuration and to save a map of such in the FLYSContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 130
diff changeset
402 }
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
403
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
404
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
405 /**
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
406 * This methods reads the configured themes and puts them into the
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
407 * RiverContext.
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
408 *
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
409 * @param config The global configuration.
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
410 * @param context The RiverContext.
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
411 */
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
412 protected void configureThemes(Document config, RiverContext context) {
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
413 logger.debug("RiverContextFactory.configureThemes");
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
414
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
415 Document cfg = getThemeConfig(config);
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
416
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
417 NodeList themeGroups = (NodeList) XMLUtils.xpath(
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
418 cfg, XPATH_THEME_GROUPS, XPathConstants.NODESET);
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
419
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
420 int groupNum = themeGroups != null ? themeGroups.getLength() : 0;
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
421
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
422 if (groupNum == 0) {
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
423 logger.warn("There are no theme groups configured!");
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
424 }
3256
17ca0a43027a Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3239
diff changeset
425
3239
fb11bd37ddb8 Improved the structure of themes.xml; moved theme groups to own XML files.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2742
diff changeset
426 logger.info("Found " + groupNum + " theme groups in configuration");
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
427
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
428 List<ThemeGroup> groups = new ArrayList<ThemeGroup>();
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
429
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
430 for (int g = 0; g < groupNum; g++) {
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
431 Element themeGroup = (Element) themeGroups.item(g);
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
432 NodeList themes = (NodeList) XMLUtils.xpath(
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
433 themeGroup, XPATH_THEMES, XPathConstants.NODESET);
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
434
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
435 int num = themes != null ? themes.getLength() : 0;
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
436
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
437 if (num == 0) {
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
438 logger.warn("There are no themes configured!");
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
439 return;
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
440 }
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
441
3239
fb11bd37ddb8 Improved the structure of themes.xml; moved theme groups to own XML files.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2742
diff changeset
442 logger.info("Theme group has " + num + " themes.");
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
443
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
444 Map<String, Theme> theThemes = new HashMap<String, Theme>();
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
445
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
446 for (int i = 0; i < num; i++) {
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
447 Node theme = themes.item(i);
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
448
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
449 Theme theTheme = ThemeFactory.createTheme(cfg, theme);
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
450
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
451 if (theme != null) {
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
452 theThemes.put(theTheme.getName(), theTheme);
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
453 }
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
454 }
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
455 String gName = themeGroup.getAttribute("name");
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
456 groups.add(new ThemeGroup(gName, theThemes));
3256
17ca0a43027a Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3239
diff changeset
457
3239
fb11bd37ddb8 Improved the structure of themes.xml; moved theme groups to own XML files.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2742
diff changeset
458 logger.info(
fb11bd37ddb8 Improved the structure of themes.xml; moved theme groups to own XML files.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2742
diff changeset
459 "Initialized " + theThemes.size() + "/" + num + " themes " +
fb11bd37ddb8 Improved the structure of themes.xml; moved theme groups to own XML files.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2742
diff changeset
460 "of theme-group '" + gName + "'");
2737
83b22ccf48da Introduced theme groups and added new service to get themes filtered by name.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2141
diff changeset
461 }
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
462 context.put(RiverContext.THEMES, groups);
341
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
463 }
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
464
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
465 /**
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
466 * This method is used to retrieve the theme configuration document.
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
467 *
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
468 * @param config The global configuration.
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
469 *
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
470 * @return the theme configuration.
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
471 */
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
472 protected Document getThemeConfig(Document config) {
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
473 String themeConfig = (String) XMLUtils.xpath(
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
474 config,
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
475 XPATH_THEME_CONFIG,
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
476 XPathConstants.STRING);
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
477
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
478 themeConfig = Config.replaceConfigDir(themeConfig);
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
479
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
480 logger.debug("Parse theme cfg: " + themeConfig);
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
481
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
482 return XMLUtils.parseDocument(new File(themeConfig));
eca7892bf8ff Added a first small theme configuration and code to read it.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 295
diff changeset
483 }
345
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
484
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
485
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
486 protected void configureThemesMappings(Document cfg, RiverContext context) {
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
487 logger.debug("RiverContextFactory.configureThemesMappings");
345
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
488
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
489 Document config = getThemeConfig(cfg);
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
490
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
491 NodeList mappings = (NodeList) XMLUtils.xpath(
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
492 config, XPATH_THEME_MAPPINGS, XPathConstants.NODESET);
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
493
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
494 int num = mappings != null ? mappings.getLength() : 0;
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
495
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
496 if (num == 0) {
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
497 logger.warn("No theme <--> facet mappins found!");
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
498 return;
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
499 }
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
500
1747
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
501 Map<String, List<ThemeMapping>> mapping =
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
502 new HashMap<String, List<ThemeMapping>>();
345
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
503
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
504 for (int i = 0; i < num; i++) {
2742
faf73245ec73 Improved startup performance.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2737
diff changeset
505 Element node = (Element)mappings.item(i);
345
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
506
2742
faf73245ec73 Improved startup performance.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2737
diff changeset
507 String from = node.getAttribute("from");
faf73245ec73 Improved startup performance.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2737
diff changeset
508 String to = node.getAttribute("to");
faf73245ec73 Improved startup performance.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2737
diff changeset
509 String pattern = node.getAttribute("pattern");
faf73245ec73 Improved startup performance.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2737
diff changeset
510 String masterAttrPattern = node.getAttribute("masterAttr");
faf73245ec73 Improved startup performance.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2737
diff changeset
511 String outputPattern = node.getAttribute("output");
1747
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
512
2742
faf73245ec73 Improved startup performance.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2737
diff changeset
513 if (from.length() > 0 && to.length() > 0) {
1747
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
514 List<ThemeMapping> tm = mapping.get(from);
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
515
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
516 if (tm == null) {
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
517 tm = new ArrayList<ThemeMapping>();
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
518 mapping.put(from, tm);
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
519 }
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
520
1822
6ed439ff61bf Changed theme-mapping mechanism to include further condition (on master-artifacts attributes), added point themes for longitudinal.ws for calculations at locations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1747
diff changeset
521 tm.add(new ThemeMapping(
1828
9562ca537143 Added new optional condition for theme-mappings: the output name.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1826
diff changeset
522 from, to, pattern, masterAttrPattern, outputPattern));
345
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
523 }
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
524 }
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
525
1747
d2a17e990c70 Improved the Themes: we now support special themes for facets which need to match a given pattern string.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1062
diff changeset
526 logger.debug("Found " + mapping.size() + " theme mappings.");
345
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
527
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
528 context.put(RiverContext.THEME_MAPPING, mapping);
345
88a669785863 Initialized the facet2theme mappings configured in themes.xml and added a function to the ThemeFactory that retrieves a theme from FLYSContext based on its name.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 341
diff changeset
529 }
958
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
530
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
531
4656
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4629
diff changeset
532 /**
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4629
diff changeset
533 * Reads configured floodmap river WMSs from floodmap.xml and
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
534 * loads them into the given RiverContext.
4656
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4629
diff changeset
535 * @param cfg
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4629
diff changeset
536 * @param context
442fbb290fa8 Introduce river mapfile generation (WARNING: Changes in config xml files required!).
Christian Lins <christian.lins@intevation.de>
parents: 4629
diff changeset
537 */
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
538 protected void configureFloodmapWMS(Document cfg, RiverContext context) {
958
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
539 Map<String, String> riverWMS = new HashMap<String, String>();
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
540
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
541 NodeList rivers = (NodeList) XMLUtils.xpath(
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
542 cfg, XPATH_RIVER_WMS, XPathConstants.NODESET);
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
543
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
544 int num = rivers != null ? rivers.getLength() : 0;
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
545
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
546 for (int i = 0; i < num; i++) {
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
547 Element e = (Element) rivers.item(i);
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
548
1062
ee105e5d5ead Repaired broken river wms initialization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 958
diff changeset
549 String river = e.getAttribute("name");
ee105e5d5ead Repaired broken river wms initialization.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 958
diff changeset
550 String url = XMLUtils.xpathString(e, "river-wms/@url", null);
958
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
551
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
552 if (river != null && url != null) {
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
553 riverWMS.put(river, url);
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
554 }
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
555 }
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
556
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
557 logger.debug("Found " + riverWMS.size() + " river WMS.");
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
558
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
559 context.put(RiverContext.RIVER_WMS, riverWMS);
958
ae198bef4ba0 Added configurations for river WMSe (currently for Saar, Mosel, Elbe).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 939
diff changeset
560 }
3630
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
561
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
562
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
563 /**
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
564 * This method initializes the modules configuration.
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
565 *
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
566 * @param config the config document.
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
567 * @param context the RiverContext.
3630
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
568 */
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
569 protected void configureModules(Document cfg, RiverContext context) {
3630
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
570 NodeList modulenodes = (NodeList) XMLUtils.xpath(
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
571 cfg, XPATH_MODULES, XPathConstants.NODESET);
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
572
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
573 int num = modulenodes != null ? modulenodes.getLength() : 0;
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
574 ArrayList<Module> modules = new ArrayList<Module>(num);
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
575
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
576 for (int i = 0; i < num; i++) {
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
577 Element e = (Element) modulenodes.item(i);
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
578 String modulename = e.getAttribute("name");
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
579 String attrselected = e.getAttribute("selected");
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
580 boolean selected = attrselected == null ? false :
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
581 attrselected.equalsIgnoreCase("true");
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
582 logger.debug("Loaded module " + modulename);
7756
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
583 NodeList children = e.getChildNodes();
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
584 List<String> rivers = new ArrayList<String>(children.getLength());
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
585 for (int j = 0; j < children.getLength(); j++) {
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
586 if (children.item(j).getNodeType() != Node.ELEMENT_NODE) {
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
587 continue;
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
588 }
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
589 Element ce = (Element)children.item(j);
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
590 if (ce.hasAttribute("uuid")) {
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
591 rivers.add(ce.getAttribute("uuid"));
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
592 }
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
593 else if (ce.hasAttribute("name")) {
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
594 List<River> allRivers = RiverFactory.getRivers();
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
595 String name = ce.getAttribute("name");
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
596 for (River r: allRivers) {
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
597 if (name.equals(r.getName())) {
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
598 rivers.add(r.getModelUuid());
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
599 break;
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
600 }
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
601 }
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
602 }
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
603 }
cd04a7389389 Read rivers supported by a module from config file.
Raimund Renkert <rrenkert@intevation.de>
parents: 7227
diff changeset
604 modules.add(new Module(modulename, selected, rivers));
3630
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
605 }
5866
9a6741ccf6d4 FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
606 context.put(RiverContext.MODULES, modules);
3630
28be160b5870 Add a module service. It's now possible to configure the modules which are
Bjoern Ricks <bjoern.ricks@intevation.de>
parents: 3256
diff changeset
607 }
106
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
608 }
5864c41219db Initializes a TransitionEngine storing all transitions for each artifact at the application start.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
609 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org