You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2022/01/23 23:43:37 UTC

[empire-db] branch version3 updated: EMPIREDB-362 DBDatabaseDriverBase cleanup

This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch version3
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/version3 by this push:
     new b604d88  EMPIREDB-362 DBDatabaseDriverBase cleanup
b604d88 is described below

commit b604d88cef324f1b3a7b938a990f7b22661196d5
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Mon Jan 24 00:43:35 2022 +0100

    EMPIREDB-362 DBDatabaseDriverBase cleanup
---
 .../empire/samples/db/advanced/SampleAdvApp.java   |  14 +-
 .../jsf2/pageelements/BeanListPageElement.java     |   2 +-
 .../main/java/org/apache/empire/db/DBCmdType.java  |  31 --
 .../java/org/apache/empire/db/DBColumnExpr.java    |   1 +
 .../main/java/org/apache/empire/db/DBCommand.java  |   1 +
 .../java/org/apache/empire/db/DBDDLGenerator.java  |  16 +-
 .../main/java/org/apache/empire/db/DBDatabase.java |   6 +-
 .../org/apache/empire/db/DBDatabaseDriver.java     |   7 +-
 .../main/java/org/apache/empire/db/DBRecord.java   |  24 +-
 .../java/org/apache/empire/db/DBRecordData.java    |  11 +-
 .../main/java/org/apache/empire/db/DBRowSet.java   |   2 +
 .../empire/db/driver/DBDatabaseDriverBase.java     | 418 ++++++++++-----------
 .../empire/db/{ => driver}/DBDriverFeature.java    |   2 +-
 .../apache/empire/db/{ => driver}/DBSqlPhrase.java |   2 +-
 .../db/driver/derby/DBDatabaseDriverDerby.java     |  10 +-
 .../empire/db/driver/h2/DBDatabaseDriverH2.java    |  10 +-
 .../db/driver/hsql/DBDatabaseDriverHSql.java       |  10 +-
 .../empire/db/driver/hsql/HSqlDDLGenerator.java    |   5 +-
 .../db/driver/mysql/DBDatabaseDriverMySQL.java     |  10 +-
 .../db/driver/oracle/DBDatabaseDriverOracle.java   |  11 +-
 .../db/driver/oracle/OracleDDLGenerator.java       |   5 +-
 .../postgresql/DBDatabaseDriverPostgreSQL.java     |  10 +-
 .../db/driver/sqlite/DBDatabaseDriverSQLite.java   |  53 +--
 .../db/driver/sqlserver/DBDatabaseDriverMSSQL.java |  13 +-
 .../apache/empire/db/expr/column/DBAliasExpr.java  |   2 +-
 .../apache/empire/db/expr/column/DBConcatExpr.java |   2 +-
 .../apache/empire/db/expr/column/DBDecodeExpr.java |   2 +-
 .../apache/empire/db/expr/column/DBFuncExpr.java   |   2 +-
 .../java/org/apache/empire/db/IntegerTest.java     |   3 +-
 .../test/java/org/apache/empire/db/MockDriver.java |  10 +
 .../empire/db/hsql/DBDatabaseDriverHSqlTest.java   |   8 +-
 .../db/sqlite/DBDatabaseDriverSQLiteTest.java      |   8 +-
 32 files changed, 326 insertions(+), 385 deletions(-)

diff --git a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
index 958ba5f..4ee2718 100644
--- a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
+++ b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
@@ -28,10 +28,10 @@ import org.apache.empire.commons.Options;
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBCmdParam;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBContext;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBQuery;
 import org.apache.empire.db.DBReader;
@@ -191,7 +191,7 @@ public class SampleAdvApp
             	log.info("As H2 does not support changing a table with a view defined we remove the view");
             	System.out.println("*** drop EMPLOYEE_INFO_VIEW ***");
             	DBSQLScript script = new DBSQLScript(context);
-            	db.getDriver().getDDLScript(DBCmdType.DROP, db.V_EMPLOYEE_INFO, script);
+            	db.getDriver().getDDLScript(DDLAlterType.DROP, db.V_EMPLOYEE_INFO, script);
             	script.executeAll();
             }
             ddlSample(idEmp2);
@@ -199,7 +199,7 @@ public class SampleAdvApp
             	log.info("And put back the view");
             	System.out.println("*** create EMPLOYEE_INFO_VIEW ***");
             	DBSQLScript script = new DBSQLScript(context);
-            	db.getDriver().getDDLScript(DBCmdType.CREATE, db.V_EMPLOYEE_INFO, script);
+            	db.getDriver().getDDLScript(DDLAlterType.CREATE, db.V_EMPLOYEE_INFO, script);
             	script.executeAll();
             }
 
@@ -540,7 +540,7 @@ public class SampleAdvApp
     
     /**
      * This method demonstrates how to add, modify and delete a database column.<BR>
-     * This function demonstrates the use of the {@link DBDatabaseDriver#getDDLScript(org.apache.empire.db.DBCmdType, org.apache.empire.db.DBObject, DBSQLScript)}<BR>
+     * This function demonstrates the use of the {@link DBDatabaseDriver#getDDLScript(org.apache.empire.db.DDLAlterType, org.apache.empire.db.DBObject, DBSQLScript)}<BR>
      * 
      */
     private static void ddlSample(int idTestPerson)
@@ -551,7 +551,7 @@ public class SampleAdvApp
         // Now create the corresponding DDL statement 
         System.out.println("Creating new column named FOO as varchar(20) for the EMPLOYEES table:");
         DBSQLScript script = new DBSQLScript(context);
-        db.getDriver().getDDLScript(DBCmdType.CREATE, C_FOO, script);
+        db.getDriver().getDDLScript(DDLAlterType.CREATE, C_FOO, script);
         script.executeAll();
         
         // Now load a record from that table and set the value for foo
@@ -565,7 +565,7 @@ public class SampleAdvApp
         System.out.println("Extending size of column FOO to 40 characters:");
         C_FOO.setSize(40); 
         script.clear();
-        db.getDriver().getDDLScript(DBCmdType.ALTER, C_FOO, script);
+        db.getDriver().getDDLScript(DDLAlterType.ALTER, C_FOO, script);
         script.executeAll();
 
         // Now set a longer value for the record
@@ -576,7 +576,7 @@ public class SampleAdvApp
         // Finally, drop the column again
         System.out.println("Dropping the FOO column from the employee table:");
         script.clear();
-        db.getDriver().getDDLScript(DBCmdType.DROP, C_FOO, script);
+        db.getDriver().getDDLScript(DDLAlterType.DROP, C_FOO, script);
         script.executeAll();
     }
 
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
index c293f43..7b959cb 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
@@ -33,10 +33,10 @@ import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBContext;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBReader;
 import org.apache.empire.db.DBRecordData;
 import org.apache.empire.db.DBRowSet;
+import org.apache.empire.db.driver.DBDriverFeature;
 import org.apache.empire.db.expr.order.DBOrderByExpr;
 import org.apache.empire.exceptions.InternalException;
 import org.apache.empire.exceptions.InvalidArgumentException;
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCmdType.java b/empire-db/src/main/java/org/apache/empire/db/DBCmdType.java
deleted file mode 100644
index f7cf86d..0000000
--- a/empire-db/src/main/java/org/apache/empire/db/DBCmdType.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.
- */
-package org.apache.empire.db;
-
-/**
- * This enum allocates the available command types.
- *
- *
- */
-public enum DBCmdType
-{
-    CREATE, //  = 0;
-    DROP,   //  = 1;
-    ALTER,  //  = 2;
-}
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
index 13cf611..840ee29 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
@@ -31,6 +31,7 @@ import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.Column;
 import org.apache.empire.data.ColumnExpr;
 import org.apache.empire.data.DataType;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.expr.column.DBAliasExpr;
 import org.apache.empire.db.expr.column.DBCalcExpr;
 import org.apache.empire.db.expr.column.DBCaseExpr;
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
index 8dc1c5a..0bb4400 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
@@ -29,6 +29,7 @@ import java.util.Vector;
 
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.expr.compare.DBCompareColExpr;
 import org.apache.empire.db.expr.compare.DBCompareExpr;
 import org.apache.empire.db.expr.join.DBColumnJoinExpr;
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java b/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
index 69c7ae2..b788a2b 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDDLGenerator.java
@@ -22,15 +22,25 @@ import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBIndex.DBIndexType;
 import org.apache.empire.exceptions.InvalidArgumentException;
-import org.apache.empire.exceptions.UnspecifiedErrorException;
 import org.apache.empire.exceptions.NotImplementedException;
 import org.apache.empire.exceptions.NotSupportedException;
+import org.apache.empire.exceptions.UnspecifiedErrorException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
 {
     private static final Logger log = LoggerFactory.getLogger(DBDDLGenerator.class);
+
+    /**
+     * DDLAlterType for DDLScript generation
+     */
+    public enum DDLAlterType
+    {
+        CREATE, //  = 0;
+        DROP,   //  = 1;
+        ALTER,  //  = 2;
+    }
     
     protected T driver;
 
@@ -230,7 +240,7 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
      * @param dbo the object for which to perform the operation (DBDatabase, DBTable, DBView, DBColumn, DBRelation) 
      * @param script the script to which to add the DDL command(s)
      */
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         // The Object's database must be attached to this driver
         if (dbo==null || dbo.getDatabase().getDriver()!=driver)
@@ -519,7 +529,7 @@ public abstract class DBDDLGenerator<T extends DBDatabaseDriver>
      * @param type the type of operation to perform (CREATE | MODIFY | DROP)
      * @param script the sql script to which to append the dll command(s)
      */
-    protected void alterTable(DBTableColumn col, DBCmdType type, DBSQLScript script)
+    protected void alterTable(DBTableColumn col, DDLAlterType type, DBSQLScript script)
     {
         StringBuilder sql = new StringBuilder();
         sql.append("ALTER TABLE ");
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
index ff39288..da9d7bb 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
@@ -36,7 +36,9 @@ import java.util.Set;
 import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.data.Column;
 import org.apache.empire.data.DataType;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBRelation.DBCascadeAction;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.exceptions.DatabaseNotOpenException;
 import org.apache.empire.db.exceptions.FieldIllegalValueException;
 import org.apache.empire.db.exceptions.FieldNotNullException;
@@ -67,7 +69,7 @@ import org.slf4j.LoggerFactory;
 public abstract class DBDatabase extends DBObject
 {
     // *Deprecated* private static final long serialVersionUID = 1L;
-  
+    
     /**
      * This class represents the database systems current date and time.
      * <P>
@@ -406,7 +408,7 @@ public abstract class DBDatabase extends DBObject
      */
     protected void generateDDLScript(DBSQLScript script)
     {
-        this.driver.getDDLScript(DBCmdType.CREATE, this, script); 
+        this.driver.getDDLScript(DDLAlterType.CREATE, this, script); 
     }
     
     /**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
index 23cef15..8249a71 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
@@ -24,6 +24,9 @@ import java.sql.SQLException;
 import java.sql.Timestamp;
 
 import org.apache.empire.data.DataType;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 
 /**
  * The DBDatabaseDriver interface implements all RDBMS specific logic
@@ -208,14 +211,14 @@ public interface DBDatabaseDriver
      * @param rset a ResultSet object
      */
     void closeResultSet(ResultSet rset);
-
+    
     /**
      * Appends the required DLL commands to create, drop or alter an object to the supplied DBDQLScript.
      * @param type operation to perform (CREATE, DROP, ALTER)
      * @param dbo the object for which to perform the operation (DBDatabase, DBTable, DBView, DBColumn, DBRelation) 
      * @param script the script to which to add the DDL command(s)
      */
-    void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script);
+    void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script);
     
     /**
      * Appends a statement to enable or disable a foreign key relation.<br>
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
index 8fea524..dfc3906 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
@@ -52,11 +52,29 @@ import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-
 /**
+ * This class represents a record from a database table, view or query
  * 
- * This class handles one record from a database table. 
- *
+ * The class provides methods to create, read, update and delete records
+ * The class provides methods to obtain as well as to modify its fields
+ * 
+ * If an Idendity-column (AUTOINC) is defined, the value will be set upon creation by the driver to the next value
+ * If a Timestamp-column is defined the value will be automatically set and concurrent changes of the record will be detected
+ * 
+ * If changes to the record are made, but a rollback on the connection is performed, the changes will be reverted (Rollback-Handling)
+ * 
+ * The class provides methods that are useful for frontend-form development like
+ *   - providing information about the allowed values for a field (field options)
+ *   - providing information about whether or not a field is visible to the user    
+ *   - providing information about whether or not a field is required (mandantory)    
+ *   - providing information about whether or not a field is read-only    
+ *   - providing information about whether a particular field value is valid    
+ *   - providing information about whether a field was modified since it was read from the database
+ *   - providing information about whether the record was modified
+ * 
+ * Also, field value changes, can be handled using the onFieldChanged event.
+ * 
+ * The record is Serializable either if the provided DBContext is serializable, or if the Context is provided on deserialization in a derived class.
  */
 public class DBRecord extends DBRecordData implements DBContextAware, Record, Cloneable, Serializable
 {
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java b/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
index 2f65f4c..0e29bef 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecordData.java
@@ -43,10 +43,11 @@ import org.w3c.dom.Element;
 
 
 /**
- * This interface defines for the classes DDRecordSet and DBRecord.
- * <P>
- * 
- *
+ * This class provides access to the fields of one data-row of a table, view or query
+ * The fields can be accessed either by Column or by index
+ * There are various accessor functions for many data types.
+ * The field values are converted to the desired type if possible.
+ * The field values can be transferred to a classical Java-bean (aka Pojo)
  */
 public abstract class DBRecordData extends DBObject
 	implements RecordData
@@ -54,7 +55,7 @@ public abstract class DBRecordData extends DBObject
     // *Deprecated* private static final long serialVersionUID = 1L;
 
     // Logger
-    private static final Logger log              = LoggerFactory.getLogger(DBRecordData.class);
+    private static final Logger log = LoggerFactory.getLogger(DBRecordData.class);
 
     // Field Info
     @Override
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
index 3382cfc..05e14cc 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
@@ -34,6 +34,8 @@ import org.apache.empire.data.Column;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBRelation.DBCascadeAction;
 import org.apache.empire.db.DBRelation.DBReference;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.exceptions.FieldNotNullException;
 import org.apache.empire.db.exceptions.InvalidKeyException;
 import org.apache.empire.db.exceptions.NoPrimaryKeyException;
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java b/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
index 3fcfa10..5887820 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/DBDatabaseDriverBase.java
@@ -39,26 +39,22 @@ import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBBlobData;
 import org.apache.empire.db.DBClobData;
 import org.apache.empire.db.DBCmdParam;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCombinedCmd;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBCommandExpr;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBExpr;
-import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBRelation;
 import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.exceptions.EmpireSQLException;
 import org.apache.empire.db.exceptions.QueryFailedException;
 import org.apache.empire.exceptions.InvalidArgumentException;
-import org.apache.empire.exceptions.NotImplementedException;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.apache.empire.exceptions.UnexpectedReturnValueException;
 import org.slf4j.Logger;
@@ -313,6 +309,19 @@ public abstract class DBDatabaseDriverBase implements DBDatabaseDriver
     }
 
     /**
+     * Returns a timestamp that is used for record updates.
+     * @param conn the connection that might be used 
+     * @return the current date and time.
+     */
+    @Override
+    public Timestamp getUpdateTimestamp(Connection conn)
+    {
+        // Default implementation
+        java.util.Date date = new java.util.Date();
+        return new java.sql.Timestamp(date.getTime());
+    }
+
+    /**
      * Returns the next value of a named sequence The numbers are used for fields of type DBExpr.DT_AUTOINC.<BR>
      * If a driver supports this function it must return true for isSupported(DBDriverFeature.SEQUENCES).
      * 
@@ -366,95 +375,6 @@ public abstract class DBDatabaseDriverBase implements DBDatabaseDriver
         // Other types
         throw new NotSupportedException(this, "getColumnAutoValue() for "+type);
     }
-
-    /**
-     * Prepares an sql statement by setting the supplied objects as parameters.
-     * 
-     * @param pstmt the prepared statement
-     * @param sqlParams list of objects
-     */
-    protected void prepareStatement(PreparedStatement pstmt, Object[] sqlParams) 
-        throws SQLException
-    {
-        for (int i=0; i<sqlParams.length; i++)
-        {
-            Object value = sqlParams[i];
-            try {
-                addStatementParam(pstmt, i+1, value); // , conn
-            } catch(SQLException e) {
-                log.error("SQLException: Unable to set prepared statement parameter {} to '{}'", i+1, StringUtils.toString(value));
-                throw e;
-            }
-        }
-    }
-
-    /**
-     * Adds a statement parameter to a prepared statement
-     * 
-     * @param pstmt the prepared statement
-     * @param paramIndex the parameter index
-     * @param value the parameter value
-     */
-    protected void addStatementParam(PreparedStatement pstmt, int paramIndex, Object value)
-        throws SQLException
-    {
-        if (value instanceof DBBlobData)
-        {
-            // handling for blobs
-            DBBlobData blobData = (DBBlobData)value;
-            pstmt.setBinaryStream(paramIndex, blobData.getInputStream(), blobData.getLength());
-            // log
-            if (log.isDebugEnabled())
-                log.debug("Statement param {} set to BLOB data", paramIndex);
-        }
-        else if(value instanceof DBClobData)
-        {
-            // handling for clobs
-            DBClobData clobData = (DBClobData)value;
-            pstmt.setCharacterStream(paramIndex, clobData.getReader(), clobData.getLength());
-            // log
-            if (log.isDebugEnabled())
-                log.debug("Statement param {} set to CLOB data", paramIndex);
-        }
-        else if(value instanceof Date && !(value instanceof Timestamp))
-        {
-            // handling for dates
-            Timestamp ts = new Timestamp(((Date)value).getTime());
-            pstmt.setObject(paramIndex, ts);
-            // log
-            if (log.isDebugEnabled())
-                log.debug("Statement param {} set to date '{}'", paramIndex, ts);
-        }
-        else if((value instanceof Character) 
-             || (value instanceof Enum<?>))
-        {
-            // Objects that need String conversion
-            String strval = value.toString();
-            pstmt.setObject(paramIndex, strval);
-            // log
-            if (log.isDebugEnabled())
-                log.debug("Statement param {} set to '{}'", paramIndex, strval);
-        }
-        else
-        {   // simple parameter value 
-            pstmt.setObject(paramIndex, value);
-            // log
-            if (log.isDebugEnabled())
-                log.debug("Statement param {} set to '{}'", paramIndex, value);
-        }
-    }
-    
-    /**
-     * Extracts native error message of an sqlExeption.
-     * 
-     * @param e the SQLException
-     * @return the error message of the database 
-     */
-    @Override
-    public String extractErrorMessage(SQLException e)
-    {
-        return e.getMessage();
-    }
     
     /**
      * <P>
@@ -495,6 +415,73 @@ public abstract class DBDatabaseDriverBase implements DBDatabaseDriver
             return rset.getObject(columnIndex);
         }
     }
+   
+    /**
+     * Returns a sql string for a given value. 
+     * Text will be enclosed in single quotes and existing single quotes will be doubled.
+     * Empty strings are treated as null.
+     * The syntax of Date, Datetime and Boolean values are DBMS specific.
+     * 
+     * @param value the value which is inserted to the new String
+     * @param type the sql data type of the supplied value
+     * @return the sql string representing this value
+     */
+    @Override
+    public String getValueString(Object value, DataType type)
+    { 
+        if (value instanceof Enum<?>)
+        {   // convert enum
+            log.warn("Enum of type {} supplied for getValueString. Converting value...", value.getClass().getName());
+            value = ObjectUtils.getEnumValue((Enum<?>)value, type.isNumeric());
+        }
+        if (ObjectUtils.isEmpty(value))
+        {   // null
+            return getSQLPhrase(DBSqlPhrase.SQL_NULL);
+        }
+        // set string buffer
+        switch (type)
+        {
+            case DATE:
+                return getSQLDateTimeString(value, DBSqlPhrase.SQL_DATE_TEMPLATE, DBSqlPhrase.SQL_DATE_PATTERN, DBSqlPhrase.SQL_CURRENT_DATE);
+            case DATETIME:
+                // Only date (without time) provided?
+                if (!DBDatabase.SYSDATE.equals(value) && !(value instanceof Date) && ObjectUtils.lengthOf(value)<=10)
+                    return getSQLDateTimeString(value, DBSqlPhrase.SQL_DATE_TEMPLATE, DBSqlPhrase.SQL_DATE_PATTERN, DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
+                // Complete Date-Time Object with time 
+                return getSQLDateTimeString(value, DBSqlPhrase.SQL_DATETIME_TEMPLATE, DBSqlPhrase.SQL_DATETIME_PATTERN, DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
+            case TIMESTAMP:
+                return getSQLDateTimeString(value, DBSqlPhrase.SQL_TIMESTAMP_TEMPLATE, DBSqlPhrase.SQL_TIMESTAMP_PATTERN, DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
+            case VARCHAR:
+            case CHAR:
+            case CLOB:
+            case UNIQUEID:
+                return getSQLTextString(type, value);
+            case BOOL:
+                // Get Boolean value   
+                boolean boolVal = false;
+                if (value instanceof Boolean)
+                {   boolVal = ((Boolean) value).booleanValue();
+                } 
+                else
+                { // Boolean from String
+                    boolVal = stringToBoolean(value.toString());
+                }
+                return getSQLPhrase((boolVal) ? DBSqlPhrase.SQL_BOOLEAN_TRUE : DBSqlPhrase.SQL_BOOLEAN_FALSE);
+            case INTEGER:
+            case DECIMAL:
+            case FLOAT:
+                return getSQLNumberString(value, type);
+            case BLOB:
+                throw new NotSupportedException(this, "getValueString(?, DataType.BLOB)"); 
+            case AUTOINC:
+            case UNKNOWN:
+                /* Allow expressions */
+                return value.toString();
+            default:
+                log.warn("Unknown DataType {} for getValueString().", type);
+                return value.toString();
+        }
+    }
     
     /**
      * Executes the select, update or delete SQL-Command with a Statement object.
@@ -696,24 +683,33 @@ public abstract class DBDatabaseDriverBase implements DBDatabaseDriver
         }
     }
     
-     /**
-     * Convenience function for closing a JDBC Resultset<BR>
-     * Use it instead of stmt.close()<BR> 
-     * <P>
-     * @param stmt a Statement object
+    /**
+     * Appends a statement to enable or disable a foreign key relation.<br>
+     * The default is to drop or create the relation 
+     * Override this method to provide different behavior for your database.
+     * @param r the foreign key relation which should be enabled or disabled
+     * @param enable true to enable the relation or false to disable
+     * @param script the script to which to add the DDL command(s)
      */
-    public void closeStatement(Statement stmt)
+    @Override
+    public void appendEnableRelationStmt(DBRelation r, boolean enable, DBSQLScript script)
     {
-        try
-        { // Statement close
-            if (stmt != null)
-                stmt.close();
-            // done
-            return;
-        } catch (SQLException sqle) { 
-            // Commit failed!
-            throw new EmpireSQLException(this, sqle);
-        }
+        if (enable)
+            getDDLScript(DDLAlterType.CREATE, r, script);
+        else
+            getDDLScript(DDLAlterType.DROP, r, script);
+    }
+    
+    /**
+     * Extracts native error message of an sqlExeption.
+     * 
+     * @param e the SQLException
+     * @return the error message of the database 
+     */
+    @Override
+    public String extractErrorMessage(SQLException e)
+    {
+        return e.getMessage();
     }
 
     /**
@@ -744,71 +740,101 @@ public abstract class DBDatabaseDriverBase implements DBDatabaseDriver
             throw new EmpireSQLException(this, sqle);
         }
     }
-   
+    
+     /**
+     * Convenience function for closing a JDBC Resultset<BR>
+     * Use it instead of stmt.close()<BR> 
+     * <P>
+     * @param stmt a Statement object
+     */
+    protected void closeStatement(Statement stmt)
+    {
+        try
+        { // Statement close
+            if (stmt != null)
+                stmt.close();
+            // done
+            return;
+        } catch (SQLException sqle) { 
+            // Commit failed!
+            throw new EmpireSQLException(this, sqle);
+        }
+    }
+
     /**
-     * Creates a sql string for a given value. 
-     * Text will be enclosed in single quotes and existing single quotes will be doubled.
-     * Empty strings are treated as null.
-     * Syntax of Date, Datetime and Boolean values are vendor specific.
+     * Prepares an sql statement by setting the supplied objects as parameters.
      * 
-     * @param value the value which is inserted to the new String
-     * @param type the sql data type of the supplied value
-     * @return the sql string representing this value
+     * @param pstmt the prepared statement
+     * @param sqlParams list of objects
      */
-    @Override
-    public String getValueString(Object value, DataType type)
-    { 
-        if (value instanceof Enum<?>)
-        {   // convert enum
-            log.warn("Enum of type {} supplied for getValueString. Converting value...", value.getClass().getName());
-            value = ObjectUtils.getEnumValue((Enum<?>)value, type.isNumeric());
+    protected void prepareStatement(PreparedStatement pstmt, Object[] sqlParams) 
+        throws SQLException
+    {
+        for (int i=0; i<sqlParams.length; i++)
+        {
+            Object value = sqlParams[i];
+            try {
+                addStatementParam(pstmt, i+1, value); // , conn
+            } catch(SQLException e) {
+                log.error("SQLException: Unable to set prepared statement parameter {} to '{}'", i+1, StringUtils.toString(value));
+                throw e;
+            }
         }
-        if (ObjectUtils.isEmpty(value))
-        {   // null
-            return getSQLPhrase(DBSqlPhrase.SQL_NULL);
+    }
+
+    /**
+     * Adds a statement parameter to a prepared statement
+     * 
+     * @param pstmt the prepared statement
+     * @param paramIndex the parameter index
+     * @param value the parameter value
+     */
+    protected void addStatementParam(PreparedStatement pstmt, int paramIndex, Object value)
+        throws SQLException
+    {
+        if (value instanceof DBBlobData)
+        {
+            // handling for blobs
+            DBBlobData blobData = (DBBlobData)value;
+            pstmt.setBinaryStream(paramIndex, blobData.getInputStream(), blobData.getLength());
+            // log
+            if (log.isDebugEnabled())
+                log.debug("Statement param {} set to BLOB data", paramIndex);
         }
-        // set string buffer
-        switch (type)
+        else if(value instanceof DBClobData)
         {
-            case DATE:
-                return getSQLDateTimeString(value, DBSqlPhrase.SQL_DATE_TEMPLATE, DBSqlPhrase.SQL_DATE_PATTERN, DBSqlPhrase.SQL_CURRENT_DATE);
-            case DATETIME:
-                // Only date (without time) provided?
-                if (!DBDatabase.SYSDATE.equals(value) && !(value instanceof Date) && ObjectUtils.lengthOf(value)<=10)
-                    return getSQLDateTimeString(value, DBSqlPhrase.SQL_DATE_TEMPLATE, DBSqlPhrase.SQL_DATE_PATTERN, DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
-                // Complete Date-Time Object with time 
-                return getSQLDateTimeString(value, DBSqlPhrase.SQL_DATETIME_TEMPLATE, DBSqlPhrase.SQL_DATETIME_PATTERN, DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
-            case TIMESTAMP:
-                return getSQLDateTimeString(value, DBSqlPhrase.SQL_TIMESTAMP_TEMPLATE, DBSqlPhrase.SQL_TIMESTAMP_PATTERN, DBSqlPhrase.SQL_CURRENT_TIMESTAMP);
-            case VARCHAR:
-            case CHAR:
-            case CLOB:
-            case UNIQUEID:
-                return getSQLTextString(type, value);
-            case BOOL:
-                // Get Boolean value   
-                boolean boolVal = false;
-                if (value instanceof Boolean)
-                {   boolVal = ((Boolean) value).booleanValue();
-                } 
-                else
-                { // Boolean from String
-                    boolVal = stringToBoolean(value.toString());
-                }
-                return getSQLPhrase((boolVal) ? DBSqlPhrase.SQL_BOOLEAN_TRUE : DBSqlPhrase.SQL_BOOLEAN_FALSE);
-            case INTEGER:
-            case DECIMAL:
-            case FLOAT:
-                return getSQLNumberString(value, type);
-            case BLOB:
-                throw new NotSupportedException(this, "getValueString(?, DataType.BLOB)"); 
-            case AUTOINC:
-            case UNKNOWN:
-                /* Allow expressions */
-                return value.toString();
-            default:
-                log.warn("Unknown DataType {} for getValueString().", type);
-                return value.toString();
+            // handling for clobs
+            DBClobData clobData = (DBClobData)value;
+            pstmt.setCharacterStream(paramIndex, clobData.getReader(), clobData.getLength());
+            // log
+            if (log.isDebugEnabled())
+                log.debug("Statement param {} set to CLOB data", paramIndex);
+        }
+        else if(value instanceof Date && !(value instanceof Timestamp))
+        {
+            // handling for dates
+            Timestamp ts = new Timestamp(((Date)value).getTime());
+            pstmt.setObject(paramIndex, ts);
+            // log
+            if (log.isDebugEnabled())
+                log.debug("Statement param {} set to date '{}'", paramIndex, ts);
+        }
+        else if((value instanceof Character) 
+             || (value instanceof Enum<?>))
+        {
+            // Objects that need String conversion
+            String strval = value.toString();
+            pstmt.setObject(paramIndex, strval);
+            // log
+            if (log.isDebugEnabled())
+                log.debug("Statement param {} set to '{}'", paramIndex, strval);
+        }
+        else
+        {   // simple parameter value 
+            pstmt.setObject(paramIndex, value);
+            // log
+            if (log.isDebugEnabled())
+                log.debug("Statement param {} set to '{}'", paramIndex, value);
         }
     }
     
@@ -954,58 +980,4 @@ public abstract class DBDatabaseDriverBase implements DBDatabaseDriver
                "y".equalsIgnoreCase(value);
     }
 
-    /**
-     * Checks the database whether or not it is consistent with the description.
-     * 
-     * @param db the database
-     * @param owner the owner
-     * @param conn the connection
-     */
-    public void checkDatabase(DBDatabase db, String owner, Connection conn)
-    {
-        throw new NotImplementedException(this, "checkDatabase");
-    }
-    
-    /**
-     * Appends the required DLL commands to create, drop or alter an object to the supplied DBDQLScript.
-     * @param type operation to perform (CREATE, DROP, ALTER)
-     * @param dbo the object for which to perform the operation (DBDatabase, DBTable, DBView, DBColumn, DBRelation) 
-     * @param script the script to which to add the DDL command(s)
-     */
-    @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
-    {
-        throw new NotImplementedException(this, "getDDLScript");
-    }
-    
-    /**
-     * Appends a statement to enable or disable a foreign key relation.<br>
-     * The default is to drop or create the relation 
-     * Override this method to provide different behavior for your database.
-     * @param r the foreign key relation which should be enabled or disabled
-     * @param enable true to enable the relation or false to disable
-     * @param script the script to which to add the DDL command(s)
-     */
-    @Override
-    public void appendEnableRelationStmt(DBRelation r, boolean enable, DBSQLScript script)
-    {
-        if (enable)
-            getDDLScript(DBCmdType.CREATE, r, script);
-        else
-            getDDLScript(DBCmdType.DROP, r, script);
-    }
-
-    /**
-     * Returns a timestamp that is used for record updates.
-     * @param conn the connection that might be used 
-     * @return the current date and time.
-     */
-    @Override
-    public Timestamp getUpdateTimestamp(Connection conn)
-    {
-        // Default implementation
-        java.util.Date date = new java.util.Date();
-        return new java.sql.Timestamp(date.getTime());
-    }
-
 }
\ No newline at end of file
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java b/empire-db/src/main/java/org/apache/empire/db/driver/DBDriverFeature.java
similarity index 96%
rename from empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java
rename to empire-db/src/main/java/org/apache/empire/db/driver/DBDriverFeature.java
index 833c220..291166e 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDriverFeature.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/DBDriverFeature.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.empire.db;
+package org.apache.empire.db.driver;
 
 /**
  * This enum is used with the DBDatabaseDriver::isSupported method to query database driver capabilities.
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBSqlPhrase.java b/empire-db/src/main/java/org/apache/empire/db/driver/DBSqlPhrase.java
similarity index 99%
rename from empire-db/src/main/java/org/apache/empire/db/DBSqlPhrase.java
rename to empire-db/src/main/java/org/apache/empire/db/driver/DBSqlPhrase.java
index 4f2e245..c4a7b68 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBSqlPhrase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/DBSqlPhrase.java
@@ -1,4 +1,4 @@
-package org.apache.empire.db;
+package org.apache.empire.db.driver;
 
 /**
  * Enum for all SQL phrases that may be supplied by the driver
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java b/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
index 286c6e2..71a865e 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/derby/DBDatabaseDriverDerby.java
@@ -22,19 +22,19 @@ import java.sql.Connection;
 import java.util.GregorianCalendar;
 
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBDDLGenerator;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -313,10 +313,10 @@ public class DBDatabaseDriverDerby extends DBDatabaseDriverBase
     }
 
     /**
-     * @see DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)  
+     * @see DBDatabaseDriver#getDDLScript(DDLAlterType, DBObject, DBSQLScript)  
      */
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         if (ddlGenerator==null)
             ddlGenerator = new DerbyDDLGenerator(this);
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java b/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
index 5f9e8b3..7f6e43a 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/h2/DBDatabaseDriverH2.java
@@ -22,19 +22,19 @@ import java.sql.Connection;
 import java.util.GregorianCalendar;
 
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBDDLGenerator;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.exceptions.InvalidArgumentException;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.slf4j.Logger;
@@ -360,10 +360,10 @@ public class DBDatabaseDriverH2 extends DBDatabaseDriverBase
     }
 
     /**
-     * @see DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)  
+     * @see DBDatabaseDriver#getDDLScript(DDLAlterType, DBObject, DBSQLScript)  
      */
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         if (ddlGenerator==null)
             ddlGenerator = new H2DDLGenerator(this);
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java b/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
index 9eea6de..e7741db 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/hsql/DBDatabaseDriverHSql.java
@@ -23,18 +23,18 @@ import java.util.GregorianCalendar;
 
 import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBDDLGenerator;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.exceptions.QueryNoResultException;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.slf4j.Logger;
@@ -282,10 +282,10 @@ public class DBDatabaseDriverHSql extends DBDatabaseDriverBase
     }
 
     /**
-     * @see DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)  
+     * @see DBDatabaseDriver#getDDLScript(DDLAlterType, DBObject, DBSQLScript)  
      */
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         if (ddlGenerator==null)
             ddlGenerator = new HSqlDDLGenerator(this);
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/hsql/HSqlDDLGenerator.java b/empire-db/src/main/java/org/apache/empire/db/driver/hsql/HSqlDDLGenerator.java
index 17dac74..7d88903 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/hsql/HSqlDDLGenerator.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/hsql/HSqlDDLGenerator.java
@@ -19,7 +19,6 @@
 package org.apache.empire.db.driver.hsql;
 
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBDDLGenerator;
 import org.apache.empire.db.DBDatabase;
@@ -81,11 +80,11 @@ public class HSqlDDLGenerator extends DBDDLGenerator<DBDatabaseDriverHSql>
     }
     
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         super.getDDLScript(type, dbo, script);
         // Additional tasks
-        if ((type==DBCmdType.DROP) && (dbo instanceof DBTable))
+        if ((type==DDLAlterType.DROP) && (dbo instanceof DBTable))
         {   // Drop Sequences
             for (DBColumn c : ((DBTable) dbo).getColumns())
             {
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java b/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
index e6b2394..5359b8b 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/mysql/DBDatabaseDriverMySQL.java
@@ -24,21 +24,21 @@ import java.util.GregorianCalendar;
 
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCombinedCmd;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBCommandExpr;
 import org.apache.empire.db.DBDDLGenerator;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.exceptions.EmpireSQLException;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.slf4j.Logger;
@@ -1127,10 +1127,10 @@ public class DBDatabaseDriverMySQL extends DBDatabaseDriverBase
     }
 
     /**
-     * @see DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)  
+     * @see DBDatabaseDriver#getDDLScript(DDLAlterType, DBObject, DBSQLScript)  
      */
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         if (ddlGenerator==null)
             ddlGenerator = new MySQLDDLGenerator(this);
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java b/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
index 8660339..e3f86eb 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/oracle/DBDatabaseDriverOracle.java
@@ -26,26 +26,26 @@ import java.sql.Statement;
 import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBContext;
 import org.apache.empire.db.DBDDLGenerator;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBExpr;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBReader;
 import org.apache.empire.db.DBRelation;
 import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.DBView;
 import org.apache.empire.db.context.DBContextStatic;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.exceptions.EmpireSQLException;
 import org.apache.empire.db.exceptions.QueryNoResultException;
 import org.apache.empire.db.expr.column.DBValueExpr;
@@ -392,10 +392,10 @@ public class DBDatabaseDriverOracle extends DBDatabaseDriverBase
     }
 
     /**
-     * @see DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)  
+     * @see DBDatabaseDriver#getDDLScript(DDLAlterType, DBObject, DBSQLScript)  
      */
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         if (ddlGenerator==null)
             ddlGenerator = new OracleDDLGenerator(this);
@@ -423,7 +423,6 @@ public class DBDatabaseDriverOracle extends DBDatabaseDriverBase
     /**
      * Checks whether the database definition matches the real database structure.
      */
-    @Override
     public void checkDatabase(DBDatabase db, String owner, Connection conn)
     {
         DBContext context = new DBContextStatic(this, conn);
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/oracle/OracleDDLGenerator.java b/empire-db/src/main/java/org/apache/empire/db/driver/oracle/OracleDDLGenerator.java
index ddfa022..a7e09c8 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/oracle/OracleDDLGenerator.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/oracle/OracleDDLGenerator.java
@@ -19,7 +19,6 @@
 package org.apache.empire.db.driver.oracle;
 
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBDDLGenerator;
 import org.apache.empire.db.DBDatabase;
@@ -117,11 +116,11 @@ public class OracleDDLGenerator extends DBDDLGenerator<DBDatabaseDriverOracle>
     }
     
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         super.getDDLScript(type, dbo, script);
         // Additional tasks
-        if ((type==DBCmdType.DROP) && (dbo instanceof DBTable))
+        if ((type==DDLAlterType.DROP) && (dbo instanceof DBTable))
         {   // Drop Sequences
             for (DBColumn c : ((DBTable) dbo).getColumns())
             {
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java b/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
index 8ae0229..01d7a50 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/postgresql/DBDatabaseDriverPostgreSQL.java
@@ -26,18 +26,18 @@ import java.util.GregorianCalendar;
 import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBDDLGenerator;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.exceptions.EmpireSQLException;
 import org.apache.empire.db.exceptions.QueryNoResultException;
 import org.apache.empire.db.expr.column.DBValueExpr;
@@ -477,10 +477,10 @@ public class DBDatabaseDriverPostgreSQL extends DBDatabaseDriverBase
     }
 
     /**
-     * @see DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)  
+     * @see DBDatabaseDriver#getDDLScript(DDLAlterType, DBObject, DBSQLScript)  
      */
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         if (ddlGenerator==null)
             ddlGenerator = new PostgreDDLGenerator(this);
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java b/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
index 9ae7336..ca5482f 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/sqlite/DBDatabaseDriverSQLite.java
@@ -31,19 +31,19 @@ import java.util.GregorianCalendar;
 import java.util.List;
 
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBDDLGenerator;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBJoinType;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.expr.join.DBColumnJoinExpr;
 import org.apache.empire.db.expr.join.DBJoinExpr;
 import org.apache.empire.exceptions.NotImplementedException;
@@ -371,49 +371,6 @@ public class DBDatabaseDriverSQLite extends DBDatabaseDriverBase
                 return phrase.getSqlDefault();
         }
     }
-
-    @Override
-    public int executeSQL(String sqlCmd, Object[] sqlParams, Connection conn, DBSetGenKeys genKeys) throws SQLException
-    {
-        Statement stmt = null;
-        int count = 0;
-        try
-        {
-            if (sqlParams != null)
-            { // Use a prepared statement
-                PreparedStatement pstmt = conn.prepareStatement(sqlCmd);
-                stmt = pstmt;
-                prepareStatement(pstmt, sqlParams);
-                count = pstmt.executeUpdate();
-            }
-            else
-            { // Execute a simple statement
-                stmt = conn.createStatement();
-                count = stmt.executeUpdate(sqlCmd);
-            }
-            // Retrieve any auto-generated keys
-            if (genKeys != null && count > 0)
-            { // Return Keys
-                ResultSet rs = stmt.getGeneratedKeys();
-                try
-                {
-                    while (rs.next())
-                    {
-                        genKeys.set(rs.getObject(1));
-                    }
-                }
-                finally
-                {
-                    rs.close();
-                }
-            }
-        }
-        finally
-        {
-            closeStatement(stmt);
-        }
-        return count;
-    }
     
     @Override
     public Object getResultValue(ResultSet rset, int columnIndex, DataType dataType) throws SQLException
@@ -507,10 +464,10 @@ public class DBDatabaseDriverSQLite extends DBDatabaseDriverBase
     }
     
     /**
-     * @see DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)
+     * @see DBDatabaseDriver#getDDLScript(DDLAlterType, DBObject, DBSQLScript)
      */
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         if (ddlGenerator == null)
             ddlGenerator = new SQLiteDDLGenerator(this);
diff --git a/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java b/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
index 5a5de91..6456979 100644
--- a/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
+++ b/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/DBDatabaseDriverMSSQL.java
@@ -26,21 +26,21 @@ import java.util.GregorianCalendar;
 
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBDDLGenerator;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBDriverFeature;
 import org.apache.empire.db.DBExpr;
 import org.apache.empire.db.DBObject;
 import org.apache.empire.db.DBRelation;
 import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBSqlPhrase;
 import org.apache.empire.db.DBTable;
 import org.apache.empire.db.DBTableColumn;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.db.exceptions.EmpireSQLException;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.slf4j.Logger;
@@ -48,9 +48,6 @@ import org.slf4j.LoggerFactory;
 
 /**
  * This class provides support for the Microsoft SQL-Server database system.
- * 
- *
- * 
  */
 public class DBDatabaseDriverMSSQL extends DBDatabaseDriverBase
 {
@@ -510,10 +507,10 @@ public class DBDatabaseDriverMSSQL extends DBDatabaseDriverBase
     }
     
     /**
-     * @see DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)  
+     * @see DBDatabaseDriver#getDDLScript(DDLAlterType, DBObject, DBSQLScript)  
      */
     @Override
-    public void getDDLScript(DBCmdType type, DBObject dbo, DBSQLScript script)
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
     {
         if (ddlGenerator==null)
             ddlGenerator = new MSSqlDDLGenerator(this);
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
index b3a644f..6a64aa8 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
@@ -27,7 +27,7 @@ import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.db.DBSqlPhrase;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.w3c.dom.Element;
 
 // XML
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
index c22f1a5..b70e1a3 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatExpr.java
@@ -27,7 +27,7 @@ import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBExpr;
-import org.apache.empire.db.DBSqlPhrase;
+import org.apache.empire.db.driver.DBSqlPhrase;
 import org.apache.empire.xml.XMLUtil;
 import org.w3c.dom.Element;
 
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
index 6923426..e4e9351 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBDecodeExpr.java
@@ -28,7 +28,7 @@ import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBExpr;
-import org.apache.empire.db.DBSqlPhrase;
+import org.apache.empire.db.driver.DBSqlPhrase;
 
 /**
  * This class is used to decode a set of keys to the corresponding target values.
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
index dd358fe..393a645 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
@@ -25,7 +25,7 @@ import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBExpr;
-import org.apache.empire.db.DBSqlPhrase;
+import org.apache.empire.db.driver.DBSqlPhrase;
 
 
 /**
diff --git a/empire-db/src/test/java/org/apache/empire/db/IntegerTest.java b/empire-db/src/test/java/org/apache/empire/db/IntegerTest.java
index d940e0c..598cec7 100644
--- a/empire-db/src/test/java/org/apache/empire/db/IntegerTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/IntegerTest.java
@@ -27,6 +27,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.empire.data.DataType;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.context.DBContextStatic;
 import org.apache.empire.db.driver.derby.DBDatabaseDriverDerby;
 import org.apache.empire.db.driver.h2.DBDatabaseDriverH2;
@@ -193,7 +194,7 @@ public class IntegerTest {
         DBSQLScript script2 = new DBSQLScript(context);
         for(DBTable table:db.getTables()){
             if(tables.contains(table.getName())){
-                db.getDriver().getDDLScript(DBCmdType.DROP, table, script2);
+                db.getDriver().getDDLScript(DDLAlterType.DROP, table, script2);
             }
         }
         script2.executeAll(false);
diff --git a/empire-db/src/test/java/org/apache/empire/db/MockDriver.java b/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
index d6b7ee2..013036b 100644
--- a/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
+++ b/empire-db/src/test/java/org/apache/empire/db/MockDriver.java
@@ -21,7 +21,11 @@ package org.apache.empire.db;
 import java.sql.Connection;
 
 import org.apache.empire.data.DataType;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.driver.DBDatabaseDriverBase;
+import org.apache.empire.db.driver.DBDriverFeature;
+import org.apache.empire.db.driver.DBSqlPhrase;
+import org.apache.empire.exceptions.NotImplementedException;
 
 public class MockDriver extends DBDatabaseDriverBase {
     // *Deprecated* private static final long serialVersionUID = 1L;
@@ -65,6 +69,12 @@ public class MockDriver extends DBDatabaseDriverBase {
     }
 
     @Override
+    public void getDDLScript(DDLAlterType type, DBObject dbo, DBSQLScript script)
+    {
+        throw new NotImplementedException(this, "getDDLScript");
+    }
+
+    @Override
     public boolean isSupported(DBDriverFeature type)
     {
         return false;
diff --git a/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java b/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java
index 33c7461..034a118 100644
--- a/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/hsql/DBDatabaseDriverHSqlTest.java
@@ -29,8 +29,8 @@ import org.apache.empire.DBResource;
 import org.apache.empire.DBResource.DB;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.CompanyDB;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBContext;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBRecord;
@@ -107,8 +107,8 @@ public class DBDatabaseDriverHSqlTest{
         
         
         script = new DBSQLScript(context);
-        db.getDriver().getDDLScript(DBCmdType.DROP, db.EMPLOYEE, script);
-        db.getDriver().getDDLScript(DBCmdType.DROP, db.DEPARTMENT, script);
+        db.getDriver().getDDLScript(DDLAlterType.DROP, db.EMPLOYEE, script);
+        db.getDriver().getDDLScript(DDLAlterType.DROP, db.DEPARTMENT, script);
         script.executeAll(true);
     }
     
@@ -140,7 +140,7 @@ public class DBDatabaseDriverHSqlTest{
         assertEquals("test", read.getString(db.DATA.VALUE));
         
         script = new DBSQLScript(context);
-        db.getDriver().getDDLScript(DBCmdType.DROP, db.DATA, script);
+        db.getDriver().getDDLScript(DDLAlterType.DROP, db.DATA, script);
         script.executeAll(true);
     }
     
diff --git a/empire-db/src/test/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLiteTest.java b/empire-db/src/test/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLiteTest.java
index 0e223fb..78f5f93 100644
--- a/empire-db/src/test/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLiteTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLiteTest.java
@@ -29,8 +29,8 @@ import org.apache.empire.DBResource;
 import org.apache.empire.DBResource.DB;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.CompanyDB;
-import org.apache.empire.db.DBCmdType;
 import org.apache.empire.db.DBContext;
+import org.apache.empire.db.DBDDLGenerator.DDLAlterType;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBDatabaseDriver;
 import org.apache.empire.db.DBRecord;
@@ -97,8 +97,8 @@ public class DBDatabaseDriverSQLiteTest{
         assertEquals("123456", emp.getString(db.EMPLOYEE.PHONE_NUMBER));
         
         script = new DBSQLScript(context);
-        db.getDriver().getDDLScript(DBCmdType.DROP, db.EMPLOYEE, script);
-        db.getDriver().getDDLScript(DBCmdType.DROP, db.DEPARTMENT, script);
+        db.getDriver().getDDLScript(DDLAlterType.DROP, db.EMPLOYEE, script);
+        db.getDriver().getDDLScript(DDLAlterType.DROP, db.DEPARTMENT, script);
         script.executeAll(true);
     }
     
@@ -132,7 +132,7 @@ public class DBDatabaseDriverSQLiteTest{
         assertEquals("test", read.getString(db.DATA.VALUE));
         
         script = new DBSQLScript(context);
-        db.getDriver().getDDLScript(DBCmdType.DROP, db.DATA, script);
+        db.getDriver().getDDLScript(DDLAlterType.DROP, db.DATA, script);
         script.executeAll(true);
     }