tim@132: package de.intevation.gnv.geobackend.base.query; tim@132: ingo@1122: import de.intevation.gnv.geobackend.config.Configuration; ingo@1122: tim@132: import org.apache.log4j.Logger; tim@132: tim@132: /** sascha@887: * @author Tim Englich tim@132: * tim@132: */ tim@132: public class QueryExecutorFactory { sascha@541: sascha@541: public static final String QUERY_EXECUTOR_FACTORY = "query.executor.factory"; sascha@885: tim@132: /** tim@132: * the logger, used to log exceptions and additonaly information tim@132: */ tim@132: private static Logger log = Logger.getLogger(QueryExecutorFactory.class); tim@132: sascha@885: tim@132: /** tim@132: * The singleton Instance of this Factory. tim@132: */ tim@132: private static QueryExecutorFactory instance = null; tim@132: tim@132: /** tim@132: * Basic-Constructor of this Class tim@132: */ sascha@541: public QueryExecutorFactory() { tim@132: super(); tim@132: } tim@132: tim@132: /** tim@132: * This Method provides an singleton Instance of this Class. tim@132: * @return an singleton Instance of this Class tim@132: */ sascha@541: public static synchronized QueryExecutorFactory getInstance(){ sascha@541: if (instance == null) { ingo@1122: Configuration config = Configuration.getInstance(); ingo@1122: ingo@1122: if (config.isCacheEnabled()) { ingo@1122: final QueryExecutorFactory factory = ingo@1122: new CachingQueryExecutorFactory(); ingo@1122: Runtime.getRuntime().addShutdownHook(new Thread() { ingo@1122: @Override ingo@1122: public void run() { ingo@1122: factory.shutdown(); ingo@1122: } ingo@1122: }); ingo@1122: return instance = factory; sascha@541: } sascha@541: tim@132: instance = new QueryExecutorFactory(); tim@132: } tim@132: return instance; tim@132: } sascha@542: sascha@542: public void shutdown() { sascha@542: } sascha@885: tim@132: /** tim@132: * Getting the QueryExecutor tim@132: * @return the QueryExecutor tim@132: */ tim@132: public QueryExecutor getQueryExecutor(){ tim@132: return new DefaultQueryExceutor(); tim@132: } tim@132: }