Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * To change this template, choose Tools | Templates
   * and open the template in the editor.
   */
  package pt.webdetails.cda.connections;
  
  import java.io.File;
 import  org.apache.commons.logging.Log;
 import  org.apache.commons.logging.LogFactory;
 import  org.dom4j.Document;
 import  org.pentaho.platform.util.xml.dom4j.XmlDom4JHelper;
 import  org.pentaho.platform.engine.core.system.PentahoSystem;

Author(s):
pdpi
 
 public class ConnectionCatalog {
 
   public enum ConnectionType {
 
     SQL, MQL, MDX, OLAP4J, SCRIPTING, NONE, XPATH, KETTLE
   };
   private static ConnectionCatalog _instance;
   private static Log logger = LogFactory.getLog(ConnectionCatalog.class);
   public static final String PLUGIN_DIR = PentahoSystem.getApplicationContext().getSolutionPath("system/" + .);
 
   public ConnectionCatalog() {
     getConnections();
   }
 
   private void getConnections() {
     File dir = new File( + "/resources/components/connections");
     FilenameFilter xmlFiles = new FilenameFilter() {
 
       public boolean accept(File dirString name) {
         return !name.startsWith(".") && name.endsWith(".xml");
       }
     };
     String[] files = dir.list(xmlFiles);
     if (files != null && files.length > 0) {
       for (String file : files) {
         try {
           Document doc = XmlDom4JHelper.getDocFromFile(dir.getPath() + "/" + filenull);
           // To figure out whether the component is generic or has a special implementation,
           // we directly look for the class override in the definition
           String className = XmlDom4JHelper.getNodeText("/Connection/Implementation"doc);
           if (className != null) {
             Connection connection = connectionFromClass(className);
             if (connection != null) {
               String connectionType = XmlDom4JHelper.getNodeText("/Connection/Type"doc);
               ConnectionType ct = ConnectionType.valueOf(connectionType);
               .put(connection.getClass().toString(), new ConnectionInfo(ctconnection.getClass()));
             }
           }
         } catch (Exception e) {
           .error(e);
         }
       }
     }
   }
 
     ArrayList<Connectionconns = new ArrayList<Connection>();
     for (String key : .keySet()) {
       ConnectionInfo conn = .get(key);
       if (conn.getType() == type) {
         try {
           conns.add((Connectionconn.getImplementation().getConstructor().newInstance());
         } catch (Exception ex) {
           .error("Couldn't instantiate " + conn.toString());
         }
       }
     }
     //return (Connection[]) (conns.toArray());
     return conns.toArray(new Connection[conns.size()]);
   }
 
   private Connection connectionFromClass(String className) {
     Connection connection = null;
     try {
       Class cClass = Class.forName(className);
       if (!cClass.isInterface()) {
         connection = (ConnectioncClass.newInstance();
       }
     } catch (Exception ex) {
       .error(ex);
     }
     return connection;
   }
 
   public synchronized static ConnectionCatalog getInstance(boolean refreshCache) {
    if ( == null || refreshCache) {
       = new ConnectionCatalog();
    }
    return ;
  }
  public Class getImplementation() {
    return ;
  }
  public ConnectionType getType() {
    return ;
  }
  private ConnectionType type;
  private Class implementation;
  public ConnectionInfo(ConnectionType typeClass implementation) {
    this. = type;
    this. = implementation;
  }
New to GrepCode? Check out our FAQ X