1 32 33 package it.businesslogic.ireport.connection; 34 35 61 import java.sql.Driver ; 62 import java.sql.SQLException ; 63 import java.util.ArrayList ; 64 import java.util.Iterator ; 65 66 84 public final class DriverPool { 85 private DriverPool(){ 86 87 } 88 89 private static final ArrayList driverSet = new ArrayList (); 92 106 private static boolean isDriverAllReadyRegistered(Driver jdbcDriver) { 107 int verCheckSum = (jdbcDriver.getMajorVersion() * 10) + jdbcDriver.getMinorVersion(); 108 Iterator drivers = driverSet.iterator(); 109 while (drivers.hasNext()) { 110 Driver driver = (Driver ) drivers.next(); 111 int checkSum = (driver.getMajorVersion() * 10) + driver.getMinorVersion(); 112 if (checkSum == verCheckSum && (driver.getClass().getName().equals(jdbcDriver.getClass().getName()))) 113 return true; 114 } 115 return false; 116 } 117 118 138 public static void registerDriver(String driverClass, ClassLoader cl) throws ClassNotFoundException { 139 if (cl == null) 140 cl = Thread.currentThread().getContextClassLoader(); 141 142 if (driverClass == null) return; 143 144 try { 145 Driver jdbcDriver = (Driver ) Class.forName(driverClass, false, cl).newInstance(); 146 if (!isDriverAllReadyRegistered(jdbcDriver)) { 147 synchronized (driverSet) { 148 driverSet.add(jdbcDriver); 149 } 150 String [] p = new String [] { driverClass, jdbcDriver.toString()}; 151 152 153 } 154 } catch (Throwable t) { 155 throw new ClassNotFoundException (driverClass); 156 } 157 } 158 159 168 public static void deregisterDriver(Driver jdbcDriver) { 169 if (jdbcDriver == null) { 170 return; 171 } 172 173 try { 174 175 String [] p = new String [] { jdbcDriver.getClass().getName(), jdbcDriver.toString()}; 176 synchronized (driverSet) { 177 int i = 0; 178 for (i = 0; i < driverSet.size(); i++) { 179 Driver di = (Driver ) driverSet.get(i); 180 if (di == jdbcDriver) { 181 break; 182 } 183 } 184 185 if (i >= driverSet.size()) { 187 return; 188 } 189 190 driverSet.remove(i); 191 } 192 } catch (Throwable t) { 193 t.printStackTrace(); 194 } 195 } 196 197 212 public static Driver getDriver(String jdbcURL) throws SQLException { 213 Iterator drivers = driverSet.iterator(); 214 while (drivers.hasNext()) { 215 Driver jdbcDriver = (Driver ) drivers.next(); 216 try { 217 if (jdbcDriver.acceptsURL(jdbcURL)) 218 return jdbcDriver; 219 } catch (Throwable t) { 220 } 221 222 } 223 return null; } 225 226 } 227 | Popular Tags |