blob: c3c460628c06aa4c144ed7b672725f02fe78c7c9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* DatabaseUtils.java
*
* Created on June 26, 2006, 1:55 PM
*
*/
package org.netbeans.modules.payara.jakartaee.db;
import java.util.HashMap;
import java.util.Map;
/**
* From DatabaseUtils in the V2 plugin
*
* XXX This primarily code does linear searchs through map keys because of extra
* logic on key comparisons. Find a way to use the maps properly.
*
* @author Nitya Doraisamy
* @author Peter Williams
*/
public class DriverMaps {
private static final int INITIAL_MAP_SIZE = 107;
private static Map<String, String> driverMap;
private static Map<String, String> dsClassMap;
private static Map<String, String> cpClassMap;
private DriverMaps() {
}
/**
* Returns the driver name for the given url
*
* @param url url of this connection
* @return driver name required
*/
public static final String getDriverName(String url) {
return getValueForUrl(driverMap, url);
}
/**
* Returns driver class name for the given url
*
* @param url url of this connection
* @return driver class name required
*/
public static final String getDSClassName(String url) {
return getValueForUrl(dsClassMap, url);
}
private static final String getValueForUrl(Map<String, String> mapping, String url) {
for(String urlPrefix: mapping.keySet()) {
if(url.startsWith(urlPrefix)){
return mapping.get(urlPrefix);
}
}
return null;
}
/**
* Gets the URL prefix fiven a Datasource Classname
* @param inClass Datasource Classname
* @return URL prefix for given Datasource Classname
*/
public static final String getUrlPrefix(String inClass, String resType) {
return "javax.sql.ConnectionPoolDataSource".equals(resType) ? // NOI18N
getPrefix(cpClassMap, inClass) : getPrefix(dsClassMap, inClass);
}
private static final String getPrefix(Map<String, String> classMap, String inClass) {
for(String urlPrefix: classMap.keySet()) {
String dsClass = classMap.get(urlPrefix);
if(dsClass.equalsIgnoreCase(inClass)) {
return urlPrefix;
}
}
return null;
}
static {
driverMap = new HashMap<String, String>(INITIAL_MAP_SIZE);
//IBM DB2
driverMap.put("jdbc:db2:", "COM.ibm.db2.jdbc.net.DB2Driver");
//JDBC-ODBC Bridge
driverMap.put("jdbc:odbc:", "sun.jdbc.odbc.JdbcOdbcDriver");
//Microsoft SQL Server (Weblogic driver)
driverMap.put("jdbc:weblogic:mssqlserver4:", "weblogic.jdbc.mssqlserver4.Driver");
//Oracle-thin
driverMap.put("jdbc:oracle:thin:", "oracle.jdbc.driver.OracleDriver");
//Oracle //OCI 8i
driverMap.put("jdbc:oracle:oci8:", "oracle.jdbc.driver.OracleDriver");
//Oracle //OCI 9i
driverMap.put("jdbc:oracle:oci:", "oracle.jdbc.driver.OracleDriver");
//PointBase
driverMap.put("jdbc:pointbase:", "com.pointbase.jdbc.jdbcUniversalDriver");
//Cloudscape
driverMap.put("jdbc:cloudscape:", "COM.cloudscape.core.JDBCDriver");
//Java DB (Net)
driverMap.put("jdbc:derby:", "org.apache.derby.jdbc.ClientDriver");
//Firebird (JCA/JDBC driver)
driverMap.put("jdbc:firebirdsql:", "org.firebirdsql.jdbc.FBDriver");
//FirstSQL/J //Enterprise Server Edition
driverMap.put("jdbc:dbcp:", "COM.FirstSQL.Dbcp.DbcpDriver");
//FirstSQL/J //Professional Edition
driverMap.put("jdbc:dbcp:", "COM.FirstSQL.Dbcp.DbcpDriver");
//IBM DB2 (DataDirect Connect for JDBC)
driverMap.put("jdbc:datadirect:db2:", "com.ddtek.jdbc.db2.DB2Driver");
//Informix Dynamic Server (DataDirect Connect for JDBC)
driverMap.put("jdbc:datadirect:informix:", "com.ddtek.jdbc.informix.InformixDriver");
//Oracle (DataDirect Connect for JDBC)
driverMap.put("jdbc:datadirect:oracle:", "com.ddtek.jdbc.oracle.OracleDriver");
//Microsoft SQL Server (DataDirect Connect for JDBC)
driverMap.put("jdbc:datadirect:sqlserver:", "com.ddtek.jdbc.sqlserver.SQLServerDriver");
//Sybase (DataDirect Connect for JDBC)
driverMap.put("jdbc:datadirect:sybase:", "com.ddtek.jdbc.sybase.SybaseDriver");
//IDS Server
driverMap.put("jdbc:ids:", "ids.sql.IDSDriver");
//Informix Dynamic Server
driverMap.put("jdbc:informix-sqli:", "com.informix.jdbc.IfxDriver");
//InstantDB (v3.13 and earlier)
driverMap.put("jdbc:idb:", "jdbc.idbDriver");
//InstantDB (v3.14 and later)
driverMap.put("jdbc:idb:", "org.enhydra.instantdb.jdbc.idbDriver");
//Interbase (InterClient driver)
driverMap.put("jdbc:interbase:", "interbase.interclient.Driver");
//HSQLDB //(server)
driverMap.put("jdbc:hsqldb:hsql:", "org.hsqldb.jdbcDriver");
//HSQLDB //(webserver)
driverMap.put("jdbc:hsqldb:http:", "org.hsqldb.jdbcDriver");
//Hypersonic SQL (v1.2 and earlier)
driverMap.put("jdbc:HypersonicSQL:", "hSql.hDriver");
//Hypersonic SQL (v1.3 and later)
driverMap.put("jdbc:HypersonicSQL:", "org.hsql.jdbcDriver");
//jTDS
driverMap.put("jdbc:jtds:sqlserver:", "net.sourceforge.jtds.jdbc.Driver");
//jTDS
driverMap.put("jdbc:jtds:sybase:", "net.sourceforge.jtds.jdbc.Driver");
//Mckoi SQL Database //(server)
driverMap.put("jdbc:mckoi:", "com.mckoi.JDBCDriver");
//Mckoi SQL Database //(standalone)
driverMap.put("jdbc:mckoi:local:", "com.mckoi.JDBCDriver");
//Microsoft SQL Server (JTurbo driver)
driverMap.put("jdbc:JTurbo:", "com.ashna.jturbo.driver.Driver");
//Microsoft SQL Server (JTurbo driver 3.0)
//driverMap.put("jdbc:JTurbo:", "com.newatlanta.jturbo.driver.Driver");
//Microsoft SQL Server (Sprinta driver)
driverMap.put("jdbc:inetdae:", "com.inet.tds.TdsDriver");
//Microsoft SQL Server 2005 (Microsoft driver)
//driverMap.put("jdbc:microsoft:sqlserver:", "com.microsoft.jdbc.sqlserver.SQLServerDriver");
driverMap.put("jdbc:sqlserver:", "com.microsoft.sqlserver.jdbc.SQLServerDriver"); //NOI18N
//MySQL (Connector/J driver)
driverMap.put("jdbc:mysql:", "com.mysql.jdbc.Driver");
//MySQL (MM.MySQL driver)
//driverMap.put("jdbc:mysql:", "org.gjt.mm.mysql.Driver");
//PostgreSQL (v6.5 and earlier)
//driverMap.put("jdbc:postgresql:", "postgresql.Driver");
//PostgreSQL (v7.0 and later)
driverMap.put("jdbc:postgresql:", "org.postgresql.Driver");
//Quadcap Embeddable Database
driverMap.put("jdbc:qed:", "com.quadcap.jdbc.JdbcDriver");
//Sybase (jConnect 4.2 and earlier)
//driverMap.put("jdbc:sybase:Tds:", "com.sybase.jdbc.SybDriver");
//Sybase (jConnect 5.2)
driverMap.put("jdbc:sybase:Tds:", "com.sybase.jdbc2.jdbc.SybDriver");
// Following four entries for drivers to be included in Java Studio Enterprise 7 (Bow)
//Microsoft SQL Server Driver
driverMap.put("jdbc:sun:sqlserver:", "com.sun.sql.jdbc.sqlserver.SQLServerDriver");
//DB2 Driver
driverMap.put("jdbc:sun:db2:", "com.sun.sql.jdbc.db2.DB2Driver");
//Oracle Driver
driverMap.put("jdbc:sun:oracle:", "com.sun.sql.jdbc.oracle.OracleDriver");
//Sybase Driver
driverMap.put("jdbc:sun:sybase:", "com.sun.sql.jdbc.sybase.SybaseDriver");
//AS400 Driver
driverMap.put("jdbc:as400:", "com.ibm.as400.access.AS400JDBCDriver");
}
static {
dsClassMap = new HashMap<String, String>(INITIAL_MAP_SIZE);
//IBM DB2
dsClassMap.put("jdbc:db2:", "com.ibm.db2.jcc.DB2DataSource");
//JDBC-ODBC Bridge
dsClassMap.put("jdbc:odbc:", "sun.jdbc.odbc.JdbcOdbcDriver");
//Microsoft SQL Server (Weblogic driver)
//dsClassMap.put("jdbc:weblogic:mssqlserver4:", "weblogic.jdbc.mssqlserver4.Driver");
//Oracle-thin
dsClassMap.put("jdbc:oracle:thin:", "oracle.jdbc.pool.OracleDataSource");
//Oracle //OCI 8i
dsClassMap.put("jdbc:oracle:oci8:", "oracle.jdbc.pool.OracleDataSource");
//Oracle //OCI 9i
dsClassMap.put("jdbc:oracle:oci:", "oracle.jdbc.pool.OracleDataSource");
//PointBase
dsClassMap.put("jdbc:pointbase:", "com.pointbase.jdbc.jdbcDataSource");
//Cloudscape
dsClassMap.put("jdbc:cloudscape:", "com.cloudscape.core.BasicDataSource");
//Java DB (Net)
dsClassMap.put("jdbc:derby:", "org.apache.derby.jdbc.ClientDataSource");
//Firebird (JCA/JDBC driver)
//dsClassMap.put("jdbc:firebirdsql:", "org.firebirdsql.jdbc.FBDriver");
//FirstSQL/J //Enterprise Server Edition
//dsClassMap.put("jdbc:dbcp:", "COM.FirstSQL.Dbcp.DbcpDriver");
//FirstSQL/J //Professional Edition
//dsClassMap.put("jdbc:dbcp:", "COM.FirstSQL.Dbcp.DbcpDriver");
//IBM DB2 (DataDirect Connect for JDBC)
dsClassMap.put("jdbc:datadirect:db2:", "com.ddtek.jdbcx.db2.DB2DataSource");
//Informix Dynamic Server (DataDirect Connect for JDBC)
dsClassMap.put("jdbc:datadirect:informix:", "com.ddtek.jdbcx.informix.InformixDataSource");
//Oracle (DataDirect Connect for JDBC)
dsClassMap.put("jdbc:datadirect:oracle:", "com.ddtek.jdbcx.oracle.OracleDataSource");
//Microsoft SQL Server (DataDirect Connect for JDBC)
dsClassMap.put("jdbc:datadirect:sqlserver:", "com.ddtek.jdbcx.sqlserver.SQLServerDataSource");
//Sybase (DataDirect Connect for JDBC)
dsClassMap.put("jdbc:datadirect:sybase:", "com.ddtek.jdbcx.sybase.SybaseDataSource");
//IDS Server
dsClassMap.put("jdbc:ids:", "ids.sql.IDSDriver");
//Informix Dynamic Server
dsClassMap.put("jdbc:informix-sqli:", "com.informix.jdbcx.IfxDataSource");
//InstantDB (v3.13 and earlier)
//dsClassMap.put("jdbc:idb:", "jdbc.idbDriver");
//InstantDB (v3.14 and later)
//dsClassMap.put("jdbc:idb:", "org.enhydra.instantdb.jdbc.idbDriver");
//Interbase (InterClient driver)
//dsClassMap.put("jdbc:interbase:", "interbase.interclient.Driver");
//HSQLDB //(server)
//dsClassMap.put("jdbc:hsqldb:hsql:", "org.hsqldb.jdbcDriver");
//HSQLDB //(webserver)
//dsClassMap.put("jdbc:hsqldb:http:", "org.hsqldb.jdbcDriver");
//Hypersonic SQL (v1.2 and earlier)
//dsClassMap.put("jdbc:HypersonicSQL:", "hSql.hDriver");
//Hypersonic SQL (v1.3 and later)
//dsClassMap.put("jdbc:HypersonicSQL:", "org.hsql.jdbcDriver");
//jTDS
dsClassMap.put("jdbc:jtds:sqlserver:", "net.sourceforge.jtds.jdbcx.JtdsDataSource");
//jTDS
dsClassMap.put("jdbc:jtds:sybase:", "net.sourceforge.jtds.jdbcx.JtdsDataSource");
//Mckoi SQL Database //(server)
//dsClassMap.put("jdbc:mckoi:", "com.mckoi.JDBCDriver");
//Mckoi SQL Database //(standalone)
//dsClassMap.put("jdbc:mckoi:local:", "com.mckoi.JDBCDriver");
//Microsoft SQL Server (JTurbo driver old version)
//dsClassMap.put("jdbc:JTurbo:", "com.ashna.jturbo.driver.DataSource");
//Microsoft SQL Server (JTurbo driver 3.0)
dsClassMap.put("jdbc:JTurbo:", "com.newatlanta.jturbo.driver.DataSource");
//Microsoft SQL Server (Sprinta driver)
dsClassMap.put("jdbc:inetdae:", "com.inet.tds.TdsDataSource");
//Microsoft SQL Server 2005 (Microsoft driver)
//dsClassMap.put("jdbc:microsoft:sqlserver:", "com.microsoft.jdbc.sqlserver.SQLServerDataSource");
dsClassMap.put("jdbc:sqlserver:", "com.microsoft.sqlserver.jdbc.SQLServerDataSource"); //NOI18N
//MySQL (Connector/J driver)
//dsClassMap.put("jdbc:mysql:", "com.mysql.jdbc.Driver");
//MySQL (MM.MySQL driver)
dsClassMap.put("jdbc:mysql:", "com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
//PostgreSQL (v6.5 and earlier)
//dsClassMap.put("jdbc:postgresql:", "postgresql.Driver");
//PostgreSQL (v7.0 and later)
dsClassMap.put("jdbc:postgresql:", "org.postgresql.ds.PGSimpleDataSource");//1st implementation without pooling
dsClassMap.put("jdbc:postgresql:", "org.postgresql.ds.PGPoolingDataSource");//another one with pooling support
//Quadcap Embeddable Database
//dsClassMap.put("jdbc:qed:", "com.quadcap.jdbc.JdbcDriver");
//Sybase (jConnect 4.2 and earlier)
//dsClassMap.put("jdbc:sybase:Tds:", "com.sybase.jdbc.SybDriver");
//Sybase (jConnect 5.2)
dsClassMap.put("jdbc:sybase:Tds:", "com.sybase.jdbc2.jdbc.SybDataSource");
// Following four entries for drivers to be included in Java Studio Enterprise 7 (Bow)
//Microsoft SQL Server Driver
dsClassMap.put("jdbc:sun:sqlserver:", "com.sun.sql.jdbcx.sqlserver.SQLServerDataSource");
//DB2 Driver
dsClassMap.put("jdbc:sun:db2:", "com.sun.sql.jdbcx.db2.DB2DataSource");
//Oracle Driver
dsClassMap.put("jdbc:sun:oracle:", "com.sun.sql.jdbcx.oracle.OracleDataSource");
//Sybase
dsClassMap.put("jdbc:sun:sybase:", "com.sun.sql.jdbcx.sybase.SybaseDataSource");
//AS400
dsClassMap.put("jdbc:as400:", "com.ibm.as400.access.AS400JDBCDataSource");
}
static {
cpClassMap = new HashMap<String, String>(INITIAL_MAP_SIZE);
//Java DB (Net)
cpClassMap.put("jdbc:derby:", "org.apache.derby.jdbc.ClientConnectionPoolDataSource");
//DB2 Driver
cpClassMap.put("jdbc:sun:db2:", "com.sun.sql.jdbcx.db2.DB2DataSource");
//Microsoft SQL Server Driver
cpClassMap.put("jdbc:sun:sqlserver:", "com.sun.sql.jdbcx.sqlserver.SQLServerDataSource");
//Oracle Driver
cpClassMap.put("jdbc:sun:oracle:", "com.sun.sql.jdbcx.oracle.OracleDataSource");
//Sybase Driver
cpClassMap.put("jdbc:sun:sybase:", "com.sun.sql.jdbcx.sybase.SybaseDataSource");
//PostgreSQL (v7.0 and later)
cpClassMap.put("jdbc:postgresql:", "org.postgresql.ds.PGConnectionPoolDataSource");
//Microsoft SQL Server 2000 (Microsoft driver)
cpClassMap.put("jdbc:sqlserver:", "com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource");
//jTDS
cpClassMap.put("jdbc:jtds:sqlserver:", "net.sourceforge.jtds.jdbcx.JtdsDataSource");
//jTDS
cpClassMap.put("jdbc:jtds:sybase:", "net.sourceforge.jtds.jdbcx.JtdsDataSource");
//Oracle //OCI 8i
cpClassMap.put("jdbc:oracle:oci8:", "oracle.jdbc.pool.OracleConnectionPoolDataSource");
//Oracle-thin
cpClassMap.put("jdbc:oracle:thin:", "oracle.jdbc.pool.OracleConnectionPoolDataSource");
//IBM DB2
cpClassMap.put("jdbc:db2:", "com.ibm.db2.jcc.DB2ConnectionPoolDataSource");
//Microsoft SQL Server (DataDirect Connect for JDBC)
cpClassMap.put("jdbc:datadirect:sqlserver:", "com.ddtek.jdbcx.sqlserver.SQLServerDataSource");
//Oracle (DataDirect Connect for JDBC)
cpClassMap.put("jdbc:datadirect:oracle:", "com.ddtek.jdbcx.oracle.OracleDataSource");
//IBM DB2 (DataDirect Connect for JDBC)
cpClassMap.put("jdbc:datadirect:db2:", "com.ddtek.jdbcx.db2.DB2DataSource");
//Informix Dynamic Server (DataDirect Connect for JDBC)
cpClassMap.put("jdbc:datadirect:informix:", "com.ddtek.jdbcx.informix.InformixDataSource");
//Sybase (DataDirect Connect for JDBC)
cpClassMap.put("jdbc:datadirect:sybase:", "com.ddtek.jdbcx.sybase.SybaseDataSource");
//Sybase (jConnect 5.2)
cpClassMap.put("jdbc:sybase:Tds:", "com.sybase.jdbc2.jdbc.SybConnectionPoolDataSource");
//PointBase
cpClassMap.put("jdbc:pointbase:", "com.pointbase.jdbc.jdbcDataSource");
//Cloudscape
cpClassMap.put("jdbc:cloudscape:", "COM.cloudscape.core.LocalConnectionPoolDataSource");
//Informix Dynamic Server
cpClassMap.put("jdbc:informix-sqli:", "com.informix.jdbcx.IfxConnectionPoolDataSource");
//MySQL (MM.MySQL driver)
cpClassMap.put("jdbc:mysql:", "com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource");
//JDBC-ODBC Bridge
cpClassMap.put("jdbc:odbc:", "sun.jdbc.odbc.JdbcOdbcDriver");
//AS400
cpClassMap.put("jdbc:as400:", "com.ibm.as400.access.AS400JDBCConnectionPoolDataSource");
}
}