view artifact-database/src/main/java/org/dive4elements/artifactdatabase/App.java @ 541:3b1e48d22ce0

Experimentally let database cleaner and backend share the same sql executor.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 03 Sep 2015 15:34:07 +0200
parents 415df0fc4fa1
children 5cd1c627cda9
line wrap: on
line source
/*
 * Copyright (c) 2010 by Intevation GmbH
 *
 * This program is free software under the LGPL (>=v2.1)
 * Read the file LGPL.txt coming with the software for details
 * or visit http://www.gnu.org/licenses/ if it does not exist.
 */

package org.dive4elements.artifactdatabase;

import org.dive4elements.artifacts.common.utils.Config;

import org.dive4elements.artifactdatabase.rest.HTTPServer;

import java.io.File;

import java.net.MalformedURLException;

import org.apache.log4j.PropertyConfigurator;

import org.slf4j.bridge.SLF4JBridgeHandler;

/**
 * Starting point of the artifact database.
 *
 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
 */
public class App
{
    /**
     * The logging is done via Log4j. To configure the logging
     * a file 'log4j.properties' is search in the configuration directory.
     */
    public static final String LOG4J_PROPERTIES =
        "log4j.properties";

    /**
     * Trys to load the Log4j configuration from ${config.dir}/log4j.properties.
     */
    public static final void configureLogging() {
        File configDir = Config.getConfigDirectory();
        File propFile = new File(configDir, LOG4J_PROPERTIES);

        if (propFile.isFile() && propFile.canRead()) {
            try {
                PropertyConfigurator.configure(propFile.toURI().toURL());
                SLF4JBridgeHandler.install();
            }
            catch (MalformedURLException mue) {
                mue.printStackTrace(System.err);
            }
        }
    }

    /**
     * Starts the artifact database.
     * @param args The commandline arguments. Unused.
     */
    public static void main(String[] args) {

        configureLogging();

        FactoryBootstrap bootstrap = new FactoryBootstrap();

        bootstrap.boot();

        Backend backend = Backend.getInstance();

        ArtifactDatabaseImpl db = new ArtifactDatabaseImpl(
            bootstrap, backend);

        DatabaseCleaner cleaner = new DatabaseCleaner(
            bootstrap.getContext(),
            backend,
            backend.getSQLExecutor(),
            backend.getConfig());

        HTTPServer httpServer = bootstrap.getHTTPServer();

        bootstrap = null;

        backend.setCleaner(cleaner);

        cleaner.setLockedIdsProvider(db);

        cleaner.start();

        db.start();

        httpServer.startAsServer(db);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org