tim@337: /**
tim@337:  *
tim@337:  */
tim@337: package de.intevation.gnv.transition;
tim@337: 
tim@337: import org.apache.log4j.Logger;
tim@337: import org.w3c.dom.Node;
tim@337: 
tim@337: import de.intevation.gnv.artifacts.GNVArtifactBase;
tim@337: 
tim@337: /**
tim@337:  * @author Tim Englich <tim.englich@intevation.de>
tim@337:  * 
tim@337:  */
tim@337: public class TransitionFactory {
tim@337: 
tim@337:     /**
tim@337:      * the logger, used to log exceptions and additonaly information
tim@337:      */
tim@337:     private static Logger log = Logger.getLogger(GNVArtifactBase.class);
tim@337: 
tim@337:     private static TransitionFactory instance = null;
tim@337: 
tim@337:     /**
tim@337:      * Constructor
tim@337:      */
tim@337:     public TransitionFactory() {
tim@337:         super();
tim@337:     }
tim@337: 
tim@337:     public static TransitionFactory getInstance() {
tim@337:         if (instance == null) {
tim@337:             instance = new TransitionFactory();
tim@337:         }
tim@337:         return instance;
tim@337:     }
tim@337: 
tim@337:     public Transition createTransition(Node configuration) {
tim@337:         log.debug("TransitionFactory.createTransition");
tim@337:         Transition state = null;
tim@337:         try {
tim@337:             String classname = ((org.w3c.dom.Element)configuration).getAttribute("transition");
tim@337:             state = (Transition) (Class.forName(classname).newInstance());
tim@337:             state.setup(configuration);
tim@337:         } catch (InstantiationException e) {
tim@337:             log.error(e, e);
tim@337:         } catch (IllegalAccessException e) {
tim@337:             log.error(e, e);
tim@337:         } catch (ClassNotFoundException e) {
tim@337:             log.error(e, e);
tim@337:         }
tim@337:         return state;
tim@337:     }
tim@337: 
tim@337: }