Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/vinculum/processeditor/jdbcClassLoader.java


1   /* * ** **  BEGIN LICENSE BLOCK * ** **
2    * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3    *
4    * The contents of this file are subject to the Mozilla Public License Version 
5    * 1.1 (the "License"); you may not use this file except in compliance with 
6    * the License. You may obtain a copy of the License at 
7    * http://www.mozilla.org/MPL/
8    *
9    * Software distributed under the License is distributed on an "AS IS" basis,
10   * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11   * for the specific language governing rights and limitations under the
12   * License.
13   *
14   * The Original Code is Vinculum Open Source.
15   *
16   * The Initial Developer of the Original Code is
17   * Gerard Toonstra.
18   * Portions created by the Initial Developer are Copyright (C) 2003
19   * the Initial Developer. All Rights Reserved.
20   *
21   * Contributor(s):
22   *
23   * Alternatively, the contents of this file may be used under the terms of
24   * either the GNU General Public License Version 2 or later (the "GPL"), or
25   * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26   * in which case the provisions of the GPL or the LGPL are applicable instead
27   * of those above. If you wish to allow use of your version of this file only
28   * under the terms of either the GPL or the LGPL, and not to allow others to
29   * use your version of this file under the terms of the MPL, indicate your
30   * decision by deleting the provisions above and replace them with the notice
31   * and other provisions required by the GPL or the LGPL. If you do not delete
32   * the provisions above, a recipient may use your version of this file under
33   * the terms of any one of the MPL, the GPL or the LGPL.
34   *
35   * ** ** * END LICENSE BLOCK * ** **
36   */
37  
38  /***************************************************************************
39                            $RCSfile: jdbcClassLoader.java,v $  -  description
40                               -------------------
41      begin                : $Date: 2003/07/08 08:02:06 $
42      copyright            : Vinculum (C) 2002
43      author               : $Author: chiraz $
44   ***************************************************************************/
45  
46  /* $Log: jdbcClassLoader.java,v $
47  /* Revision 1.1.1.1  2003/07/08 08:02:06  chiraz
48  /* egg
49  /* */
50  
51  package com.vinculum.processeditor;
52  
53  import java.io.File;
54  import java.net.MalformedURLException;
55  import java.net.URL;
56  import java.net.URLClassLoader;
57  import java.sql.Driver;
58  import java.sql.SQLException;
59  import java.util.HashMap;
60  import java.util.Map;
61  
62  import org.eclipse.core.internal.resources.IManager;
63  import org.eclipse.core.runtime.CoreException;
64  import org.eclipse.core.runtime.IProgressMonitor;
65  
66  public class jdbcClassLoader implements IManager
67  {
68    private class ClassLoader extends URLClassLoader
69    {
70      public ClassLoader(URL[] urls, java.lang.ClassLoader parent)
71      {
72        super(urls, parent);
73      }
74  
75      public void addURL(URL url)
76      {
77        URL[] urls = getURLs();
78        for (int i = 0; i < urls.length; i++)
79        {
80          if (urls[i].equals(url))
81            return;
82        }
83        super.addURL(url);
84      }
85    }
86  
87    private ClassLoader loader;
88    private Map drivers;
89  
90    public ClassLoader getDriverClassLoader(URL[] urls)
91    {
92      if (loader == null)
93      {
94        loader = new ClassLoader(urls, ProcesseditorPlugin.getDefault().getDescriptor().getPluginClassLoader());
95      }
96      else
97      {
98        for (int i = 0; i < urls.length; i++)
99        {
100         loader.addURL(urls[i]);
101       }
102     }
103     return loader;
104   }
105   
106   public Driver getDriver(String driverClassName, String url)
107       throws Exception
108   {
109     if (drivers == null)
110       drivers = new HashMap();
111       
112     Driver driver = (Driver) drivers.get(url);
113     if (driver == null)
114     {
115       try
116       {
117         Class driverClass = loader != null ?
118           loader.loadClass(driverClassName) : Class.forName(driverClassName);
119   
120         if (driverClass != null)
121         {
122           driver = (Driver) driverClass.newInstance();
123           drivers.put(url, driver);
124         }
125       }
126       catch (ClassNotFoundException e)
127       {
128         throw new Exception("No such Driver " + driverClassName); //$NON-NLS-1$
129       }
130       catch (Throwable t)
131       {
132         throw new Exception("Couldn't create Driver instance of:" + driverClassName); //$NON-NLS-1$
133       }
134     }
135   
136     Throwable ex = null;
137     try
138     {
139       if (driver.acceptsURL(url))
140         return driver;
141     }
142     catch (SQLException e)
143     {
144       ex = e;
145     }
146     throw new Exception("No suitable driver"); //$NON-NLS-1$
147   }
148 
149   public void startup(IProgressMonitor monitor) throws CoreException
150   {
151 
152   }
153 
154   public void shutdown(IProgressMonitor monitor) throws CoreException
155   {
156 
157   }
158 }