/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.hibernate.eclipse.console.utils; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /** * @author max */ public class DriverClassHelpers { private Map<String, String> dialectNames = new HashMap<String, String>(); private Map<String, Set<String>> connectionUrls = new HashMap<String, Set<String>>(); private Map<String, Set<String>> driverClasses = new HashMap<String, Set<String>>(); private Map<String, String> driverToDialect = new HashMap<String, String>(); public DriverClassHelpers() { // externalize this! dialectNames.put("DB2", "org.hibernate.dialect.DB2Dialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("DB2/390", "org.hibernate.dialect.DB2390Dialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("DB2/400", "org.hibernate.dialect.DB2400Dialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Derby", "org.hibernate.dialect.DerbyDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("FrontBase", "org.hibernate.dialect.FrontBaseDialect"); //$NON-NLS-1$ //$NON-NLS-2$ //Not in 3.2 anymore dialectNames.put("Generic", "org.hibernate.dialect.GenericDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("HSQL", "org.hibernate.dialect.HSQLDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("H2", "org.hibernate.dialect.H2Dialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Informix", "org.hibernate.dialect.InformixDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Ingres", "org.hibernate.dialect.IngresDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Ingres9", "org.hibernate.dialect.Ingres9Dialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Ingres10", "org.hibernate.dialect.Ingres10Dialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Interbase", "org.hibernate.dialect.InterbaseDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Firebird", "org.hibernate.dialect.FirebirdDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Mckoi SQL", "org.hibernate.dialect.MckoiDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("MySQL", "org.hibernate.dialect.MySQLDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("MySQL (InnoDB)", "org.hibernate.dialect.MySQLInnoDBDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("MySQL (MyISAM)", "org.hibernate.dialect.MySQLMyISAMDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("MySQL 5", "org.hibernate.dialect.MySQL5Dialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("MySQL 5 (InnoDB)", "org.hibernate.dialect.MySQL5InnoDBDialect"); //$NON-NLS-1$ //$NON-NLS-2$ //dialectNames.put("Oracle","org.hibernate.dialect.OracleDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Oracle 8i","org.hibernate.dialect.Oracle8iDialect"); //$NON-NLS-1$ //$NON-NLS-2$ //dialectNames.put("Oracle 9", "org.hibernate.dialect.Oracle9Dialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Oracle 9i", "org.hibernate.dialect.Oracle9iDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Oracle 10g", "org.hibernate.dialect.Oracle10gDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Pointbase", "org.hibernate.dialect.PointbaseDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("PostgreSQL", "org.hibernate.dialect.PostgreSQLDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Progress", "org.hibernate.dialect.ProgressDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("SAP DB", "org.hibernate.dialect.SAPDBDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Sybase", "org.hibernate.dialect.SybaseDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Sybase 11", "org.hibernate.dialect.Sybase11Dialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Sybase Anywhere", "org.hibernate.dialect.SybaseAnywhereDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("SQL Server", "org.hibernate.dialect.SQLServerDialect"); //$NON-NLS-1$ //$NON-NLS-2$ dialectNames.put("Teiid", "org.teiid.dialect.TeiidDialect"); //$NON-NLS-1$ //$NON-NLS-2$ addDriverAndURLS("org.hibernate.dialect.HSQLDialect", //$NON-NLS-1$ "org.hsqldb.jdbcDriver", //$NON-NLS-1$ new String[] { "jdbc:hsqldb:hsql://<host>", //$NON-NLS-1$ "jdbc:hsqldb:<dbname>", //$NON-NLS-1$ "jdbc:hsqldb:." } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.H2Dialect", //$NON-NLS-1$ "org.h2.Driver", //$NON-NLS-1$ new String[] { "jdbc:h2:<filename>", //$NON-NLS-1$ "jdbc:h2:mem:", //$NON-NLS-1$ "jdbc:h2:mem:<databaseName>", //$NON-NLS-1$ "jdbc:h2:tcp://<server>[:<port>]/<databaseName>" //$NON-NLS-1$ } ); addDriverAndURLS("org.hibernate.dialect.IngresDialect", //$NON-NLS-1$ "com.ingres.jdbc.IngresDriver", //$NON-NLS-1$ new String[] { "jdbc:ingres://localhost:II7/demodb", //$NON-NLS-1$ "jdbc:ingres://<server>:<port>/<databaseName>", //$NON-NLS-1$ } ); addDriverAndURLS("org.hibernate.dialect.Ingres9Dialect", //$NON-NLS-1$ "com.ingres.jdbc.IngresDriver", //$NON-NLS-1$ new String[] { "jdbc:ingres://localhost:II7/demodb", //$NON-NLS-1$ "jdbc:ingres://<server>:<port>/<databaseName>", //$NON-NLS-1$ } ); addDriverAndURLS("org.hibernate.dialect.Ingres10Dialect", //$NON-NLS-1$ "com.ingres.jdbc.IngresDriver", //$NON-NLS-1$ new String[] { "jdbc:ingres://localhost:II7/demodb", //$NON-NLS-1$ "jdbc:ingres://<server>:<port>/<databaseName>", //$NON-NLS-1$ } ); addDriverAndURLS("org.hibernate.dialect.OracleDialect", //$NON-NLS-1$ "oracle.jdbc.driver.OracleDriver", //$NON-NLS-1$ new String[] { "jdbc:oracle:thin:@localhost:1521:orcl", //$NON-NLS-1$ "jdbc:oracle:thin:@<host>:<port1521>:<sid>" } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.Oracle9Dialect", //$NON-NLS-1$ "oracle.jdbc.driver.OracleDriver", //$NON-NLS-1$ new String[] { "jdbc:oracle:thin:@localhost:1521:orcl", //$NON-NLS-1$ "jdbc:oracle:thin:@<host>:<port1521>:<sid>" } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.Oracle10gDialect", //$NON-NLS-1$ "oracle.jdbc.driver.OracleDriver", //$NON-NLS-1$ new String[] { "jdbc:oracle:thin:@localhost:1521:orcl", //$NON-NLS-1$ "jdbc:oracle:thin:@<host>:<port1521>:<sid>" } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.Oracle8iDialect", //$NON-NLS-1$ "oracle.jdbc.driver.OracleDriver", //$NON-NLS-1$ new String[] { "jdbc:oracle:thin:@localhost:1521:orcl", //$NON-NLS-1$ "jdbc:oracle:thin:@<host>:<port1521>:<sid>" } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.MySQLDialect", //$NON-NLS-1$ "org.gjt.mm.mysql.Driver", //$NON-NLS-1$ new String[] { "jdbc:mysql://<hostname>/<database>", //$NON-NLS-1$ "jdbc:mysql:///test", //$NON-NLS-1$ "jdbc:mysql:///<name>", //$NON-NLS-1$ } ); addDriverAndURLS("org.hibernate.dialect.MySQLDialect", //$NON-NLS-1$ "com.mysql.jdbc.Driver", //$NON-NLS-1$ new String[] { "jdbc:mysql://<hostname>/<database>", //$NON-NLS-1$ "jdbc:mysql:///test", //$NON-NLS-1$ "jdbc:mysql:///<name>", //$NON-NLS-1$ "jdbc:mysql://<host><:port>/<database>" //$NON-NLS-1$ } ); addDriverAndURLS("org.hibernate.dialect.MySQLInnoDBDialect", //$NON-NLS-1$ "org.gjt.mm.mysql.Driver", //$NON-NLS-1$ new String[] { "jdbc:mysql://<hostname>/<database>", //$NON-NLS-1$ "jdbc:mysql:///test", //$NON-NLS-1$ "jdbc:mysql:///<name>" } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.MySQLMyISAMDialect", //$NON-NLS-1$ "org.gjt.mm.mysql.Driver", //$NON-NLS-1$ new String[] { "jdbc:mysql://<hostname>/<database>", //$NON-NLS-1$ "jdbc:mysql:///test", //$NON-NLS-1$ "jdbc:mysql:///<name>" } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.MySQL5Dialect", //$NON-NLS-1$ "org.gjt.mm.mysql.Driver", //$NON-NLS-1$ new String[] { "jdbc:mysql://<hostname>/<database>", //$NON-NLS-1$ "jdbc:mysql:///test", //$NON-NLS-1$ "jdbc:mysql:///<name>" } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.MySQL5InnoDBDialect", //$NON-NLS-1$ "org.gjt.mm.mysql.Driver", //$NON-NLS-1$ new String[] { "jdbc:mysql://<hostname>/<database>", //$NON-NLS-1$ "jdbc:mysql:///test", //$NON-NLS-1$ "jdbc:mysql:///<name>" } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.PostgreSQLDialect", //$NON-NLS-1$ "org.postgresql.Driver", //$NON-NLS-1$ new String[] { "jdbc:postgresql:template1", //$NON-NLS-1$ "jdbc:postgresql:<name>" } //$NON-NLS-1$ ); addDriverAndURLS("org.hibernate.dialect.ProgressDialect", //$NON-NLS-1$ "com.progress.sql.jdbc.JdbcProgressDriver", //$NON-NLS-1$ new String[] { "jdbc:JdbcProgress:T:host:port:dbname;WorkArounds=536870912", //$NON-NLS-1$ } ); addDriverAndURLS("org.hibernate.dialect.DB2Dialect", "COM.ibm.db2.jdbc.app.DB2Driver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:db2:test", "jdbc:db2:<name>" }); //$NON-NLS-1$ //$NON-NLS-2$ addDriverAndURLS("org.hibernate.dialect.DB2400Dialect", "com.ibm.as400.access.AS400JDBCDriver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:as400://<systemname>", "jdbc:db2:<name>" }); //$NON-NLS-1$ //$NON-NLS-2$ addDriverAndURLS("org.hibernate.dialect.DerbyDialect", "org.apache.derby.jdbc.EmbeddedDriver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:derby:/test;create=true" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.SybaseDialect", "com.sybase.jdbc2.jdbc.SybDriver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:sybase:Tds:co3061835-a:5000/tempdb" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.MckoiDialect", "com.mckoi.JDBCDriver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:mckoi:///", "jdbc:mckoi:local://C:/mckoi1.00/db.conf" }); //$NON-NLS-1$ //$NON-NLS-2$ addDriverAndURLS("org.hibernate.dialect.SAPDBDialect", "com.sap.dbtech.jdbc.DriverSapDB", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:sapdb://localhost/TST" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.SQLServerDialect", "com.jnetdirect.jsql.JSQLDriver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:JSQLConnect://1E1/test" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.SQLServerDialect", "com.newatlanta.jturbo.driver.Driver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:JTurbo://1E1:1433/test" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.SQLServerDialect", "weblogic.jdbc.mssqlserver4.Driver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:weblogic:mssqlserver4:1E1:1433" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.SQLServerDialect", "com.microsoft.jdbc.sqlserver.SQLServerDriver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:microsoft:sqlserver://1E1;DatabaseName=test;SelectMethod=cursor" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.SQLServerDialect", "net.sourceforge.jtds.jdbc.Driver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:jtds:sqlserver://1E1/test" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.InterbaseDialect", "interbase.interclient.Driver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:interbase://localhost:3060/C:/firebird/test.gdb" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.InterbaseDialect", "org.firebirdsql.jdbc.FBDriver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:interbase://localhost:3060/C:/firebird/test.gdb" }); //$NON-NLS-1$ addDriverAndURLS("org.hibernate.dialect.PointbaseDialect", "com.pointbase.jdbc.jdbcUniversalDriver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:pointbase:embedded:sample" }); //$NON-NLS-1$ addDriverAndURLS("org.teiid.dialect.TeiidDialect", "org.teiid.jdbc.TeiidDriver", //$NON-NLS-1$ //$NON-NLS-2$ new String[] { "jdbc:teiid:vdb@mm://<host>:<port>;user=<user>;password=<password>", //$NON-NLS-1$ "jdbc:teiid:vdb@mms://<host>:<port>;user=<user>;password=<password>", //$NON-NLS-1$ "jdbc:teiid:vdb@<path_to>/deploy.properties;user=<user>;password=<password>", //$NON-NLS-1$ } ); } /** * @param dialect TODO * */ private void addDriverAndURLS(String dialect, String driverclass, String[] urls) { add(driverClasses, dialect, driverclass); for (int i = 0; i < urls.length; i++) { String url = urls[i]; add(connectionUrls, driverclass, url); } driverToDialect.put(driverclass, dialect); } /** * @param connectionUrls2 * @param string * @param string2 */ private void add(Map<String, Set<String>> map, String key, String value) { Set<String> existing = map.get(key); if(existing==null) { existing = new HashSet<String>(); map.put(key,existing); } existing.add(value); } public String[] getDialectNames() { List<String> list = new ArrayList<String>(dialectNames.keySet() ); Collections.sort(list); return list.toArray(new String[list.size()]); } /** * * @param fullName * @return short dialect name by corresponding class if available, otherwise return fullName assuming it is a "raw" classname. */ public String getShortDialectName(String fullName) { for (Entry<String, String> entry : dialectNames.entrySet()) { if (entry.getValue().equals(fullName)) return entry.getKey(); } return fullName; } /** * * @param driverclass * @return dialect by driverclass. */ public String getDialect(String driverclass) { if (driverclass == null) return null; return driverToDialect.get(driverclass); } /** * * @param dialectName * @return corresponding class name if available, otherwise return dialectName assuming it is a "raw" classname */ public String getDialectClass(String dialectName) { String dialectClass = dialectNames.get(dialectName); return dialectClass != null ? dialectClass : dialectName; } public String[] getDriverClasses(String dialectName) { Set<String> result = driverClasses.get(dialectName); if(result != null) { return result.toArray(new String[result.size()]); } else { return new String[0]; } } public String[] getConnectionURLS(String driverclass) { Set<String> result = connectionUrls.get(driverclass); if(result != null) { return result.toArray(new String[result.size()]); } else { return new String[0]; } } }