ingo@100: /*
ingo@100:  * Copyright (c) 2010 by Intevation GmbH
ingo@100:  *
ingo@100:  * This program is free software under the LGPL (>=v2.1)
ingo@100:  * Read the file LGPL.txt coming with the software for details
ingo@100:  * or visit http://www.gnu.org/licenses/ if it does not exist.
ingo@100:  */
ingo@100: 
sascha@5: package de.intevation.artifactdatabase;
sascha@5: 
sascha@5: import java.util.HashMap;
sascha@5: 
sascha@5: import org.w3c.dom.Document;
sascha@5: 
ingo@293: import de.intevation.artifacts.GlobalContext;
ingo@293: 
sascha@5: /**
sascha@5:  * Default implementation of the context.
sascha@5:  * Besides of the configuration it hosts a map to store key/value pairs.
sascha@5:  *
sascha@77:  * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
sascha@5:  */
ingo@293: public class DefaultArtifactContext implements GlobalContext
sascha@5: {
sascha@90:     /**
sascha@90:      * The global configuration document of the artifact database.
sascha@90:      */
sascha@5:     protected Document config;
sascha@5: 
sascha@90:     /**
sascha@90:      * Custom key/value pairs to be used globally in the whole server.
sascha@90:      */
sascha@5:     protected HashMap  map;
sascha@5: 
sascha@90:     /**
sascha@90:      * Default constructor
sascha@90:      */
sascha@5:     public DefaultArtifactContext() {
sascha@5:         this(null);
sascha@5:     }
sascha@5: 
sascha@90:     /**
sascha@90:      * Constructor to create a context with a given global
sascha@90:      * configuration document and an empty map of custom
sascha@90:      * key/value pairs.
sascha@90:      * @param config
sascha@90:      */
sascha@5:     public DefaultArtifactContext(Document config) {
sascha@5:         this.config = config;
sascha@5:         map = new HashMap();
sascha@5:     }
sascha@5: 
sascha@90:     /**
sascha@90:      * Fetch a custom value from the global key/value map using
sascha@90:      * a given key.
sascha@90:      * @param key The key.
sascha@90:      * @return The stored value or null if no value was found under
sascha@90:      * this key.
sascha@90:      */
sascha@5:     public synchronized Object get(Object key) {
sascha@5:         return map.get(key);
sascha@5:     }
sascha@5: 
sascha@90:     /**
sascha@90:      * Store a custom key/value pair in the global map.
sascha@90:      * @param key The key to store
sascha@90:      * @param value The value to store
sascha@90:      * @return The old value registered under the key or null
sascha@90:      * if none wa there before.
sascha@90:      */
sascha@5:     public synchronized Object put(Object key, Object value) {
sascha@5:         return map.put(key, value);
sascha@5:     }
sascha@5: 
sascha@90:     /**
sascha@90:      * Returns a reference to the global configuration document.
sascha@90:      * @return The global configuration document.
sascha@90:      */
sascha@5:     public Document getConfig() {
sascha@5:         return config;
sascha@5:     }
sascha@5: }
sascha@90: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :