You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2005/09/08 23:14:21 UTC

svn commit: r279626 - in /db/ddlutils/trunk/src: java/org/apache/ddlutils/ java/org/apache/ddlutils/platform/ test/org/apache/ddlutils/ test/org/apache/ddlutils/platform/

Author: tomdz
Date: Thu Sep  8 14:14:09 2005
New Revision: 279626

URL: http://svn.apache.org/viewcvs?rev=279626&view=rev
Log:
Reworked determination of platform type from jdbc driver & connection url
Added tests for this determination
Added jdbc driver & subprotocols for DataDirect JDBC drivers

Added:
    db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestPlatformUtils.java
Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java
    db/ddlutils/trunk/src/test/org/apache/ddlutils/RunAllTests.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java?rev=279626&r1=279625&r2=279626&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformUtils.java Thu Sep  8 14:14:09 2005
@@ -20,10 +20,13 @@
 import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
 
 import javax.sql.DataSource;
 
 import org.apache.ddlutils.platform.AxionPlatform;
+import org.apache.ddlutils.platform.CloudscapePlatform;
 import org.apache.ddlutils.platform.Db2Platform;
 import org.apache.ddlutils.platform.DerbyPlatform;
 import org.apache.ddlutils.platform.FirebirdPlatform;
@@ -39,12 +42,23 @@
 import org.apache.ddlutils.platform.SybasePlatform;
 
 /**
- * Utility functions for dealing with the database platforms.
+ * Utility functions for dealing with database platforms.
+ * 
+ * @author <a href="mailto:tomdz@apache.org">Thomas Dudziak</a>
+ * @version $Revision: 279421 $
  */
 public class PlatformUtils
 {
     // Extended drivers that support more than one database
 
+    /** The DataDirect Connect DB2 jdbc driver */
+    public static final String JDBC_DRIVER_DATADIRECT_DB2        = "com.ddtek.jdbc.db2.DB2Driver";
+    /** The DataDirect Connect SQLServer jdbc driver */
+    public static final String JDBC_DRIVER_DATADIRECT_SQLSERVER  = "com.ddtek.jdbc.sqlserver.SQLServerDriver";
+    /** The DataDirect Connect Oracle jdbc driver */
+    public static final String JDBC_DRIVER_DATADIRECT_ORACLE     = "com.ddtek.jdbc.oracle.OracleDriver";
+    /** The DataDirect Connect Sybase jdbc driver */
+    public static final String JDBC_DRIVER_DATADIRECT_SYBASE     = "com.ddtek.jdbc.sybase.SybaseDriver";
     /** The i-net DB2 jdbc driver */
     public static final String JDBC_DRIVER_INET_DB2              = "com.inet.drda.DRDADriver";
     /** The i-net Oracle jdbc driver */
@@ -60,36 +74,54 @@
     /** The jTDS jdbc driver for SQLServer and Sybase */
     public static final String JDBC_DRIVER_JTDS                  = "net.sourceforge.jtds.jdbc.Driver";
 
+    /** The subprotocol used by the DataDirect DB2 driver */
+    public static final String JDBC_SUBPROTOCOL_DATADIRECT_DB2            = "datadirect:db2";
+    /** The subprotocol used by the DataDirect SQLServer driver */
+    public static final String JDBC_SUBPROTOCOL_DATADIRECT_SQLSERVER      = "datadirect:sqlserver";
+    /** The subprotocol used by the DataDirect Oracle driver */
+    public static final String JDBC_SUBPROTOCOL_DATADIRECT_ORACLE         = "datadirect:oracle";
+    /** The subprotocol used by the DataDirect Sybase driver */
+    public static final String JDBC_SUBPROTOCOL_DATADIRECT_SYBASE         = "datadirect:sybase";
     /** The subprotocol used by the i-net DB2 driver */
-    public static final String JDBC_SUBPROTOCOL_INET_DB2                = "inetdb2";
+    public static final String JDBC_SUBPROTOCOL_INET_DB2                  = "inetdb2";
     /** The subprotocol used by the i-net Oracle driver */
-    public static final String JDBC_SUBPROTOCOL_INET_ORACLE             = "inetora";
+    public static final String JDBC_SUBPROTOCOL_INET_ORACLE               = "inetora";
     /** A subprotocol used by the i-net SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER          = "inetdae";
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER            = "inetdae";
     /** A subprotocol used by the i-net SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER6         = "inetdae6";
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER6           = "inetdae6";
     /** A subprotocol used by the i-net SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7         = "inetdae7";
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7           = "inetdae7";
     /** A subprotocol used by the i-net SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7A        = "inetdae7a";
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7A          = "inetdae7a";
     /** A subprotocol used by the pooled i-net SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER_POOLED   = "inetpool:inetdae";
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER_POOLED_1   = "inetpool:inetdae";
     /** A subprotocol used by the pooled i-net SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER6_POOLED  = "inetpool:inetdae6";
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER6_POOLED_1  = "inetpool:inetdae6";
     /** A subprotocol used by the pooled i-net SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7_POOLED  = "inetpool:inetdae7";
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7_POOLED_1  = "inetpool:inetdae7";
     /** A subprotocol used by the pooled i-net SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7A_POOLED = "inetpool:inetdae7a";
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7A_POOLED_1 = "inetpool:inetdae7a";
+    /** A subprotocol used by the pooled i-net SQLServer driver */
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER_POOLED_2   = "inetpool:jdbc:inetdae";
+    /** A subprotocol used by the pooled i-net SQLServer driver */
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER6_POOLED_2  = "inetpool:jdbc:inetdae6";
+    /** A subprotocol used by the pooled i-net SQLServer driver */
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7_POOLED_2  = "inetpool:jdbc:inetdae7";
+    /** A subprotocol used by the pooled i-net SQLServer driver */
+    public static final String JDBC_SUBPROTOCOL_INET_SQLSERVER7A_POOLED_2 = "inetpool:jdbc:inetdae7a";
     /** The subprotocol used by the i-net Sybase driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SYBASE             = "inetsyb";
+    public static final String JDBC_SUBPROTOCOL_INET_SYBASE               = "inetsyb";
     /** The subprotocol used by the pooled i-net Sybase driver */
-    public static final String JDBC_SUBPROTOCOL_INET_SYBASE_POOLED      = "inetpool:inetsyb";
+    public static final String JDBC_SUBPROTOCOL_INET_SYBASE_POOLED_1      = "inetpool:inetsyb";
+    /** The subprotocol used by the pooled i-net Sybase driver */
+    public static final String JDBC_SUBPROTOCOL_INET_SYBASE_POOLED_2      = "inetpool:jdbc:inetsyb";
     /** The subprotocol used by the JNetDirect SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_JSQLCONNECT_SQLSERVER   = "JSQLConnect";
+    public static final String JDBC_SUBPROTOCOL_JSQLCONNECT_SQLSERVER     = "JSQLConnect";
     /** The subprotocol used by the jTDS SQLServer driver */
-    public static final String JDBC_SUBPROTOCOL_JTDS_SQLSERVER          = "jtds:sqlserver";
+    public static final String JDBC_SUBPROTOCOL_JTDS_SQLSERVER            = "jtds:sqlserver";
     /** The subprotocol used by the jTDS Sybase driver */
-    public static final String JDBC_SUBPROTOCOL_JTDS_SYBASE             = "jtds:sybase";
+    public static final String JDBC_SUBPROTOCOL_JTDS_SYBASE               = "jtds:sybase";
 
     /** Maps the sub-protocl part of a jdbc connection url to a OJB platform name */
     private HashMap jdbcSubProtocolToPlatform = new HashMap();
@@ -103,36 +135,55 @@
     {
         // Note that currently Sapdb and MaxDB have equal subprotocols and
         // drivers so we have no means to distinguish them
-        jdbcSubProtocolToPlatform.put(AxionPlatform.JDBC_SUBPROTOCOL,                         AxionPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(Db2Platform.JDBC_SUBPROTOCOL,                           Db2Platform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_DB2,                Db2Platform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(DerbyPlatform.JDBC_SUBPROTOCOL,                         DerbyPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(FirebirdPlatform.JDBC_SUBPROTOCOL,                      FirebirdPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(HsqlDbPlatform.JDBC_SUBPROTOCOL,                        HsqlDbPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(InterbasePlatform.JDBC_SUBPROTOCOL,                     InterbasePlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(SapDbPlatform.JDBC_SUBPROTOCOL,                         MaxDbPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(MckoiPlatform.JDBC_SUBPROTOCOL,                         MckoiPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(MSSqlPlatform.JDBC_SUBPROTOCOL,                         MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER,          MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER6,         MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7,         MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7A,        MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER_POOLED,   MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER6_POOLED,  MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7_POOLED,  MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7A_POOLED, MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_JTDS_SQLSERVER,          MSSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(MySqlPlatform.JDBC_SUBPROTOCOL,                         MySqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(Oracle8Platform.JDBC_SUBPROTOCOL,                       Oracle8Platform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_ORACLE,             Oracle8Platform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PostgreSqlPlatform.JDBC_SUBPROTOCOL,                    PostgreSqlPlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(SybasePlatform.JDBC_SUBPROTOCOL,                        SybasePlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SYBASE,             SybasePlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SYBASE_POOLED,      SybasePlatform.DATABASENAME);
-        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_JTDS_SYBASE,             SybasePlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(AxionPlatform.JDBC_SUBPROTOCOL,                           AxionPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(CloudscapePlatform.JDBC_SUBPROTOCOL_1,                    CloudscapePlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(CloudscapePlatform.JDBC_SUBPROTOCOL_2,                    CloudscapePlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(Db2Platform.JDBC_SUBPROTOCOL,                             Db2Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(Db2Platform.JDBC_SUBPROTOCOL_OS390_1,                     Db2Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(Db2Platform.JDBC_SUBPROTOCOL_OS390_2,                     Db2Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_DATADIRECT_DB2,            Db2Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_DB2,                  Db2Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(DerbyPlatform.JDBC_SUBPROTOCOL,                           DerbyPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(FirebirdPlatform.JDBC_SUBPROTOCOL,                        FirebirdPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(HsqlDbPlatform.JDBC_SUBPROTOCOL,                          HsqlDbPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(InterbasePlatform.JDBC_SUBPROTOCOL,                       InterbasePlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(SapDbPlatform.JDBC_SUBPROTOCOL,                           MaxDbPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(MckoiPlatform.JDBC_SUBPROTOCOL,                           MckoiPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(MSSqlPlatform.JDBC_SUBPROTOCOL,                           MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_DATADIRECT_SQLSERVER,      MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER,            MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER6,           MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7,           MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7A,          MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER_POOLED_1,   MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER6_POOLED_1,  MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7_POOLED_1,  MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7A_POOLED_1, MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER_POOLED_2,   MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER6_POOLED_2,  MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7_POOLED_2,  MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SQLSERVER7A_POOLED_2, MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_JSQLCONNECT_SQLSERVER,     MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_JTDS_SQLSERVER,            MSSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(MySqlPlatform.JDBC_SUBPROTOCOL,                           MySqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(Oracle8Platform.JDBC_SUBPROTOCOL_THIN,                    Oracle8Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(Oracle8Platform.JDBC_SUBPROTOCOL_OCI8,                    Oracle8Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(Oracle8Platform.JDBC_SUBPROTOCOL_THIN_OLD,                Oracle8Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_DATADIRECT_ORACLE,         Oracle8Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_ORACLE,               Oracle8Platform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PostgreSqlPlatform.JDBC_SUBPROTOCOL,                      PostgreSqlPlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(SybasePlatform.JDBC_SUBPROTOCOL,                          SybasePlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_DATADIRECT_SYBASE,         SybasePlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SYBASE,               SybasePlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SYBASE_POOLED_1,      SybasePlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_INET_SYBASE_POOLED_2,      SybasePlatform.DATABASENAME);
+        jdbcSubProtocolToPlatform.put(PlatformUtils.JDBC_SUBPROTOCOL_JTDS_SYBASE,               SybasePlatform.DATABASENAME);
 
         jdbcDriverToPlatform.put(AxionPlatform.JDBC_DRIVER,                       AxionPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(Db2Platform.JDBC_DRIVER,                         Db2Platform.DATABASENAME);
+        jdbcDriverToPlatform.put(Db2Platform.JDBC_DRIVER_OLD1,                    Db2Platform.DATABASENAME);
+        jdbcDriverToPlatform.put(Db2Platform.JDBC_DRIVER_OLD2,                    Db2Platform.DATABASENAME);
+        jdbcDriverToPlatform.put(PlatformUtils.JDBC_DRIVER_DATADIRECT_DB2,        Db2Platform.DATABASENAME);
         jdbcDriverToPlatform.put(PlatformUtils.JDBC_DRIVER_INET_DB2,              Db2Platform.DATABASENAME);
         jdbcDriverToPlatform.put(DerbyPlatform.JDBC_DRIVER_EMBEDDED,              DerbyPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(DerbyPlatform.JDBC_DRIVER,                       DerbyPlatform.DATABASENAME);
@@ -142,15 +193,19 @@
         jdbcDriverToPlatform.put(SapDbPlatform.JDBC_DRIVER,                       MaxDbPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(MckoiPlatform.JDBC_DRIVER,                       MckoiPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(MSSqlPlatform.JDBC_DRIVER,                       MSSqlPlatform.DATABASENAME);
+        jdbcDriverToPlatform.put(PlatformUtils.JDBC_DRIVER_DATADIRECT_SQLSERVER,  MSSqlPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(PlatformUtils.JDBC_DRIVER_INET_SQLSERVER,        MSSqlPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(PlatformUtils.JDBC_DRIVER_JSQLCONNECT_SQLSERVER, MSSqlPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(MySqlPlatform.JDBC_DRIVER,                       MySqlPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(MySqlPlatform.JDBC_DRIVER_OLD,                   MySqlPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(Oracle8Platform.JDBC_DRIVER,                     Oracle8Platform.DATABASENAME);
+        jdbcDriverToPlatform.put(Oracle8Platform.JDBC_DRIVER_OLD,                 Oracle8Platform.DATABASENAME);
+        jdbcDriverToPlatform.put(PlatformUtils.JDBC_DRIVER_DATADIRECT_ORACLE,     Oracle8Platform.DATABASENAME);
         jdbcDriverToPlatform.put(PlatformUtils.JDBC_DRIVER_INET_ORACLE,           Oracle8Platform.DATABASENAME);
         jdbcDriverToPlatform.put(PostgreSqlPlatform.JDBC_DRIVER,                  PostgreSqlPlatform.DATABASENAME);
         jdbcDriverToPlatform.put(SybasePlatform.JDBC_DRIVER,                      SybasePlatform.DATABASENAME);
         jdbcDriverToPlatform.put(SybasePlatform.JDBC_DRIVER_OLD,                  SybasePlatform.DATABASENAME);
+        jdbcDriverToPlatform.put(PlatformUtils.JDBC_DRIVER_DATADIRECT_SYBASE,     SybasePlatform.DATABASENAME);
         jdbcDriverToPlatform.put(PlatformUtils.JDBC_DRIVER_INET_SYBASE,           SybasePlatform.DATABASENAME);
     }
 
@@ -210,41 +265,16 @@
         {
             return null;
         }
-
-        int pos     = jdbcConnectionUrl.indexOf(':');
-        int lastPos = pos;
-
-        // we're skipping over the 'jdbc'
-        lastPos = pos;
-        pos     = jdbcConnectionUrl.indexOf(':', lastPos + 1);
-
-        String subProtocol = jdbcConnectionUrl.substring(lastPos + 1, pos);
-
-        // there are a few jdbc drivers that have a subprotocol containing one or more ':'
-        if ("inetpool".equals(subProtocol))
+        for (Iterator it = jdbcSubProtocolToPlatform.entrySet().iterator(); it.hasNext();)
         {
-            // Possible forms are:
-            //   inetpool:<subprotocol>
-            //   inetpool:jdbc:<subprotocol>   (where we'll remove the 'jdbc' part)
-            
-            int tmpPos = jdbcConnectionUrl.indexOf(':', pos + 1);
+            Map.Entry entry          = (Map.Entry)it.next();
+            String    curSubProtocol = "jdbc:" + (String)entry.getKey() + ":";
 
-            if ("inetpool:jdbc".equals(jdbcConnectionUrl.substring(lastPos + 1, tmpPos)))
+            if (jdbcConnectionUrl.startsWith(curSubProtocol))
             {
-                pos    = tmpPos;
-                tmpPos = jdbcConnectionUrl.indexOf(':', pos + 1);
+                return (String)entry.getValue();
             }
-            subProtocol += ":" + jdbcConnectionUrl.substring(pos + 1, tmpPos);
         }
-        else if ("jtds".equals(subProtocol) ||
-                 "microsoft".equals(subProtocol) ||
-                 "sybase".equals(subProtocol))
-        {
-            pos         = jdbcConnectionUrl.indexOf(':', pos + 1);
-            subProtocol = ":" + jdbcConnectionUrl.substring(lastPos + 1, pos);
-        }
-
-        return (String)jdbcSubProtocolToPlatform.get(subProtocol);
+        return null;
     }
-
 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java?rev=279626&r1=279625&r2=279626&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/CloudscapePlatform.java Thu Sep  8 14:14:09 2005
@@ -31,6 +31,10 @@
 {
     /** Database name of this platform */
     public static final String DATABASENAME = "Cloudscape";
+    /** A subprotocol used by the DB2 network driver */
+    public static final String JDBC_SUBPROTOCOL_1 = "db2j:net";
+    /** A subprotocol used by the DB2 network driver */
+    public static final String JDBC_SUBPROTOCOL_2 = "cloudscape:net";
 
     /**
      * Creates a new platform instance.

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java?rev=279626&r1=279625&r2=279626&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Db2Platform.java Thu Sep  8 14:14:09 2005
@@ -32,9 +32,17 @@
     /** Database name of this platform */
     public static final String DATABASENAME     = "DB2";
     /** The standard DB2 jdbc driver */
-    public static final String JDBC_DRIVER      = "COM.ibm.db2.jdbc.app.DB2Driver";
+    public static final String JDBC_DRIVER      = "com.ibm.db2.jcc.DB2Driver";
+    /** Older name for the jdbc driver */
+    public static final String JDBC_DRIVER_OLD1 = "COM.ibm.db2.jdbc.app.DB2Driver";
+    /** Older name for the jdbc driver */
+    public static final String JDBC_DRIVER_OLD2 = "COM.ibm.db2os390.sqlj.jdbc.DB2SQLJDriver";
     /** The subprotocol used by the standard DB2 driver */
     public static final String JDBC_SUBPROTOCOL = "db2";
+    /** An alternative subprotocol used by the standard DB2 driver on OS/390 */
+    public static final String JDBC_SUBPROTOCOL_OS390_1 = "db2os390";
+    /** An alternative subprotocol used by the standard DB2 driver on OS/390 */
+    public static final String JDBC_SUBPROTOCOL_OS390_2 = "db2os390sqlj";
 
     /**
      * Creates a new platform instance.

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java?rev=279626&r1=279625&r2=279626&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/Oracle8Platform.java Thu Sep  8 14:14:09 2005
@@ -31,11 +31,17 @@
 public class Oracle8Platform extends PlatformImplBase
 {
     /** Database name of this platform */
-    public static final String DATABASENAME     = "Oracle";
+    public static final String DATABASENAME              = "Oracle";
     /** The standard Oracle jdbc driver */
-    public static final String JDBC_DRIVER      = "oracle.jdbc.driver.OracleDriver";
-    /** The subprotocol used by the standard Oracle driver */
-    public static final String JDBC_SUBPROTOCOL = "oracle";
+    public static final String JDBC_DRIVER               = "oracle.jdbc.driver.OracleDriver";
+    /** The old Oracle jdbc driver */
+    public static final String JDBC_DRIVER_OLD           = "oracle.jdbc.dnlddriver.OracleDriver";
+    /** The thin subprotocol used by the standard Oracle driver */
+    public static final String JDBC_SUBPROTOCOL_THIN     = "oracle:thin";
+    /** The thin subprotocol used by the standard Oracle driver */
+    public static final String JDBC_SUBPROTOCOL_OCI8     = "oracle:oci8";
+    /** The thin subprotocol used by the standard Oracle driver */
+    public static final String JDBC_SUBPROTOCOL_THIN_OLD = "oracle:dnldthin";
 
     /**
      * Creates a new platform instance.

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/RunAllTests.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/RunAllTests.java?rev=279626&r1=279625&r2=279626&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/RunAllTests.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/RunAllTests.java Thu Sep  8 14:14:09 2005
@@ -1,21 +1,22 @@
 package org.apache.ddlutils;
 
-import org.apache.ddlutils.builder.TestAxionPlatform;
-import org.apache.ddlutils.builder.TestCloudscapePlatform;
-import org.apache.ddlutils.builder.TestDB2Platform;
-import org.apache.ddlutils.builder.TestDerbyPlatform;
-import org.apache.ddlutils.builder.TestFirebirdPlatform;
-import org.apache.ddlutils.builder.TestHsqlDbPlatform;
-import org.apache.ddlutils.builder.TestInterbasePlatform;
-import org.apache.ddlutils.builder.TestMSSqlPlatform;
-import org.apache.ddlutils.builder.TestMaxDbPlatform;
-import org.apache.ddlutils.builder.TestMcKoiPlatform;
-import org.apache.ddlutils.builder.TestMySqlPlatform;
-import org.apache.ddlutils.builder.TestOracle8Platform;
-import org.apache.ddlutils.builder.TestOracle9Platform;
-import org.apache.ddlutils.builder.TestPostgresqlPlatform;
-import org.apache.ddlutils.builder.TestSapDbPlatform;
-import org.apache.ddlutils.builder.TestSybasePlatform;
+import org.apache.ddlutils.platform.TestAxionPlatform;
+import org.apache.ddlutils.platform.TestCloudscapePlatform;
+import org.apache.ddlutils.platform.TestDB2Platform;
+import org.apache.ddlutils.platform.TestDerbyPlatform;
+import org.apache.ddlutils.platform.TestFirebirdPlatform;
+import org.apache.ddlutils.platform.TestHsqlDbPlatform;
+import org.apache.ddlutils.platform.TestInterbasePlatform;
+import org.apache.ddlutils.platform.TestMSSqlPlatform;
+import org.apache.ddlutils.platform.TestMaxDbPlatform;
+import org.apache.ddlutils.platform.TestMcKoiPlatform;
+import org.apache.ddlutils.platform.TestMySqlPlatform;
+import org.apache.ddlutils.platform.TestOracle8Platform;
+import org.apache.ddlutils.platform.TestOracle9Platform;
+import org.apache.ddlutils.platform.TestPlatformUtils;
+import org.apache.ddlutils.platform.TestPostgresqlPlatform;
+import org.apache.ddlutils.platform.TestSapDbPlatform;
+import org.apache.ddlutils.platform.TestSybasePlatform;
 
 import junit.framework.Test;
 import junit.framework.TestCase;
@@ -55,6 +56,7 @@
     {
         TestSuite suite = new TestSuite("Ddlutils tests");
 
+        suite.addTestSuite(TestPlatformUtils.class);
         suite.addTestSuite(TestAxionPlatform.class);
         suite.addTestSuite(TestCloudscapePlatform.class);
         suite.addTestSuite(TestDB2Platform.class);

Added: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestPlatformUtils.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestPlatformUtils.java?rev=279626&view=auto
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestPlatformUtils.java (added)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestPlatformUtils.java Thu Sep  8 14:14:09 2005
@@ -0,0 +1,319 @@
+package org.apache.ddlutils.platform;
+
+import org.apache.ddlutils.PlatformUtils;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests the {@link org.apache.ddlutils.PlatformUtils#determineDatabaseType(String, String)} method.
+ * 
+ * @author <a href="mailto:tomdz@apache.org">Thomas Dudziak</a>
+ * @version $Revision: 279421 $
+ */
+public class TestPlatformUtils extends TestCase
+{
+    /** The tested platform utils object */
+    private PlatformUtils _platformUtils;
+
+    /* (non-Javadoc)
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception
+    {
+        _platformUtils = new PlatformUtils();
+    }
+
+    /* (non-Javadoc)
+     * @see junit.framework.TestCase#tearDown()
+     */
+    protected void tearDown() throws Exception
+    {
+        _platformUtils = null;
+    }
+
+    // TODO: test urls for each database
+
+    public void testAxionDriver()
+    {
+        assertEquals(AxionPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("org.axiondb.jdbc.AxionDriver", null));
+    }
+
+    public void testAxionUrl()
+    {
+        assertEquals(AxionPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:axiondb:testdb"));
+        assertEquals(AxionPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:axiondb:testdb:/tmp/testdbdir"));
+    }
+
+    public void testDb2Driver()
+    {
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.ibm.db2.jcc.DB2Driver", null));
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("COM.ibm.db2os390.sqlj.jdbc.DB2SQLJDriver", null));
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("COM.ibm.db2.jdbc.app.DB2Driver", null));
+        // DataDirect Connect
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.ddtek.jdbc.db2.DB2Driver", null));
+        // i-net
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.inet.drda.DRDADriver", null));
+    }
+
+    public void testDb2Url()
+    {
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:db2://sysmvs1.stl.ibm.com:5021/san_jose"));
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:db2os390://sysmvs1.stl.ibm.com:5021/san_jose"));
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:db2os390sqlj://sysmvs1.stl.ibm.com:5021/san_jose"));
+        // DataDirect Connect
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:datadirect:db2://server1:50000;DatabaseName=jdbc;User=test;Password=secret"));
+        // i-net
+        assertEquals(Db2Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetdb2://server1:50000"));
+    }
+
+    public void testCloudscapeUrl()
+    {
+        assertEquals(CloudscapePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:db2j:net:database"));
+        assertEquals(CloudscapePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:cloudscape:net:database"));
+    }
+
+    public void testDerbyDriver()
+    {
+        assertEquals(DerbyPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("org.apache.derby.jdbc.ClientDriver", null));
+        assertEquals(DerbyPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("org.apache.derby.jdbc.EmbeddedDriver", null));
+    }
+
+    public void testDerbyUrl()
+    {
+        assertEquals(DerbyPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:derby:sample"));
+    }
+
+    public void testFirebirdDriver()
+    {
+        assertEquals(FirebirdPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("org.firebirdsql.jdbc.FBDriver", null));
+    }
+
+    public void testFirebirdUrl()
+    {
+        assertEquals(FirebirdPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:firebirdsql://localhost:8080/path/to/db.fdb"));
+        assertEquals(FirebirdPlatform.DATABASENAME,
+                    _platformUtils.determineDatabaseType(null, "jdbc:firebirdsql:native:localhost/8080:/path/to/db.fdb"));
+        assertEquals(FirebirdPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:firebirdsql:local://localhost:8080:/path/to/db.fdb"));
+        assertEquals(FirebirdPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:firebirdsql:embedded:localhost/8080:/path/to/db.fdb"));
+    }
+
+    public void testHsqldbDriver()
+    {
+        assertEquals(HsqlDbPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("org.hsqldb.jdbcDriver", null));
+    }
+
+    public void testHsqldbUrl()
+    {
+        assertEquals(HsqlDbPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:hsqldb:/opt/db/testdb"));
+    }
+
+    public void testInterbaseDriver()
+    {
+        assertEquals(InterbasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("interbase.interclient.Driver", null));
+    }
+
+    public void testInterbaseUrl()
+    {
+        assertEquals(InterbasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:interbase://localhost/e:/testbed/database/employee.gdb"));
+    }
+
+    public void testMckoiDriver()
+    {
+        assertEquals(MckoiPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.mckoi.JDBCDriver", null));
+    }
+
+    public void testMckoiUrl()
+    {
+        assertEquals(MckoiPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:mckoi:local://./db.conf"));
+        assertEquals(MckoiPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:mckoi://db.myhost.org/"));
+    }
+
+    public void testMsSqlDriver()
+    {
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.microsoft.jdbc.sqlserver.SQLServerDriver", null));
+        // DataDirect Connect
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.ddtek.jdbc.sqlserver.SQLServerDriver", null));
+        // JNetDirect JSQLConnect
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.jnetdirect.jsql.JSQLDriver", null));
+        // i-net
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.inet.tds.TdsDriver", null));
+    }
+
+    public void testMsSqlUrl()
+    {
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:microsoft:sqlserver://localhost:1433"));
+        // DataDirect Connect
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:datadirect:sqlserver://server1:1433;User=test;Password=secret"));
+        // JNetDirect JSQLConnect
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:JSQLConnect://localhost/database=master/user=sa/sqlVersion=6"));
+        // i-net
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetdae:210.1.164.19:1433"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetdae6:[2002:d201:a413::d201:a413]:1433"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetdae7:localHost:1433"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetdae7a://MyServer/pipe/sql/query"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:inetdae:210.1.164.19:1433"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:inetdae6:[2002:d201:a413::d201:a413]:1433"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:inetdae7:localHost:1433"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:inetdae7a://MyServer/pipe/sql/query"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:jdbc:inetdae:210.1.164.19:1433"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:jdbc:inetdae6:[2002:d201:a413::d201:a413]:1433"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:jdbc:inetdae7:localHost:1433"));
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:jdbc:inetdae7a://MyServer/pipe/sql/query"));
+        // jTDS
+        assertEquals(MSSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:jtds:sqlserver://localhost:8080/test"));
+    }
+
+    public void testMySqlDriver()
+    {
+        assertEquals(MySqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.mysql.jdbc.Driver", null));
+        assertEquals(MySqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("org.gjt.mm.mysql.Driver", null));
+    }
+
+    public void testMySqlUrl()
+    {
+        assertEquals(MySqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:mysql://localhost:1234/test"));
+    }
+
+    public void testOracleDriver()
+    {
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("oracle.jdbc.driver.OracleDriver", null));
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("oracle.jdbc.dnlddriver.OracleDriver", null));
+        // DataDirect Connect
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.ddtek.jdbc.oracle.OracleDriver", null));
+        // i-net
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.inet.ora.OraDriver", null));
+    }
+
+    public void testOracleUrl()
+    {
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:oracle:thin:@myhost:1521:orcl"));
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:oracle:oci8:@(description=(address=(host=myhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl)))"));
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:oracle:dnldthin:@myhost:1521:orcl"));
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:oracle:dnldthin:@myhost:1521:orcl"));
+        // DataDirect Connect
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:datadirect:oracle://server3:1521;ServiceName=ORCL;User=test;Password=secret"));
+        // i-net
+        assertEquals(Oracle8Platform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetora:www.inetsoftware.de:1521:orcl?traceLevel=2"));
+    }
+
+    public void testPostgreSqlDriver()
+    {
+        assertEquals(PostgreSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("org.postgresql.Driver", null));
+    }
+
+    public void testPostgreSqlUrl()
+    {
+        assertEquals(PostgreSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:postgresql://localhost:1234/test"));
+        assertEquals(PostgreSqlPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:postgresql://[::1]:5740/accounting"));
+    }
+
+    public void testMaxDbDriver()
+    {
+        assertEquals(MaxDbPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.sap.dbtech.jdbc.DriverSapDB", null));
+    }
+
+    public void testMaxDbUrl()
+    {
+        assertEquals(MaxDbPlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:sapdb://servermachine:9876/TST"));
+    }
+
+    public void testSybaseDriver()
+    {
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.sybase.jdbc.SybDriver", null));
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.sybase.jdbc2.jdbc.SybDriver", null));
+        // DataDirect Connect
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.ddtek.jdbc.sybase.SybaseDriver", null));
+        // i-net
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType("com.inet.syb.SybDriver", null));
+    }
+
+    public void testSybaseUrl()
+    {
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:sybase:Tds:xyz:3767orjdbc:sybase:Tds:130.214.90.27:3767"));
+        // DataDirect Connect
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:datadirect:sybase://server2:5000;User=test;Password=secret"));
+        // i-net
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetsyb:www.inetsoftware.de:3333"));
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:inetsyb:www.inetsoftware.de:3333"));
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:inetpool:jdbc:inetsyb:www.inetsoftware.de:3333"));
+        // jTDS
+        assertEquals(SybasePlatform.DATABASENAME,
+                     _platformUtils.determineDatabaseType(null, "jdbc:jtds:sybase://localhost:8080/test"));
+    }
+}