view flys-artifacts/src/main/java/de/intevation/flys/artifacts/transitions/TransitionFactory.java @ 4496:d8992459b408

Add method to return the facets of an artifact This methos should be used to get the facets of an artifact instead of accessing the facets member variable directly.
author Björn Ricks <bjoern.ricks@intevation.de>
date Wed, 14 Nov 2012 11:11:04 +0100
parents 542f280d72c3
children
line wrap: on
line source
package de.intevation.flys.artifacts.transitions;

import javax.xml.xpath.XPathConstants;

import org.apache.log4j.Logger;

import org.w3c.dom.Node;

import de.intevation.artifactdatabase.transition.Transition;

import de.intevation.artifacts.common.utils.XMLUtils;


/**
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class TransitionFactory {

    /** The logger used in this class */
    private static Logger logger = Logger.getLogger(TransitionFactory.class);

    /** The XPath to the classname of the transition */
    public static final String XPATH_TRANSITION = "@transition";

    /** The XPath to the current state ID */
    public static final String XPATH_CURRENT_STATE = "from/@state";

    /** The XPath to the target state ID */
    public static final String XPATH_TARGET_STATE = "to/@state";


    /**
     * Creates a new Transition based on the configured class provided by
     * <code>transitionConf</code>.
     *
     * @param transitionConf The configuration of the transition.
     *
     * @return a Transition.
     */
    public static Transition createTransition(Node transitionConf) {
        String clazz = (String) XMLUtils.xpath(
            transitionConf, XPATH_TRANSITION, XPathConstants.STRING);

        Transition transition = null;

        try {
            transition = (Transition) Class.forName(clazz).newInstance();

            String from = (String) XMLUtils.xpath(
                transitionConf, XPATH_CURRENT_STATE, XPathConstants.STRING);
            String to = (String) XMLUtils.xpath(
                transitionConf, XPATH_TARGET_STATE, XPathConstants.STRING);

            transition.init(transitionConf);
            transition.setFrom(from);
            transition.setTo(to);
        }
        catch (InstantiationException ie) {
            logger.error(ie, ie);
        }
        catch (IllegalAccessException iae) {
            logger.error(iae, iae);
        }
        catch (ClassNotFoundException cnfe) {
            logger.error(cnfe, cnfe);
        }

        return transition;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org