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