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 :

http://dive4elements.wald.intevation.org