arminw | 2 Jan 2003 16:52
Picon
Favicon

cvs commit: jakarta-ojb/src/java/org/apache/ojb/broker/metadata/auto AutoCreatorDb.java

arminw      2003/01/02 07:52:48

  Modified:    src/java/org/apache/ojb/broker/metadata/auto
                        AutoCreatorDb.java
  Log:
  a fix from Davide Mora,
  make it work with SQL Server

  Revision  Changes    Path
  1.10      +33 -34    jakarta-ojb/src/java/org/apache/ojb/broker/metadata/auto/AutoCreatorDb.java

  Index: AutoCreatorDb.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ojb/src/java/org/apache/ojb/broker/metadata/auto/AutoCreatorDb.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- AutoCreatorDb.java	24 Dec 2002 13:07:03 -0000	1.9
  +++ AutoCreatorDb.java	2 Jan 2003 15:52:48 -0000	1.10
   <at>  <at>  -28,47 +28,46  <at>  <at> 
   import java.util.ArrayList;
   import java.util.Enumeration;
   import java.util.List;
  +import java.util.Hashtable;

   public class AutoCreatorDb
   {
       private static Logger logger = LoggerFactory.getLogger(AutoCreatorDb.class);
  +    private static Hashtable platform2driver = null;
  +    private static String defaultPlatform = "hsqldb";
  +
  +    static {
  +        platform2driver = new Hashtable();
  +
  +        // supported by crossdb
  +        platform2driver.put("hsqldb", "com.spaceprogram.sql.hsqldb.HsqldbFactory" );
  +        platform2driver.put("mssqlserver", "com.thinkvirtual.sql.sqlserver.SQLServerFactory");
  +        platform2driver.put("mysql", "com.spaceprogram.sql.mysql.MySQLFactory");
  +        platform2driver.put("oracle", "com.thinkvirtual.sql.oracle.OracleSQLFactory");
  +        platform2driver.put("sybase", "com.thinkvirtual.sql.sybase.SybaseFactory");
  +
  +        // not (yet?) supported
  +        /*
  +        platform2driver.put("db2", null);
  +        platform2driver.put("informix", null);
  +        platform2driver.put("msaccess", null);
  +        platform2driver.put("postgresql", null);
  +        platform2driver.put("sapdb", null);
  +        */
  +    }

       /**
  -     * com.spaceprogram.sql.hsqldb.HsqldbFactory
  -     com.spaceprogram.sql.mysql.MySQLFactory
  -     com.thinkvirtual.sql.oracle.OracleSQLFactory
  -     com.thinkvirtual.sql.sqlserver.SQLServerFactory
  -     com.thinkvirtual.sql.sybase.SybaseFactory
  +     *
        */
       public static String getCrossdbDriverFromPlatform(String platform)
       {
  -        String ret = null;
  -        if (platform.equalsIgnoreCase("hsqldb"))
  -        {
  -            ret = "com.spaceprogram.sql.hsqldb.HsqldbFactory";
  -
  -        }
  -
  -        else if (platform.equalsIgnoreCase("mssql"))
  -        {
  -            ret = "com.thinkvirtual.sql.sqlserver.SQLServerFactory";
  +        String lcPlatform = platform.toLowerCase();
  +        String driverCls = (String) platform2driver.get(lcPlatform);
  +        if ( driverCls == null ) {
  +            logger.error("Platform '" + platform + "' not supported by crossdb. The default platform '" +
defaultPlatform + "' will be used.");
  +            driverCls = (String) platform2driver.get(defaultPlatform);
           }
  -        else if (platform.equalsIgnoreCase("oracle"))
  -        {
  -            ret = "com.thinkvirtual.sql.oracle.OracleSQLFactory";
  -        }
  -        else if (platform.equalsIgnoreCase("sybase"))
  -        {
  -            ret = "com.thinkvirtual.sql.sybase.SybaseFactory";
  -        }
  -        else
  -        { // default to mysql for now
  -            // if (platform.equalsIgnoreCase("mysql")) {
  -            ret = "com.spaceprogram.sql.mysql.MySQLFactory";
  -
  -        }
  -        return ret;
  -
  +        return driverCls;
       }

       public static void autoCreate(
   <at>  <at>  -151,7 +150,7  <at>  <at> 
                   else
                   {
                       // table does not exist, so make it
  -                    logger.info("Creating table [" + tname + "]");
  +                    logger.info("Creating table [" + tname + "] using " + factory.getClass().getName() );
                       CreateTableQuery ctq = factory.getCreateTableQuery();
                       ctq.setName(tname);
                       FieldDescriptor fld[] = cld.getFieldDescriptions();
   <at>  <at>  -166,7 +165,7  <at>  <at> 
                               if (fieldDescriptor.isAutoIncrement())
                               {
                                   col.setAutoIncrement(true);
  -
  +                                col.setNullable(0);
                               }
                               ctq.addColumn(col);
                           }

Gmane