view gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionFactory.java @ 1129:ccfa07b88476

merged geo-backend
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:01 +0200
parents f953c9a559d8
children
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 de.intevation.gnv.transition;

import org.apache.log4j.Logger;
import org.w3c.dom.Node;

import de.intevation.gnv.artifacts.GNVArtifactBase;

/**
 * This Factoryclass instantiates Objects of Type Transition.
 * @author <a href="mailto:tim.englich@intevation.de">Tim Englich</a>
 *
 */
public class TransitionFactory {

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

    /**
     * The Singleton instance of the Transitionfactory.
     */
    private static TransitionFactory instance = null;

    /**
     * Constructor
     */
    public TransitionFactory() {
        super();
    }

    /**
     * Returns the Instance of this Class.
     * @return the Instance of this Class.
     */
    public static TransitionFactory getInstance() {
        if (instance == null) {
            instance = new TransitionFactory();
        }
        return instance;
    }

    /**
     * Creates a new Transition using the Configuration that is provided by the
     * XML-Node.
     * @param configuration The configuration that should be used to initialize
     *                      the new Transition
     * @return a new Transition.
     */
    public Transition createTransition(Node configuration) {
        log.debug("TransitionFactory.createTransition");
        Transition state = null;
        try {
            String classname = ((org.w3c.dom.Element)configuration).getAttribute("transition");
            state = (Transition) (Class.forName(classname).newInstance());
            state.setup(configuration);
        } catch (InstantiationException e) {
            log.error(e, e);
        } catch (IllegalAccessException e) {
            log.error(e, e);
        } catch (ClassNotFoundException e) {
            log.error(e, e);
        }
        return state;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org