ingo@106: package de.intevation.flys.artifacts.context; ingo@106: raimund@3295: import java.util.Map; raimund@3295: ingo@106: import org.apache.log4j.Logger; ingo@106: ingo@106: import org.w3c.dom.Document; ingo@106: ingo@106: import de.intevation.artifactdatabase.DefaultArtifactContext; raimund@3295: import de.intevation.artifacts.CallContext; raimund@3295: import de.intevation.flys.exports.OutGenerator; ingo@106: ingo@106: ingo@106: /** ingo@106: * This class is used to store application wide information in a global context. ingo@106: * ingo@106: * @author Ingo Weinzierl ingo@106: */ ingo@106: public class FLYSContext extends DefaultArtifactContext { ingo@106: felix@1821: /** The logger used in this class. */ ingo@106: private static Logger logger = Logger.getLogger(FLYSContext.class); ingo@106: felix@1821: /** The key that is used to store the StateEngine in the context. */ felix@1821: public static final String ARTIFACT_KEY = felix@1821: "artifact"; felix@1821: felix@1821: /** The key that is used to store the TransitionEngine in the context. */ ingo@106: public static final String TRANSITION_ENGINE_KEY = ingo@106: "artifact.transition.engine"; ingo@106: felix@1821: /** The key that is used to store the StateEngine in the context. */ ingo@107: public static final String STATE_ENGINE_KEY = ingo@107: "artifact.state.engine"; ingo@107: ingo@295: /** The key that is used to store the Map of OutGenerator classes in the felix@1821: * context. */ ingo@295: public static final String OUTGENERATORS_KEY = ingo@295: "flys.export.outgenerators"; ingo@295: felix@1821: /** The key that is used to store the map of themes in the context. */ ingo@341: public static final String THEMES = ingo@341: "flys.themes.map"; ingo@341: felix@1821: /** The key that is used to store a map of theme mappings in the context. */ ingo@345: public static final String THEME_MAPPING = ingo@345: "flys.themes.mapping.map"; ingo@345: felix@1821: /** The key that is used to store a map of WMS urls for each river. */ ingo@958: public static final String RIVER_WMS = ingo@958: "flys.floodmap.river.wms"; ingo@958: ingo@1970: /** The key that is used to store an instance of Scheduler in the context.*/ ingo@1970: public static final String SCHEDULER = ingo@1970: "flys.wsplgen.scheduler"; ingo@1970: ingo@106: ingo@106: /** ingo@106: * The default constructor. ingo@106: */ ingo@106: public FLYSContext() { ingo@106: super(); ingo@106: } ingo@106: ingo@106: ingo@106: /** ingo@106: * A constructor with a config document. ingo@106: */ ingo@106: public FLYSContext(Document config) { ingo@106: super(config); ingo@106: } raimund@3295: raimund@3295: /** raimund@3295: * Returns the OutGenerator for a specified type. raimund@3295: * raimund@3295: * @param name The name of the output type. raimund@3295: * @param type Defines the type of the desired OutGenerator. raimund@3295: * raimund@3295: * @return Instance of an OutGenerator for specified type. raimund@3295: */ raimund@3295: public static OutGenerator getOutGenerator( raimund@3295: CallContext context, raimund@3295: String name, raimund@3295: String type) raimund@3295: { raimund@3295: raimund@3295: FLYSContext flysContext = context instanceof FLYSContext raimund@3295: ? (FLYSContext) context raimund@3295: : (FLYSContext) context.globalContext(); raimund@3295: raimund@3295: Map generators = (Map) raimund@3295: flysContext.get(FLYSContext.OUTGENERATORS_KEY); raimund@3295: raimund@3295: if (generators == null) { raimund@3295: return null; raimund@3295: } raimund@3295: raimund@3295: Class clazz = generators.get(name); raimund@3295: raimund@3295: try { raimund@3295: return clazz != null ? (OutGenerator) clazz.newInstance() : null; raimund@3295: } raimund@3295: catch (InstantiationException ie) { raimund@3295: logger.error(ie, ie); raimund@3295: } raimund@3295: catch (IllegalAccessException iae) { raimund@3295: logger.error(iae, iae); raimund@3295: } raimund@3295: raimund@3295: return null; raimund@3295: } ingo@106: } ingo@106: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :