tim@52: /** tim@52: * tim@52: */ tim@52: package de.intevation.gnv.artifacts.context; tim@52: tim@52: import java.io.FileInputStream; tim@52: import java.io.FileNotFoundException; tim@52: import java.io.IOException; tim@52: import java.io.InputStream; tim@52: import java.util.Properties; tim@52: tim@52: import org.apache.log4j.Logger; tim@52: import org.w3c.dom.Document; tim@52: tim@52: import de.intevation.artifactdatabase.Config; tim@52: import de.intevation.artifacts.ArtifactContextFactory; tim@99: import de.intevation.gnv.artifacts.cache.CacheFactory; tim@52: import de.intevation.gnv.geobackend.base.connectionpool.ConnectionPoolFactory; tim@52: import de.intevation.gnv.geobackend.base.query.container.QueryContainerFactory; tim@52: import de.intevation.gnv.geobackend.base.query.container.exception.QueryContainerException; tim@52: tim@52: /** tim@52: * @author Tim Englich tim@171: * tim@52: */ tim@52: public class GNVArtifactContextFactory implements ArtifactContextFactory { tim@52: /** tim@52: * the logger, used to log exceptions and additonaly information tim@52: */ tim@52: private static Logger log = Logger.getLogger(GNVArtifactContext.class); tim@171: tim@171: public static final String XPATH_GEOBACKEND_CONFIGURATION = "artifact-database/geo-backend/backend-configuration"; tim@171: tim@171: public static final String XPATH_GEOBACKEND_QUERYCONFIGURATION = "artifact-database/geo-backend/query-configuration"; tim@171: tim@99: private final static String CACHECONFIGNODEPATH = "/artifact-database/ehcache/configuration"; tim@171: tim@52: /** tim@52: * Constructor tim@52: */ tim@52: public GNVArtifactContextFactory() { tim@52: super(); tim@52: log.debug("GNVArtifactContextFactory.Constructor"); tim@52: } tim@52: tim@52: /** tim@52: * @see de.intevation.artifacts.ArtifactContextFactory#createArtifactContext(org.w3c.dom.Document) tim@52: */ tim@52: public Object createArtifactContext(Document config) { tim@52: Object returnValue = null; tim@52: try { tim@52: log.debug("GNVArtifactContextFactory.createArtifactContext"); tim@52: log.info("Initialisation of the Geo-BackendConnectionPool"); tim@171: String backendConfigurationFile = Config.getStringXPath(config, tim@171: XPATH_GEOBACKEND_CONFIGURATION); tim@52: Properties properties = getProperties(backendConfigurationFile); tim@52: ConnectionPoolFactory cpf = ConnectionPoolFactory.getInstance(); tim@52: cpf.initializeConnectionPool(properties); tim@171: tim@52: log.info("Initialisation of the QueryContainer"); tim@171: String queryConfigurationFile = Config.getStringXPath(config, tim@171: XPATH_GEOBACKEND_QUERYCONFIGURATION); tim@52: Properties queryProperties = getProperties(queryConfigurationFile); tim@52: QueryContainerFactory qcf = QueryContainerFactory.getInstance(); tim@52: qcf.initializeQueryContainer(queryProperties); tim@171: tim@99: log.info("Initialisation of the Cache"); tim@171: String cacheConfigurationFile = Config.getStringXPath(config, tim@171: CACHECONFIGNODEPATH); tim@99: CacheFactory cf = CacheFactory.getInstance(); tim@99: cf.initializeCache(cacheConfigurationFile); tim@171: tim@52: returnValue = new GNVArtifactContext(config); tim@52: } catch (FileNotFoundException e) { tim@171: log.error(e, e); tim@52: } catch (IOException e) { tim@171: log.error(e, e); tim@171: } catch (QueryContainerException e) { tim@171: log.error(e, e); tim@52: } tim@52: return returnValue; tim@52: } tim@52: tim@52: /** tim@52: * @param filePath tim@52: * @return tim@52: * @throws FileNotFoundException tim@52: * @throws IOException tim@52: */ tim@52: private Properties getProperties(String filePath) tim@171: throws FileNotFoundException, tim@171: IOException { tim@52: InputStream inputStream = new FileInputStream(filePath); tim@52: Properties properties = new Properties(); tim@52: properties.load(inputStream); tim@52: return properties; tim@52: } tim@52: }