view geo-backend/src/main/java/de/intevation/gnv/geobackend/base/query/QueryExecutorFactory.java @ 1122:1985d5db0feb

Implemented a global configuration that should be used to initialize the geobackend. geo-backend/trunk@1149 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 03 Jun 2010 13:31:07 +0000
parents b757def3ff55
children ebeb56428409
line wrap: on
line source
package de.intevation.gnv.geobackend.base.query;

import de.intevation.gnv.geobackend.config.Configuration;

import org.apache.log4j.Logger;

/**
 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a>
 *
 */
public class QueryExecutorFactory {

    public static final String QUERY_EXECUTOR_FACTORY = "query.executor.factory";

    /**
     * the logger, used to log exceptions and additonaly information
     */
    private static Logger log = Logger.getLogger(QueryExecutorFactory.class);


    /**
     * The singleton Instance of this Factory.
     */
    private static QueryExecutorFactory instance = null;

    /**
     * Basic-Constructor of this Class
     */
    public QueryExecutorFactory() {
        super();
    }

    /**
     * This Method provides an singleton Instance of this Class.
     * @return an singleton Instance of this Class
     */
    public static synchronized QueryExecutorFactory getInstance(){
        if (instance == null) {
            Configuration config = Configuration.getInstance();

            if (config.isCacheEnabled()) {
                final QueryExecutorFactory factory =
                    new CachingQueryExecutorFactory();
                Runtime.getRuntime().addShutdownHook(new Thread() {
                    @Override
                    public void run() {
                        factory.shutdown();
                    }
                });
                return instance = factory;
            }

            instance = new QueryExecutorFactory();
        }
        return instance;
    }

    public void shutdown() {
    }

    /**
     * Getting the QueryExecutor
     * @return the QueryExecutor
     */
    public QueryExecutor getQueryExecutor(){
        return new DefaultQueryExceutor();
    }
}

http://dive4elements.wald.intevation.org