2 Jan 2003 16:52
cvs commit: jakarta-ojb/src/java/org/apache/ojb/broker/metadata/auto AutoCreatorDb.java
<arminw <at> apache.org>
2003-01-02 15:52:48 GMT
2003-01-02 15:52:48 GMT
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);
}
RSS Feed