home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / sql / DriverManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.5 KB  |  277 lines

  1. package java.sql;
  2.  
  3. import java.io.PrintStream;
  4. import java.io.PrintWriter;
  5. import java.security.AccessController;
  6. import java.util.Enumeration;
  7. import java.util.Hashtable;
  8. import java.util.Properties;
  9. import java.util.Vector;
  10. import sun.security.action.GetPropertyAction;
  11.  
  12. public class DriverManager {
  13.    static final SQLPermission SET_LOG_PERMISSION = new SQLPermission("setLog");
  14.    private static Vector drivers = new Vector();
  15.    private static int loginTimeout = 0;
  16.    private static PrintWriter logWriter = null;
  17.    private static PrintStream logStream = null;
  18.    private static boolean initialized = false;
  19.  
  20.    public static PrintWriter getLogWriter() {
  21.       return logWriter;
  22.    }
  23.  
  24.    public static synchronized void setLogWriter(PrintWriter var0) {
  25.       SecurityManager var1 = System.getSecurityManager();
  26.       if (var1 != null) {
  27.          var1.checkPermission(SET_LOG_PERMISSION);
  28.       }
  29.  
  30.       logStream = null;
  31.       logWriter = var0;
  32.    }
  33.  
  34.    public static synchronized Connection getConnection(String var0, Properties var1) throws SQLException {
  35.       ClassLoader var2 = getCallerClassLoader();
  36.       return getConnection(var0, var1, var2);
  37.    }
  38.  
  39.    public static synchronized Connection getConnection(String var0, String var1, String var2) throws SQLException {
  40.       Properties var3 = new Properties();
  41.       ClassLoader var4 = getCallerClassLoader();
  42.       if (var1 != null) {
  43.          ((Hashtable)var3).put("user", var1);
  44.       }
  45.  
  46.       if (var2 != null) {
  47.          ((Hashtable)var3).put("password", var2);
  48.       }
  49.  
  50.       return getConnection(var0, var3, var4);
  51.    }
  52.  
  53.    public static synchronized Connection getConnection(String var0) throws SQLException {
  54.       Properties var1 = new Properties();
  55.       ClassLoader var2 = getCallerClassLoader();
  56.       return getConnection(var0, var1, var2);
  57.    }
  58.  
  59.    public static synchronized Driver getDriver(String var0) throws SQLException {
  60.       println("DriverManager.getDriver(\"" + var0 + "\")");
  61.       if (!initialized) {
  62.          initialize();
  63.       }
  64.  
  65.       ClassLoader var1 = getCallerClassLoader();
  66.  
  67.       for(int var2 = 0; var2 < drivers.size(); ++var2) {
  68.          DriverInfo var3 = (DriverInfo)drivers.elementAt(var2);
  69.          if (getCallerClass(var1, var3.driverClassName) != var3.driverClass) {
  70.             println("    skipping: " + var3);
  71.          } else {
  72.             try {
  73.                println("    trying " + var3);
  74.                if (var3.driver.acceptsURL(var0)) {
  75.                   println("getDriver returning " + var3);
  76.                   return var3.driver;
  77.                }
  78.             } catch (SQLException var5) {
  79.             }
  80.          }
  81.       }
  82.  
  83.       println("getDriver: no suitable driver");
  84.       throw new SQLException("No suitable driver", "08001");
  85.    }
  86.  
  87.    public static synchronized void registerDriver(Driver var0) throws SQLException {
  88.       if (!initialized) {
  89.          initialize();
  90.       }
  91.  
  92.       DriverInfo var1 = new DriverInfo();
  93.       var1.driver = var0;
  94.       var1.driverClass = var0.getClass();
  95.       var1.driverClassName = var1.driverClass.getName();
  96.       drivers.addElement(var1);
  97.       println("registerDriver: " + var1);
  98.    }
  99.  
  100.    public static synchronized void deregisterDriver(Driver var0) throws SQLException {
  101.       ClassLoader var1 = getCallerClassLoader();
  102.       println("DriverManager.deregisterDriver: " + var0);
  103.       DriverInfo var3 = null;
  104.  
  105.       int var2;
  106.       for(var2 = 0; var2 < drivers.size(); ++var2) {
  107.          var3 = (DriverInfo)drivers.elementAt(var2);
  108.          if (var3.driver == var0) {
  109.             break;
  110.          }
  111.       }
  112.  
  113.       if (var2 >= drivers.size()) {
  114.          println("    couldn't find driver to unload");
  115.       } else if (getCallerClass(var1, var3.driverClassName) != var3.driverClass) {
  116.          throw new SecurityException();
  117.       } else {
  118.          drivers.removeElementAt(var2);
  119.       }
  120.    }
  121.  
  122.    public static synchronized Enumeration getDrivers() {
  123.       Vector var0 = new Vector();
  124.       if (!initialized) {
  125.          initialize();
  126.       }
  127.  
  128.       ClassLoader var1 = getCallerClassLoader();
  129.  
  130.       for(int var2 = 0; var2 < drivers.size(); ++var2) {
  131.          DriverInfo var3 = (DriverInfo)drivers.elementAt(var2);
  132.          if (getCallerClass(var1, var3.driverClassName) != var3.driverClass) {
  133.             println("    skipping: " + var3);
  134.          } else {
  135.             var0.addElement(var3.driver);
  136.          }
  137.       }
  138.  
  139.       return var0.elements();
  140.    }
  141.  
  142.    public static void setLoginTimeout(int var0) {
  143.       loginTimeout = var0;
  144.    }
  145.  
  146.    public static int getLoginTimeout() {
  147.       return loginTimeout;
  148.    }
  149.  
  150.    public static synchronized void setLogStream(PrintStream var0) {
  151.       SecurityManager var1 = System.getSecurityManager();
  152.       if (var1 != null) {
  153.          var1.checkPermission(SET_LOG_PERMISSION);
  154.       }
  155.  
  156.       logStream = var0;
  157.       if (var0 != null) {
  158.          logWriter = new PrintWriter(var0);
  159.       } else {
  160.          logWriter = null;
  161.       }
  162.  
  163.    }
  164.  
  165.    public static PrintStream getLogStream() {
  166.       return logStream;
  167.    }
  168.  
  169.    public static synchronized void println(String var0) {
  170.       if (logWriter != null) {
  171.          logWriter.println(var0);
  172.          logWriter.flush();
  173.       }
  174.  
  175.    }
  176.  
  177.    private static Class getCallerClass(ClassLoader var0, String var1) {
  178.       Object var2 = null;
  179.  
  180.       try {
  181.          var5 = Class.forName(var1, true, var0);
  182.       } catch (Exception var4) {
  183.          var5 = null;
  184.       }
  185.  
  186.       return var5;
  187.    }
  188.  
  189.    private static void loadInitialDrivers() {
  190.       String var0;
  191.       try {
  192.          var0 = (String)AccessController.doPrivileged(new GetPropertyAction("jdbc.drivers"));
  193.       } catch (Exception var5) {
  194.          var0 = null;
  195.       }
  196.  
  197.       println("DriverManager.initialize: jdbc.drivers = " + var0);
  198.       if (var0 != null) {
  199.          while(var0.length() != 0) {
  200.             int var1 = var0.indexOf(58);
  201.             String var2;
  202.             if (var1 < 0) {
  203.                var2 = var0;
  204.                var0 = "";
  205.             } else {
  206.                var2 = var0.substring(0, var1);
  207.                var0 = var0.substring(var1 + 1);
  208.             }
  209.  
  210.             if (var2.length() != 0) {
  211.                try {
  212.                   println("DriverManager.Initialize: loading " + var2);
  213.                   Class.forName(var2, true, ClassLoader.getSystemClassLoader());
  214.                } catch (Exception var4) {
  215.                   println("DriverManager.Initialize: load failed: " + var4);
  216.                }
  217.             }
  218.          }
  219.  
  220.       }
  221.    }
  222.  
  223.    private static synchronized Connection getConnection(String var0, Properties var1, ClassLoader var2) throws SQLException {
  224.       if (var0 == null) {
  225.          throw new SQLException("The url cannot be null", "08001");
  226.       } else {
  227.          println("DriverManager.getConnection(\"" + var0 + "\")");
  228.          if (!initialized) {
  229.             initialize();
  230.          }
  231.  
  232.          SQLException var3 = null;
  233.  
  234.          for(int var4 = 0; var4 < drivers.size(); ++var4) {
  235.             DriverInfo var5 = (DriverInfo)drivers.elementAt(var4);
  236.             if (getCallerClass(var2, var5.driverClassName) != var5.driverClass) {
  237.                println("    skipping: " + var5);
  238.             } else {
  239.                try {
  240.                   println("    trying " + var5);
  241.                   Connection var6 = var5.driver.connect(var0, var1);
  242.                   if (var6 != null) {
  243.                      println("getConnection returning " + var5);
  244.                      return var6;
  245.                   }
  246.                } catch (SQLException var7) {
  247.                   if (var3 == null) {
  248.                      var3 = var7;
  249.                   }
  250.                }
  251.             }
  252.          }
  253.  
  254.          if (var3 != null) {
  255.             println("getConnection failed: " + var3);
  256.             throw var3;
  257.          } else {
  258.             println("getConnection: no suitable driver");
  259.             throw new SQLException("No suitable driver", "08001");
  260.          }
  261.       }
  262.    }
  263.  
  264.    static void initialize() {
  265.       if (!initialized) {
  266.          initialized = true;
  267.          loadInitialDrivers();
  268.          println("JDBC DriverManager initialized");
  269.       }
  270.    }
  271.  
  272.    private DriverManager() {
  273.    }
  274.  
  275.    private static native ClassLoader getCallerClassLoader();
  276. }
  277.