Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContext.java @ 5866:9a6741ccf6d4
FLYS artifacts: Renamed FLYSContext(Factory) to RiverContext(Factory).
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sun, 28 Apr 2013 15:14:30 +0200 |
parents | artifacts/src/main/java/org/dive4elements/river/artifacts/context/FLYSContext.java@4897a58c8746 |
children | af13ceeba52a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/context/RiverContext.java Sun Apr 28 15:14:30 2013 +0200 @@ -0,0 +1,124 @@ +/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde + * Software engineering by Intevation GmbH + * + * This file is Free Software under the GNU AGPL (>=v3) + * and comes with ABSOLUTELY NO WARRANTY! Check out the + * documentation coming with Dive4Elements River for details. + */ + +package org.dive4elements.river.artifacts.context; + +import java.util.Map; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Document; + +import org.dive4elements.artifactdatabase.DefaultArtifactContext; +import org.dive4elements.artifacts.CallContext; +import org.dive4elements.river.exports.OutGenerator; + + +/** + * This class is used to store application wide information in a global context. + * + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class RiverContext extends DefaultArtifactContext { + + /** The logger used in this class. */ + private static Logger logger = Logger.getLogger(RiverContext.class); + + /** The key that is used to store the StateEngine in the context. */ + public static final String ARTIFACT_KEY = + "artifact"; + + /** The key that is used to store the TransitionEngine in the context. */ + public static final String TRANSITION_ENGINE_KEY = + "artifact.transition.engine"; + + /** The key that is used to store the StateEngine in the context. */ + public static final String STATE_ENGINE_KEY = + "artifact.state.engine"; + + /** The key that is used to store the Map of OutGenerator classes in the + * context. */ + public static final String OUTGENERATORS_KEY = + "flys.export.outgenerators"; + + /** The key that is used to store the map of themes in the context. */ + public static final String THEMES = + "flys.themes.map"; + + /** The key that is used to store a map of theme mappings in the context. */ + public static final String THEME_MAPPING = + "flys.themes.mapping.map"; + + /** The key that is used to store a map of WMS urls for each river. */ + public static final String RIVER_WMS = + "flys.floodmap.river.wms"; + + /** The key that is used to store an instance of Scheduler in the context.*/ + public static final String SCHEDULER = + "flys.wsplgen.scheduler"; + + /** Key to store the configured modules in the context. */ + public static final String MODULES = "flys.modules"; + + + /** + * The default constructor. + */ + public RiverContext() { + super(); + } + + + /** + * A constructor with a config document. + */ + public RiverContext(Document config) { + super(config); + } + + /** + * Returns the OutGenerator for a specified <i>type</i>. + * + * @param name The name of the output type. + * @param type Defines the type of the desired OutGenerator. + * + * @return Instance of an OutGenerator for specified <i>type</i>. + */ + public static OutGenerator getOutGenerator( + CallContext context, + String name, + String type) + { + + RiverContext flysContext = context instanceof RiverContext + ? (RiverContext) context + : (RiverContext) context.globalContext(); + + Map<String, Class> generators = (Map<String, Class>) + flysContext.get(RiverContext.OUTGENERATORS_KEY); + + if (generators == null) { + return null; + } + + Class clazz = generators.get(name); + + try { + return clazz != null ? (OutGenerator) clazz.newInstance() : null; + } + catch (InstantiationException ie) { + logger.error(ie, ie); + } + catch (IllegalAccessException iae) { + logger.error(iae, iae); + } + + return null; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :