Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/context/FLYSContextFactory.java @ 3630:28be160b5870
Add a module service. It's now possible to configure the modules which are
available for a client. With the selected attribute it is possible to give
a hint for the client which module should be pre selected by default
flys-artifacts/trunk@5330 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Bjoern Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Fri, 31 Aug 2012 13:17:16 +0000 |
parents | 17ca0a43027a |
children | 58bdf95df5e4 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/context/FLYSContextFactory.java Fri Aug 31 11:26:49 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/context/FLYSContextFactory.java Fri Aug 31 13:17:16 2012 +0000 @@ -26,6 +26,7 @@ import de.intevation.artifactdatabase.transition.Transition; import de.intevation.artifactdatabase.transition.TransitionEngine; +import de.intevation.flys.artifacts.model.Module; import de.intevation.flys.artifacts.states.StateFactory; import de.intevation.flys.artifacts.transitions.TransitionFactory; import de.intevation.flys.themes.Theme; @@ -81,6 +82,8 @@ public static final String XPATH_RIVER_WMS = "/artifact-database/floodmap/river"; + public static final String XPATH_MODULES = "/artifact-database/modules/module"; + /** * Creates a new FLYSArtifactContext object and initialize all * components required by the application. @@ -97,6 +100,7 @@ configureThemes(config, context); configureThemesMappings(config, context); configureRiverWMS(config, context); + configureModules(config, context); return context; } @@ -423,5 +427,31 @@ context.put(FLYSContext.RIVER_WMS, riverWMS); } + + + /** + * This method initializes the modules configuration. + * + * @param config the config document. + * @param context the FLYSContext. + */ + protected void configureModules(Document cfg, FLYSContext context) { + NodeList modulenodes = (NodeList) XMLUtils.xpath( + cfg, XPATH_MODULES, XPathConstants.NODESET); + + int num = modulenodes != null ? modulenodes.getLength() : 0; + ArrayList<Module> modules = new ArrayList<Module>(num); + + for (int i = 0; i < num; i++) { + Element e = (Element) modulenodes.item(i); + String modulename = e.getAttribute("name"); + String attrselected = e.getAttribute("selected"); + boolean selected = attrselected == null ? false : + attrselected.equalsIgnoreCase("true"); + logger.debug("Loaded module " + modulename); + modules.add(new Module(modulename, selected)); + } + context.put(FLYSContext.MODULES, modules); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :