tim@71: /**
tim@71:  *
tim@71:  */
tim@71: package de.intevation.gnv.utils;
tim@71: 
tim@71: import org.apache.log4j.Logger;
tim@71: import org.w3c.dom.Document;
tim@71: import org.w3c.dom.Node;
tim@71: 
tim@71: import de.intevation.artifacts.ArtifactFactory;
tim@71: 
tim@71: /**
tim@71:  * @author Tim Englich <tim.englich@intevation.de>
tim@171:  * 
tim@71:  */
tim@71: public class ArtifactFactoryUtilities {
tim@71:     /**
tim@71:      * the logger, used to log exceptions and additonaly information
tim@71:      */
tim@171:     private static Logger log = Logger
tim@171:             .getLogger(ArtifactFactoryUtilities.class);
tim@171: 
tim@71:     /**
tim@71:      * Constructor
tim@71:      */
tim@71:     public ArtifactFactoryUtilities() {
tim@71:     }
tim@71: 
tim@171:     public ArtifactFactory createArtitfactFactor(Document config,
tim@171:                                                  Node artifactFactoryNode) {
tim@171:         String className = artifactFactoryNode.getTextContent();
tim@71: 
tim@71:         ArtifactFactory factory = null;
tim@71: 
tim@71:         try {
tim@71:             Class clazz = Class.forName(className);
tim@171:             factory = (ArtifactFactory) clazz.newInstance();
tim@171:         } catch (ClassNotFoundException cnfe) {
tim@71:             log.error(cnfe.getLocalizedMessage(), cnfe);
tim@171:         } catch (InstantiationException ie) {
tim@71:             log.error(ie.getLocalizedMessage(), ie);
tim@171:         } catch (ClassCastException cce) {
tim@71:             log.error(cce.getLocalizedMessage(), cce);
tim@171:         } catch (IllegalAccessException iae) {
tim@71:             log.error(iae.getLocalizedMessage(), iae);
tim@71:         }
tim@71: 
tim@71:         if (factory != null) {
tim@71:             factory.setup(config, artifactFactoryNode);
tim@171:             log.info("Registering '" + factory.getName()
tim@171:                      + "' as artifact factory.");
tim@71:         }
tim@71:         return factory;
tim@71:     }
tim@71: }