tim@130: /** tim@130: * tim@130: */ tim@130: package de.intevation.gnv.geobackend.base.connectionpool; tim@130: tim@130: import java.util.Properties; tim@130: tim@130: import org.apache.log4j.Logger; tim@130: tim@130: import de.intevation.gnv.geobackend.sde.connectionpool.ArcSDEConnectionPool; tim@130: tim@130: /** tim@130: * Factoryimplementation for the Interface ConnectionPool. tim@130: * This factory delivers Instances of the Interface ConnectionPool. tim@130: * @author Tim Englich tim@130: */ tim@130: public class ConnectionPoolFactory { tim@130: tim@130: tim@130: /** tim@130: * the logger, used to log exceptions and additonaly information tim@130: */ tim@130: private static Logger log = Logger.getLogger(ConnectionPoolFactory.class); tim@130: tim@130: tim@130: /** tim@130: * The singleton Instance of this Factory. tim@130: */ tim@130: private static ConnectionPoolFactory instance = null; tim@130: tim@130: /** tim@130: * The ConnectionPool providing the Connections to the DatabaseBackends tim@130: */ tim@130: private ConnectionPool connectionPool = null; tim@130: tim@130: /** tim@130: * Basic-Constructor of this Class tim@130: */ tim@130: private ConnectionPoolFactory() { tim@130: super(); tim@130: } tim@130: tim@130: tim@130: /** tim@130: * This Method provides an singleton Instance of this Class. tim@130: * @return an singleton Instance of this Class tim@130: */ tim@130: public static ConnectionPoolFactory getInstance(){ tim@130: if (instance == null){ tim@130: instance = new ConnectionPoolFactory(); tim@130: } tim@130: return instance; tim@130: } tim@130: tim@130: tim@130: /** tim@130: * Getting the ConnectionPool tim@130: * @return the ConnectionPool tim@130: */ tim@130: public ConnectionPool getConnectionPool(){ tim@130: return this.connectionPool; tim@130: } tim@130: tim@130: tim@130: /** tim@130: * Initializes the ConnectionPool. tim@130: * Should only be called once on system startup tim@130: * @param properties the Properties for the Individual Configuration of the ConnectionPool tim@130: */ tim@130: public void initializeConnectionPool(Properties properties){ tim@130: log.debug("ConnectionPoolFactory.initializeConnectionPool"); tim@130: if (this.connectionPool == null){ tim@130: //TODO: Hier könnte anhand eines Flags die Instanz des Connectionpools umgeschaltet werden. tim@130: this.connectionPool = new ArcSDEConnectionPool(); tim@130: this.connectionPool.initialize(properties); tim@130: }else{ tim@130: log.warn("ConnectionPool already initialized"); tim@130: } tim@130: } tim@130: tim@130: /** tim@130: * Checks if the ConnectionPool has already been initialized. tim@130: * @return true if the ConnectionPool is initialized. tim@130: */ tim@130: public boolean isInitialized(){ tim@130: return this.connectionPool != null; tim@130: } tim@130: }