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 2019/07/08 16:39:59 UTC

[empire-db] branch master updated: EMPIRE-DB-290: overloads for enum handling and optimizations

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1b33784  EMPIRE-DB-290: overloads for enum handling and optimizations
1b33784 is described below

commit 1b337844116b50a976a95cb024fa922aad653fa6
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Mon Jul 8 18:39:53 2019 +0200

    EMPIRE-DB-290: overloads for enum handling and optimizations
---
 .../empire/samples/db/advanced/SampleAdvApp.java   |  2 +-
 .../apache/empire/jsf2/websample/db/SampleDB.java  | 35 ++++++------
 .../apache/empire/samples/spring/db/SampleDB.java  | 35 ++++++------
 .../struts2/websample/ws/SampleBeanDomain.java     | 33 ++++++-----
 .../empire/struts2/websample/db/SampleDB.java      | 33 ++++++-----
 .../main/java/org/apache/empire/data/DataMode.java |  4 --
 .../org/apache/empire/data/bean/BeanClass.java     | 20 ++-----
 .../org/apache/empire/data/bean/BeanProperty.java  | 32 ++++++++---
 .../main/java/org/apache/empire/db/DBColumn.java   |  2 +-
 .../org/apache/empire/db/DBDatabaseDriver.java     |  7 +--
 .../main/java/org/apache/empire/db/DBRowSet.java   |  7 +++
 .../main/java/org/apache/empire/db/DBTable.java    | 65 ++++++++++++++++------
 .../java/org/apache/empire/db/DBTableColumn.java   | 25 ++-------
 .../src/main/java/org/apache/empire/db/DBView.java |  5 +-
 .../test/java/org/apache/empire/db/CompanyDB.java  | 42 +++++++-------
 .../java/org/apache/empire/db/IntegerTest.java     |  7 +--
 .../empire/db/hsql/DBDatabaseDriverHSqlTest.java   |  5 +-
 .../db/mssql/DBDatabaseDriverMSSqlDateTest.java    |  9 ++-
 .../db/sqlite/DBDatabaseDriverSQLiteTest.java      |  4 +-
 19 files changed, 194 insertions(+), 178 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 9b7fd07..6e375e2 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
@@ -542,7 +542,7 @@ public class SampleAdvApp
         db.getDriver().setDDLColumnDefaults(true);
 
         // First, add a new column to the Table object
-        DBTableColumn C_FOO = db.T_EMPLOYEES.addColumn("FOO", DataType.VARCHAR, 20, DataMode.Nullable);
+        DBTableColumn C_FOO = db.T_EMPLOYEES.addColumn("FOO", DataType.VARCHAR, 20, false);
 
         // Now create the corresponding DDL statement 
         System.out.println("Creating new column named FOO as varchar(20) for the EMPLOYEES table:");
diff --git a/empire-db-examples/empire-db-example-jsf2/src/main/java/org/apache/empire/jsf2/websample/db/SampleDB.java b/empire-db-examples/empire-db-example-jsf2/src/main/java/org/apache/empire/jsf2/websample/db/SampleDB.java
index 6334bc7..3096e4c 100644
--- a/empire-db-examples/empire-db-example-jsf2/src/main/java/org/apache/empire/jsf2/websample/db/SampleDB.java
+++ b/empire-db-examples/empire-db-example-jsf2/src/main/java/org/apache/empire/jsf2/websample/db/SampleDB.java
@@ -19,7 +19,6 @@
 package org.apache.empire.jsf2.websample.db;
 
 import org.apache.empire.commons.Options;
-import org.apache.empire.data.DataMode;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBDatabase;
@@ -66,11 +65,11 @@ public class SampleDB extends DBDatabase
         {
             super("DEPARTMENTS", db);
             // ID
-            DEPARTMENT_ID 	= addColumn("DEPARTMENT_ID", 	DataType.AUTOINC,	 0, DataMode.NotNull, "DEP_ID_SEQUENCE");
-            NAME 			= addColumn("NAME", 			DataType.VARCHAR,   80, DataMode.NotNull);
-            HEAD 			= addColumn("HEAD", 			DataType.VARCHAR,   80, DataMode.Nullable);
-            BUSINESS_UNIT 	= addColumn("BUSINESS_UNIT", 	DataType.VARCHAR,    4, DataMode.NotNull, "ITTK");
-            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,	 0, DataMode.NotNull);
+            DEPARTMENT_ID 	= addColumn("DEPARTMENT_ID", 	DataType.AUTOINC,	 0, true, "DEP_ID_SEQUENCE");
+            NAME 			= addColumn("NAME", 			DataType.VARCHAR,   80, true);
+            HEAD 			= addColumn("HEAD", 			DataType.VARCHAR,   80, false);
+            BUSINESS_UNIT 	= addColumn("BUSINESS_UNIT", 	DataType.VARCHAR,    4, true, "ITTK");
+            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,	 0, true);
 
             // Primary Key
             setPrimaryKey(DEPARTMENT_ID);
@@ -107,18 +106,18 @@ public class SampleDB extends DBDatabase
         {
             super("EMPLOYEES", db);
             // ID
-            EMPLOYEE_ID 	= addColumn("EMPLOYEE_ID", 		DataType.AUTOINC, 	 0, DataMode.NotNull, "EMPLOYEE_ID_SEQUENCE");
-            SALUTATION 		= addColumn("SALUTATION", 		DataType.VARCHAR,	 5, DataMode.Nullable);
-            FIRST_NAME 		= addColumn("FIRST_NAME", 		DataType.VARCHAR,	40, DataMode.NotNull);
-            LAST_NAME 		= addColumn("LAST_NAME", 		DataType.VARCHAR,	40, DataMode.NotNull);
-            DATE_OF_BIRTH 	= addColumn("DATE_OF_BIRTH", 	DataType.DATE,		 0, DataMode.Nullable);
-            DEPARTMENT_ID 	= addColumn("DEPARTMENT_ID", 	DataType.INTEGER, 	 0, DataMode.NotNull);
-            GENDER 			= addColumn("GENDER", 			DataType.VARCHAR,	 1, DataMode.Nullable);
-            PHONE_NUMBER 	= addColumn("PHONE_NUMBER", 	DataType.VARCHAR,	40, DataMode.Nullable);
-            EMAIL 			= addColumn("EMAIL", 			DataType.VARCHAR,	80, DataMode.Nullable);
-            RETIRED			= addColumn("RETIRED", 			DataType.BOOL, 		 0, DataMode.NotNull, false);
-            // PICTURE 		= addColumn("PICTURE", 			DataType.BLOB, 		 0, DataMode.Nullable);
-            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,	 0, DataMode.NotNull);
+            EMPLOYEE_ID 	= addColumn("EMPLOYEE_ID", 		DataType.AUTOINC, 	 0, true, "EMPLOYEE_ID_SEQUENCE");
+            SALUTATION 		= addColumn("SALUTATION", 		DataType.VARCHAR,	 5, false);
+            FIRST_NAME 		= addColumn("FIRST_NAME", 		DataType.VARCHAR,	40, true);
+            LAST_NAME 		= addColumn("LAST_NAME", 		DataType.VARCHAR,	40, true);
+            DATE_OF_BIRTH 	= addColumn("DATE_OF_BIRTH", 	DataType.DATE,		 0, false);
+            DEPARTMENT_ID 	= addColumn("DEPARTMENT_ID", 	DataType.INTEGER, 	 0, true);
+            GENDER 			= addColumn("GENDER", 			DataType.VARCHAR,	 1, false);
+            PHONE_NUMBER 	= addColumn("PHONE_NUMBER", 	DataType.VARCHAR,	40, false);
+            EMAIL 			= addColumn("EMAIL", 			DataType.VARCHAR,	80, false);
+            RETIRED			= addColumn("RETIRED", 			DataType.BOOL, 		 0, true, false);
+            // PICTURE 		= addColumn("PICTURE", 			DataType.BLOB, 		 0, false);
+            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,	 0, true);
 
             // Primary Key
             setPrimaryKey(EMPLOYEE_ID);
diff --git a/empire-db-examples/empire-db-example-spring/src/main/java/org/apache/empire/samples/spring/db/SampleDB.java b/empire-db-examples/empire-db-example-spring/src/main/java/org/apache/empire/samples/spring/db/SampleDB.java
index 0e5d394..046764d 100644
--- a/empire-db-examples/empire-db-example-spring/src/main/java/org/apache/empire/samples/spring/db/SampleDB.java
+++ b/empire-db-examples/empire-db-example-spring/src/main/java/org/apache/empire/samples/spring/db/SampleDB.java
@@ -20,7 +20,6 @@ package org.apache.empire.samples.spring.db;
 
 import org.apache.empire.commons.Options;
 import org.apache.empire.data.DataType;
-import org.apache.empire.data.DataMode;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBTable;
@@ -63,11 +62,11 @@ public class SampleDB extends DBDatabase
         {
             super("DEPARTMENTS", db);
             // ID
-            DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,       0, DataMode.AutoGenerated, "DEP_ID_SEQUENCE");
-            NAME            = addColumn("NAME",             DataType.VARCHAR,      80, DataMode.NotNull);
-            HEAD            = addColumn("HEAD",             DataType.VARCHAR,      80, DataMode.Nullable);
-            BUSINESS_UNIT   = addColumn("BUSINESS_UNIT",    DataType.VARCHAR,       4, DataMode.NotNull, "ITTK");
-            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,      0, DataMode.AutoGenerated);
+            DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,       0, true, "DEP_ID_SEQUENCE");
+            NAME            = addColumn("NAME",             DataType.VARCHAR,      80, true);
+            HEAD            = addColumn("HEAD",             DataType.VARCHAR,      80, false);
+            BUSINESS_UNIT   = addColumn("BUSINESS_UNIT",    DataType.VARCHAR,       4, true, "ITTK");
+            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,      0, true);
 
             // Primary Key
             setPrimaryKey(DEPARTMENT_ID);
@@ -102,18 +101,18 @@ public class SampleDB extends DBDatabase
         {
             super("EMPLOYEES", db);
             // ID
-            EMPLOYEE_ID     = addColumn("EMPLOYEE_ID",      DataType.AUTOINC,      0, DataMode.AutoGenerated, "EMPLOYEE_ID_SEQUENCE");
-            SALUTATION      = addColumn("SALUTATION",       DataType.VARCHAR,     20, DataMode.Nullable);
-            FIRSTNAME       = addColumn("FIRSTNAME",        DataType.VARCHAR,     40, DataMode.NotNull);
-            LASTNAME        = addColumn("LASTNAME",         DataType.VARCHAR,     40, DataMode.NotNull);
-            DATE_OF_BIRTH   = addColumn("DATE_OF_BIRTH",    DataType.DATE,         0, DataMode.Nullable);
-            DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",    DataType.INTEGER,      0, DataMode.NotNull);
-            GENDER          = addColumn("GENDER",           DataType.VARCHAR,      1, DataMode.Nullable);
-            PHONE_NUMBER    = addColumn("PHONE_NUMBER",     DataType.VARCHAR,     40, DataMode.Nullable);
-            EMAIL           = addColumn("EMAIL",            DataType.VARCHAR,     80, DataMode.Nullable);
-            SALARY          = addColumn("SALARY",           DataType.DECIMAL,   10.2, DataMode.Nullable);
-            RETIRED         = addColumn("RETIRED",          DataType.BOOL,         0, DataMode.NotNull, false);
-            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,     0, DataMode.AutoGenerated);
+            EMPLOYEE_ID     = addColumn("EMPLOYEE_ID",      DataType.AUTOINC,      0, true, "EMPLOYEE_ID_SEQUENCE");
+            SALUTATION      = addColumn("SALUTATION",       DataType.VARCHAR,     20, false);
+            FIRSTNAME       = addColumn("FIRSTNAME",        DataType.VARCHAR,     40, true);
+            LASTNAME        = addColumn("LASTNAME",         DataType.VARCHAR,     40, true);
+            DATE_OF_BIRTH   = addColumn("DATE_OF_BIRTH",    DataType.DATE,         0, false);
+            DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",    DataType.INTEGER,      0, true);
+            GENDER          = addColumn("GENDER",           DataType.VARCHAR,      1, false);
+            PHONE_NUMBER    = addColumn("PHONE_NUMBER",     DataType.VARCHAR,     40, false);
+            EMAIL           = addColumn("EMAIL",            DataType.VARCHAR,     80, false);
+            SALARY          = addColumn("SALARY",           DataType.DECIMAL,   10.2, false);
+            RETIRED         = addColumn("RETIRED",          DataType.BOOL,         0, true, false);
+            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,     0, true);
 
             // Primary Key
             setPrimaryKey(EMPLOYEE_ID);
diff --git a/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/SampleBeanDomain.java b/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/SampleBeanDomain.java
index 491f937..0f27d18 100644
--- a/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/SampleBeanDomain.java
+++ b/empire-db-examples/empire-db-example-struts2-cxf/src/main/java/org/apache/empire/struts2/websample/ws/SampleBeanDomain.java
@@ -19,7 +19,6 @@
 package org.apache.empire.struts2.websample.ws;
 
 import org.apache.empire.commons.Options;
-import org.apache.empire.data.DataMode;
 import org.apache.empire.data.DataType;
 import org.apache.empire.data.bean.BeanDomain;
 import org.apache.empire.data.bean.BeanProperty;
@@ -49,11 +48,11 @@ public class SampleBeanDomain extends BeanDomain
         {
             super("DEPARTMENTS", dom);
             // ID
-            C_DEPARTMENT_ID   = addProp("departmentId",    DataType.AUTOINC,       0, DataMode.NotNull);
-            C_NAME            = addProp("name",            DataType.VARCHAR,      80, DataMode.NotNull);
-            C_HEAD            = addProp("head",            DataType.VARCHAR,      80, DataMode.Nullable);
-            C_BUSINESS_UNIT   = addProp("businessUnit",    DataType.VARCHAR,       4, DataMode.NotNull);
-            C_UPDATE_TIMESTAMP= addProp("updateTimestamp", DataType.DATETIME,      0, DataMode.AutoGenerated);
+            C_DEPARTMENT_ID   = addProp("departmentId",    DataType.AUTOINC,       0, true);
+            C_NAME            = addProp("name",            DataType.VARCHAR,      80, true);
+            C_HEAD            = addProp("head",            DataType.VARCHAR,      80, false);
+            C_BUSINESS_UNIT   = addProp("businessUnit",    DataType.VARCHAR,       4, true);
+            C_UPDATE_TIMESTAMP= addProp("updateTimestamp", DataType.DATETIME,      0, true, true);
         
             // Primary Key
             setKeyColumn(C_DEPARTMENT_ID);
@@ -86,17 +85,17 @@ public class SampleBeanDomain extends BeanDomain
         {
             super("EMPLOYEES", dom);
             // ID
-            C_EMPLOYEE_ID     = addProp("employeeId",		DataType.AUTOINC,      0, DataMode.NotNull);
-            C_SALUTATION      = addProp("salutation",       DataType.VARCHAR,     20, DataMode.Nullable);
-            C_FIRSTNAME       = addProp("firstname",        DataType.VARCHAR,     40, DataMode.NotNull);
-            C_LASTNAME        = addProp("lastname",         DataType.VARCHAR,     40, DataMode.NotNull);
-            C_DATE_OF_BIRTH   = addProp("dateOfBirth",		DataType.DATE,         0, DataMode.Nullable);
-            C_DEPARTMENT_ID   = addProp("departmentId",		DataType.INTEGER,      0, DataMode.NotNull,		"select");
-            C_GENDER          = addProp("gender",           DataType.VARCHAR,      1, DataMode.Nullable,	"select");
-            C_PHONE_NUMBER    = addProp("phoneNumber",		DataType.VARCHAR,     40, DataMode.Nullable, 	"phone");
-            C_EMAIL           = addProp("email",            DataType.VARCHAR,     80, DataMode.Nullable);
-            C_RETIRED         = addProp("retired",          DataType.BOOL,         0, DataMode.NotNull);
-            C_UPDATE_TIMESTAMP= addProp("updateTimestamp",	DataType.DATETIME,     0, DataMode.AutoGenerated, "text");
+            C_EMPLOYEE_ID     = addProp("employeeId",		DataType.AUTOINC,      0, true);
+            C_SALUTATION      = addProp("salutation",       DataType.VARCHAR,     20, false);
+            C_FIRSTNAME       = addProp("firstname",        DataType.VARCHAR,     40, true);
+            C_LASTNAME        = addProp("lastname",         DataType.VARCHAR,     40, true);
+            C_DATE_OF_BIRTH   = addProp("dateOfBirth",		DataType.DATE,         0, false);
+            C_DEPARTMENT_ID   = addProp("departmentId",		DataType.INTEGER,      0, true,		"select");
+            C_GENDER          = addProp("gender",           DataType.VARCHAR,      1, false,	"select");
+            C_PHONE_NUMBER    = addProp("phoneNumber",		DataType.VARCHAR,     40, false, 	"phone");
+            C_EMAIL           = addProp("email",            DataType.VARCHAR,     80, false);
+            C_RETIRED         = addProp("retired",          DataType.BOOL,         0, true);
+            C_UPDATE_TIMESTAMP= addProp("updateTimestamp",	DataType.DATETIME,     0, true, "    text", true);
         
             // Primary Key
             setKeyColumn(C_EMPLOYEE_ID);
diff --git a/empire-db-examples/empire-db-example-struts2/src/main/java/org/apache/empire/struts2/websample/db/SampleDB.java b/empire-db-examples/empire-db-example-struts2/src/main/java/org/apache/empire/struts2/websample/db/SampleDB.java
index 2347f2b..4ac2a5a 100644
--- a/empire-db-examples/empire-db-example-struts2/src/main/java/org/apache/empire/struts2/websample/db/SampleDB.java
+++ b/empire-db-examples/empire-db-example-struts2/src/main/java/org/apache/empire/struts2/websample/db/SampleDB.java
@@ -19,7 +19,6 @@
 package org.apache.empire.struts2.websample.db;
 
 import org.apache.empire.commons.Options;
-import org.apache.empire.data.DataMode;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBDatabase;
@@ -54,11 +53,11 @@ public class SampleDB extends DBDatabase
         {
             super("DEPARTMENTS", db);
             // ID
-            C_DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,       0, DataMode.NotNull, "DEP_ID_SEQUENCE");
-            C_NAME            = addColumn("NAME",             DataType.VARCHAR,      80, DataMode.NotNull);
-            C_HEAD            = addColumn("HEAD",             DataType.VARCHAR,      80, DataMode.Nullable);
-            C_BUSINESS_UNIT   = addColumn("BUSINESS_UNIT",    DataType.VARCHAR,       4, DataMode.NotNull, "ITTK");
-            C_UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,      0, DataMode.NotNull);
+            C_DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,       0, true, "DEP_ID_SEQUENCE");
+            C_NAME            = addColumn("NAME",             DataType.VARCHAR,      80, true);
+            C_HEAD            = addColumn("HEAD",             DataType.VARCHAR,      80, false);
+            C_BUSINESS_UNIT   = addColumn("BUSINESS_UNIT",    DataType.VARCHAR,       4, true, "ITTK");
+            C_UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,      0, true);
         
             // Primary Key
             setPrimaryKey(C_DEPARTMENT_ID);
@@ -93,17 +92,17 @@ public class SampleDB extends DBDatabase
         {
             super("EMPLOYEES", db);
             // ID
-            C_EMPLOYEE_ID     = addColumn("EMPLOYEE_ID",      DataType.AUTOINC,      0, DataMode.NotNull, "EMPLOYEE_ID_SEQUENCE");
-            C_SALUTATION      = addColumn("SALUTATION",       DataType.VARCHAR,     20, DataMode.Nullable);
-            C_FIRSTNAME       = addColumn("FIRSTNAME",        DataType.VARCHAR,     40, DataMode.NotNull);
-            C_LASTNAME        = addColumn("LASTNAME",         DataType.VARCHAR,     40, DataMode.NotNull);
-            C_DATE_OF_BIRTH   = addColumn("DATE_OF_BIRTH",    DataType.DATE,         0, DataMode.Nullable);
-            C_DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",    DataType.INTEGER,      0, DataMode.NotNull);
-            C_GENDER          = addColumn("GENDER",           DataType.VARCHAR,      1, DataMode.Nullable);
-            C_PHONE_NUMBER    = addColumn("PHONE_NUMBER",     DataType.VARCHAR,     40, DataMode.Nullable);
-            C_EMAIL           = addColumn("EMAIL",            DataType.VARCHAR,     80, DataMode.Nullable);
-            C_RETIRED         = addColumn("RETIRED",          DataType.BOOL,         0, DataMode.NotNull, false);
-            C_UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,     0, DataMode.NotNull);
+            C_EMPLOYEE_ID     = addColumn("EMPLOYEE_ID",      DataType.AUTOINC,      0, true, "EMPLOYEE_ID_SEQUENCE");
+            C_SALUTATION      = addColumn("SALUTATION",       DataType.VARCHAR,     20, false);
+            C_FIRSTNAME       = addColumn("FIRSTNAME",        DataType.VARCHAR,     40, true);
+            C_LASTNAME        = addColumn("LASTNAME",         DataType.VARCHAR,     40, true);
+            C_DATE_OF_BIRTH   = addColumn("DATE_OF_BIRTH",    DataType.DATE,         0, false);
+            C_DEPARTMENT_ID   = addColumn("DEPARTMENT_ID",    DataType.INTEGER,      0, true);
+            C_GENDER          = addColumn("GENDER",           DataType.VARCHAR,      1, false);
+            C_PHONE_NUMBER    = addColumn("PHONE_NUMBER",     DataType.VARCHAR,     40, false);
+            C_EMAIL           = addColumn("EMAIL",            DataType.VARCHAR,     80, false);
+            C_RETIRED         = addColumn("RETIRED",          DataType.BOOL,         0, true, false);
+            C_UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,     0, true);
         
             // Primary Key
             setPrimaryKey(C_EMPLOYEE_ID);
diff --git a/empire-db/src/main/java/org/apache/empire/data/DataMode.java b/empire-db/src/main/java/org/apache/empire/data/DataMode.java
index e5ca1d4..76c9bd4 100644
--- a/empire-db/src/main/java/org/apache/empire/data/DataMode.java
+++ b/empire-db/src/main/java/org/apache/empire/data/DataMode.java
@@ -23,10 +23,6 @@ package org.apache.empire.data;
  */
 public enum DataMode {
     /**
-     * ReadOnly = value cannot be changed
-     */
-    ReadOnly, 
-    /**
      * Optional = value may be null
      */
     Nullable, // i.e. Optional 
diff --git a/empire-db/src/main/java/org/apache/empire/data/bean/BeanClass.java b/empire-db/src/main/java/org/apache/empire/data/bean/BeanClass.java
index e9d8ab7..443efbf 100644
--- a/empire-db/src/main/java/org/apache/empire/data/bean/BeanClass.java
+++ b/empire-db/src/main/java/org/apache/empire/data/bean/BeanClass.java
@@ -24,7 +24,6 @@ import java.util.List;
 
 import org.apache.empire.data.Column;
 import org.apache.empire.data.DataType;
-import org.apache.empire.data.DataMode;
 
 
 /**
@@ -59,19 +58,7 @@ public abstract class BeanClass
         prop.beanClass = this;
     }
 
-    protected final BeanProperty addProp(String propname, DataType dataType, double size, DataMode dataMode, String controlType)
-    {
-        BeanProperty prop = new BeanProperty(propname, dataType, size, dataMode, controlType);
-        addProp(prop);
-        return prop;
-    }
-
-    protected final BeanProperty addProp(String propname, DataType dataType, double size, DataMode dataMode)
-    {
-        return addProp(propname, dataType, size, dataMode, "text");
-    }
-
-    protected final BeanProperty addProp(String propname, DataType dataType, double size, boolean required, String controlType, boolean readOnly)
+    protected BeanProperty addProp(String propname, DataType dataType, double size, boolean required, String controlType, boolean readOnly)
     {
         BeanProperty prop = new BeanProperty(propname, dataType, size, required, controlType, readOnly);
         addProp(prop);
@@ -83,6 +70,11 @@ public abstract class BeanClass
         return addProp(propname, dataType, size, required, controlType, false);
     }
 
+    protected final BeanProperty addProp(String propname, DataType dataType, double size, boolean required, boolean readOnly)
+    {
+        return addProp(propname, dataType, size, required, "text", readOnly);
+    }
+
     protected final BeanProperty addProp(String propname, DataType dataType, double size, boolean required)
     {
         return addProp(propname, dataType, size, required, "text", false);
diff --git a/empire-db/src/main/java/org/apache/empire/data/bean/BeanProperty.java b/empire-db/src/main/java/org/apache/empire/data/bean/BeanProperty.java
index f6e6ce3..7b53f84 100644
--- a/empire-db/src/main/java/org/apache/empire/data/bean/BeanProperty.java
+++ b/empire-db/src/main/java/org/apache/empire/data/bean/BeanProperty.java
@@ -38,10 +38,11 @@ public class BeanProperty implements Column
     private final DataMode dataMode;
     private final double   size;
     
-    private String   controlType; // optional (default is 'text')
-    private String   title;       // optional
-    private Options  options;     // optional
-    private Attributes attributes;// optional
+    private String      controlType; // optional (default is 'text')
+    private String      title;       // optional
+    private Options     options;     // optional
+    private Attributes  attributes;  // optional
+    private boolean     readOnly;
     
     protected BeanClass beanClass;  // internal;
     
@@ -55,13 +56,14 @@ public class BeanProperty implements Column
      * @param dataMode determines whether this property is read only, optional, required or auto-generated 
      * @param controlType the control type to be used for editing this value. Depends on the client. Default is "text"
      */
-    public BeanProperty(String name, DataType dataType, double size, DataMode dataMode, String controlType)
+    protected BeanProperty(String name, DataType dataType, double size, DataMode dataMode, String controlType, boolean readOnly)
     {
         this.name = name;
         this.dataType = dataType;
         this.size = size;
         this.dataMode = dataMode;
         this.controlType = controlType;
+        this.readOnly = readOnly;
     }
 
     /**
@@ -75,7 +77,21 @@ public class BeanProperty implements Column
      */
     public BeanProperty(String name, DataType dataType, double size, boolean required, String controlType, boolean readOnly)
     {
-        this(name, dataType, size, (readOnly ? DataMode.ReadOnly : (required ? DataMode.NotNull : DataMode.Nullable)), controlType);
+        this(name, dataType, size, (dataType==DataType.AUTOINC ? DataMode.AutoGenerated : (required ? DataMode.NotNull : DataMode.Nullable)), controlType, readOnly);
+    }
+
+    /**
+     * Constructs a bean property definition
+     * @param name
+     * @param dataType
+     * @param size
+     * @param required
+     * @param controlType
+     * @param readOnly
+     */
+    public BeanProperty(String name, DataType dataType, double size, boolean required, String controlType)
+    {
+        this(name, dataType, size, (dataType==DataType.AUTOINC ? DataMode.AutoGenerated : (required ? DataMode.NotNull : DataMode.Nullable)), controlType, false);
     }
     
     /**
@@ -87,7 +103,7 @@ public class BeanProperty implements Column
      */
     public BeanProperty(String name, DataType dataType, double size, boolean required)
     {
-        this(name, dataType, size, (required ? DataMode.NotNull : DataMode.Nullable), "text");
+        this(name, dataType, size, (dataType==DataType.AUTOINC ? DataMode.AutoGenerated : (required ? DataMode.NotNull : DataMode.Nullable)), "text", false);
     }
 
     /**
@@ -195,7 +211,7 @@ public class BeanProperty implements Column
     @Override
     public boolean isReadOnly()
     {
-        return (dataMode==DataMode.ReadOnly || dataMode==DataMode.AutoGenerated);
+        return (this.readOnly || dataMode==DataMode.AutoGenerated);
     }
 
     @Override
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
index 82c3139..5cbb919 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
@@ -60,7 +60,7 @@ public abstract class DBColumn extends DBColumnExpr
     /**
      * Read only column (Boolean)
      */
-    public static final String DBCOLATTR_READONLY  = "readonly";
+    // private static final String DBCOLATTR_READONLY  = "readonly";
     
     /**
      * Read only column (Boolean)
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 eb06f7a..a75c5e6 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
@@ -35,7 +35,6 @@ import java.util.UUID;
 import org.apache.empire.commons.DateUtils;
 import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.commons.StringUtils;
-import org.apache.empire.data.DataMode;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.exceptions.EmpireSQLException;
 import org.apache.empire.exceptions.InvalidArgumentException;
@@ -153,9 +152,9 @@ public abstract class DBDatabaseDriver implements Serializable
         {
             super(tableName, db);
             // Add all Colums
-            C_SEQNAME   = addColumn("SeqName",  DataType.VARCHAR,   40, DataMode.NotNull);
-            C_SEQVALUE  = addColumn("SeqValue", DataType.INTEGER,    0, DataMode.NotNull);
-            C_TIMESTAMP = addColumn("SeqTime",  DataType.DATETIME,   0, DataMode.NotNull);
+            C_SEQNAME   = addColumn("SeqName",  DataType.VARCHAR,   40, true);
+            C_SEQVALUE  = addColumn("SeqValue", DataType.INTEGER,    0, true);
+            C_TIMESTAMP = addColumn("SeqTime",  DataType.DATETIME,   0, true);
             // Primary Key
             setPrimaryKey(new DBColumn[] { C_SEQNAME });
         }
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 487bab6..199f762 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
@@ -392,6 +392,13 @@ public abstract class DBRowSet extends DBExpr
      */
     public void setTimestampColumn(DBColumn timestampColumn)
     {
+        if (timestampColumn.getRowSet()!=this)
+            throw new InvalidArgumentException("timestampColumn", timestampColumn);
+        if (this.timestampColumn!=null && this.timestampColumn!=timestampColumn)
+            log.warn("Timestamp column has already been set for rowset {}. Replacing with {}", getName(), timestampColumn.getName());
+        if (timestampColumn instanceof DBTableColumn)
+            ((DBTableColumn) timestampColumn).setReadOnly(true);
+        // set now
         this.timestampColumn = timestampColumn;
     }
     
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBTable.java b/empire-db/src/main/java/org/apache/empire/db/DBTable.java
index b7244ec..bec0d1c 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBTable.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBTable.java
@@ -200,11 +200,13 @@ public class DBTable extends DBRowSet implements Cloneable
 
     /**
      * Adds a column to this table's column list.
+     * DO NOT CALL!
+     * This method is internally called from the constructor of DBTableColumn
      * 
      * @param column a column object
      */
     protected void addColumn(DBTableColumn column)
-    { // find column by name
+    {   // find column by name
         if (column==null || column.getRowSet()!=this)
             throw new InvalidArgumentException("column", column);
         if (getColumn(column.getName())!=null)
@@ -212,7 +214,7 @@ public class DBTable extends DBRowSet implements Cloneable
         // add now
         columns.add(column);
     }
-
+    
     /**
      * Creates a new DBTableColumn object and adds it to the column collection.
      * 
@@ -223,56 +225,85 @@ public class DBTable extends DBRowSet implements Cloneable
      * @param defValue a Object object
      * @return the created DBTableColumn object
      */
-    public final DBTableColumn addColumn(String columnName, DataType type, double size, DataMode dataMode, Object defValue)
+    protected DBTableColumn addColumn(String columnName, DataType type, double size, DataMode dataMode, Object defValue)
     { 
-        return new DBTableColumn(this, type, columnName, size, dataMode, defValue);
+        DBTableColumn col = new DBTableColumn(this, type, columnName, size, dataMode, defValue);
+        addColumn(col);
+        return col;
     }
 
     /**
      * Creates a new DBTableColumn object and adds it to the column collection.
+     * Instead of the data mode enum, a boolean flag is used to indicate whether the column is required or optional.
      * 
      * @param columnName the column name
      * @param type the type of the column e.g. integer, text, date
      * @param size the column width
-     * @param dataMode determines whether this column is optional, required or auto-generated 
+     * @param required true if not null column
+     * @param defValue a Object object
      * @return the created DBTableColumn object
      */
-    public final DBTableColumn addColumn(String columnName, DataType type, double size, DataMode dataMode)
+    public final DBTableColumn addColumn(String columnName, DataType type, double size, boolean required, Object defValue)
     { 
-        return new DBTableColumn(this, type, columnName, size, dataMode, null);
+        DataMode dm = (required ? DataMode.NotNull : DataMode.Nullable);
+        return this.addColumn(columnName, type, size, dm, defValue);
     }
 
     /**
-     * Creates a new DBTableColumn object and adds it to the column collection.
-     * Instead of the data mode enum, a boolean flag is used to indicate whether the column is required or optional.
+     * Creates a new table column and adds it to the table's column list
      * 
      * @param columnName the column name
      * @param type the type of the column e.g. integer, text, date
      * @param size the column width
      * @param required true if not null column
-     * @param defValue a Object object
      * @return the created DBTableColumn object
      */
-    public final DBTableColumn addColumn(String columnName, DataType type, double size, boolean required, Object defValue)
+    public final DBTableColumn addColumn(String columnName, DataType type, double size, boolean required)
     { 
         DataMode dm = (required ? DataMode.NotNull : DataMode.Nullable);
-        return new DBTableColumn(this, type, columnName, size, dm, defValue);
+        return this.addColumn(columnName, type, size, dm, null);
     }
 
     /**
-     * Creates a new DBTableColumn object and adds it to the column collection.
-     * Instead of the data mode enum, a boolean flag is used to indicate whether the column is required or optional. 
+     * Creates a new table column and adds it to the table's column list
+     * This overload should be used for column containing enum values which have no default value.
      * 
      * @param columnName the column name
      * @param type the type of the column e.g. integer, text, date
      * @param size the column width
      * @param required true if not null column
+     * @param enumType  the class of the enum type
      * @return the created DBTableColumn object
      */
-    public final DBTableColumn addColumn(String columnName, DataType type, double size, boolean required)
+    public final DBTableColumn addColumn(String columnName, DataType type, int size, boolean required, Class<?> enumType)
+    {
+        if (!enumType.isEnum())
+        {   // Class must be an enum type
+            throw new InvalidArgumentException("enumType", enumType);
+        }
+        DataMode dm = (required ? DataMode.NotNull : DataMode.Nullable);
+        DBTableColumn col = this.addColumn(columnName, type, size, dm, null);
+        col.setEnumOptions(enumType);
+        return col;
+    }
+
+    /**
+     * Creates a new table column and adds it to the table's column list
+     * This overload should be used for column containing enum values which have a default value.
+     * 
+     * @param columnName the column name
+     * @param type the type of the column e.g. integer, text, date
+     * @param size the column width
+     * @param required true if not null column
+     * @param enumType  defValue the default value
+     * @return the created DBTableColumn object
+     */
+    public final DBTableColumn addColumn(String columnName, DataType type, int size, boolean required, Enum<?> defValue)
     { 
         DataMode dm = (required ? DataMode.NotNull : DataMode.Nullable);
-        return new DBTableColumn(this, type, columnName, size, dm, null);
+        DBTableColumn col = this.addColumn(columnName, type, size, dm, defValue);
+        col.setEnumOptions(defValue.getClass());
+        return col;
     }
 
     /**
@@ -366,7 +397,7 @@ public class DBTable extends DBRowSet implements Cloneable
      */
     public DBTableColumn addTimestampColumn(String columnName)
     {
-        DBTableColumn col = addColumn(columnName, DataType.DATETIME, 0, DataMode.AutoGenerated, DBDatabase.SYSDATE);
+        DBTableColumn col = addColumn(columnName, DataType.DATETIME, 0, true, DBDatabase.SYSDATE);
         setTimestampColumn(col);
         return col;
     }
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java b/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
index 7b2853c..9d4ad4e 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBTableColumn.java
@@ -61,6 +61,7 @@ public class DBTableColumn extends DBColumn
     protected DataMode  dataMode;
     protected Object    defValue;
     protected int 		decimalScale = 0;
+    protected boolean   readOnly;
 
     /**
      * Constructs a DBTableColumn object set the specified parameters to this object.
@@ -85,16 +86,12 @@ public class DBTableColumn extends DBColumn
         this.type = type;
         this.dataMode = dataMode;
         this.defValue = defValue;
+        this.readOnly =(dataMode == DataMode.AutoGenerated);
         // xml
         this.attributes = new Attributes();
         this.options = null;
         // size (after attributes!)
         setSize(size);
-        // Append to table (if supplied)
-        if (table != null)
-        {
-            table.addColumn(this);
-        }
     }
 
     /**
@@ -309,12 +306,8 @@ public class DBTableColumn extends DBColumn
      */
     @Override
     public boolean isReadOnly()
-    {
-        if (attributes!=null &&
-            attributes.contains(DBCOLATTR_READONLY))
-            return true;
-        // Check DataMode
-        return (dataMode==DataMode.ReadOnly || dataMode==DataMode.AutoGenerated);
+    {   // Check DataMode
+        return (this.readOnly || dataMode==DataMode.AutoGenerated);
     }
 
     /**
@@ -324,15 +317,7 @@ public class DBTableColumn extends DBColumn
      */
     public void setReadOnly(boolean readOnly)
     {
-        if (readOnly)
-        {
-            setAttribute(DBCOLATTR_READONLY, Boolean.TRUE);
-        }
-        else  
-        {   // Remove Attribute
-            if (attributes!=null)
-                attributes.remove(DBCOLATTR_READONLY);
-        }
+        this.readOnly = readOnly;
     }
     
     /**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBView.java b/empire-db/src/main/java/org/apache/empire/db/DBView.java
index 11de9d4..76775bf 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBView.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBView.java
@@ -103,9 +103,8 @@ public abstract class DBView extends DBRowSet
             if (getView().isUpdateable()==false)
                 return true;
             // Check ReadOnly attribute 
-            if (attributes!=null &&
-                attributes.contains(DBCOLATTR_READONLY))
-                return true;
+            if (updateColumn!=null)
+                return updateColumn.isReadOnly();
             // AUTOINC's are read only
             return isAutoGenerated();
         }
diff --git a/empire-db/src/test/java/org/apache/empire/db/CompanyDB.java b/empire-db/src/test/java/org/apache/empire/db/CompanyDB.java
index 0fb0d6e..2c369bc 100644
--- a/empire-db/src/test/java/org/apache/empire/db/CompanyDB.java
+++ b/empire-db/src/test/java/org/apache/empire/db/CompanyDB.java
@@ -19,7 +19,6 @@
 package org.apache.empire.db;
 
 import org.apache.empire.commons.Options;
-import org.apache.empire.data.DataMode;
 import org.apache.empire.data.DataType;
 
 
@@ -47,12 +46,11 @@ public class CompanyDB extends DBDatabase
         {
             super("DEPARTMENTS", db);
             // ID
-            ID              = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,       0, DataMode.AutoGenerated, "DEP_ID_SEQUENCE");
-            NAME            = addColumn("NAME",             DataType.VARCHAR,      80, DataMode.NotNull);
-            HEAD            = addColumn("HEAD",             DataType.VARCHAR,      80, DataMode.Nullable);
-            BUSINESS_UNIT   = addColumn("BUSINESS_UNIT",    DataType.VARCHAR,       4, DataMode.NotNull, "ITTK");
-            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,      0, DataMode.NotNull);
-
+            ID              = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,       0, true, "DEP_ID_SEQUENCE");
+            NAME            = addColumn("NAME",             DataType.VARCHAR,      80, true);
+            HEAD            = addColumn("HEAD",             DataType.VARCHAR,      80, false);
+            BUSINESS_UNIT   = addColumn("BUSINESS_UNIT",    DataType.VARCHAR,       4, true, "ITTK");
+            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,      0, true);
             // Primary Key
             setPrimaryKey(ID);
             // Set other Indexes
@@ -85,18 +83,18 @@ public class CompanyDB extends DBDatabase
         {
             super("EMPLOYEES", db);
             // ID
-            ID              = addColumn("EMPLOYEE_ID",      DataType.AUTOINC,      0, DataMode.NotNull, "EMPLOYEE_ID_SEQUENCE");
-            SALUTATION      = addColumn("SALUTATION",       DataType.VARCHAR,     20, DataMode.Nullable);
-            FIRSTNAME       = addColumn("FIRSTNAME",        DataType.VARCHAR,     40, DataMode.NotNull);
-            LASTNAME        = addColumn("LASTNAME",         DataType.VARCHAR,     40, DataMode.NotNull);
-            DATE_OF_BIRTH   = addColumn("DATE_OF_BIRTH",    DataType.DATE,         0, DataMode.Nullable);
-            DEPARTMENT_ID   = addColumn("ID",               DataType.INTEGER,      0, DataMode.NotNull);
-            GENDER          = addColumn("GENDER",           DataType.VARCHAR,      1, DataMode.Nullable);
-            PHONE_NUMBER    = addColumn("PHONE_NUMBER",     DataType.VARCHAR,     40, DataMode.Nullable);
-            EMAIL           = addColumn("EMAIL",            DataType.VARCHAR,     80, DataMode.Nullable);
-            SALARY          = addColumn("SALARY",           DataType.DECIMAL,   10.2, DataMode.Nullable);
-            RETIRED         = addColumn("RETIRED",          DataType.BOOL,         0, DataMode.NotNull, false);
-            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,     0, DataMode.NotNull);
+            ID              = addColumn("EMPLOYEE_ID",      DataType.AUTOINC,      0, true, "EMPLOYEE_ID_SEQUENCE");
+            SALUTATION      = addColumn("SALUTATION",       DataType.VARCHAR,     20, false);
+            FIRSTNAME       = addColumn("FIRSTNAME",        DataType.VARCHAR,     40, true);
+            LASTNAME        = addColumn("LASTNAME",         DataType.VARCHAR,     40, true);
+            DATE_OF_BIRTH   = addColumn("DATE_OF_BIRTH",    DataType.DATE,         0, false);
+            DEPARTMENT_ID   = addColumn("ID",               DataType.INTEGER,      0, true);
+            GENDER          = addColumn("GENDER",           DataType.VARCHAR,      1, false);
+            PHONE_NUMBER    = addColumn("PHONE_NUMBER",     DataType.VARCHAR,     40, false);
+            EMAIL           = addColumn("EMAIL",            DataType.VARCHAR,     80, false);
+            SALARY          = addColumn("SALARY",           DataType.DECIMAL,   10.2, false);
+            RETIRED         = addColumn("RETIRED",          DataType.BOOL,         0, true, false);
+            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,     0, true);
 
             // Primary Key
             setPrimaryKey(ID);
@@ -127,9 +125,9 @@ public class CompanyDB extends DBDatabase
         {
             super("DATA", db);
             // ID
-            ID              = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,       0, DataMode.AutoGenerated, "DATA_ID_SEQUENCE");
-            DATA            = addColumn("NAME",             DataType.BLOB,          0, DataMode.NotNull);
-            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,      0, DataMode.NotNull);
+            ID              = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,       0, true, "DATA_ID_SEQUENCE");
+            DATA            = addColumn("NAME",             DataType.BLOB,          0, true);
+            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME,      0, true);
 
             // Primary Key
             setPrimaryKey(ID);
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 ba8788c..b29432c 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
@@ -26,7 +26,6 @@ import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.empire.data.DataMode;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.derby.DBDatabaseDriverDerby;
 import org.apache.empire.db.h2.DBDatabaseDriverH2;
@@ -256,9 +255,9 @@ public class IntegerTest {
 
             public SampleTable(DBDatabase db) {
                 super("SAMPLE", db);
-                MY_INTEGER = addColumn("MY_INTEGER", DataType.INTEGER, 0, DataMode.NotNull);
-                MY_LONG = addColumn("MY_LONG", DataType.INTEGER, 8, DataMode.NotNull);
-                MY_SHORT = addColumn("MY_SHORT", DataType.INTEGER, 2, DataMode.NotNull);
+                MY_INTEGER = addColumn("MY_INTEGER", DataType.INTEGER, 0, true);
+                MY_LONG    = addColumn("MY_LONG",    DataType.INTEGER, 8, true);
+                MY_SHORT   = addColumn("MY_SHORT",   DataType.INTEGER, 2, true);
             }
         }
     }
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 da10b78..09f4c32 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
@@ -27,7 +27,6 @@ import java.util.Date;
 
 import org.apache.empire.DBResource;
 import org.apache.empire.DBResource.DB;
-import org.apache.empire.data.DataMode;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.CompanyDB;
 import org.apache.empire.db.DBCmdType;
@@ -156,8 +155,8 @@ public class DBDatabaseDriverHSqlTest{
         public Data(DBDatabase db)
         {
             super("DATA", db);
-            ID    = addColumn("DATA_ID",  		DataType.AUTOINC,       0, DataMode.AutoGenerated);
-            VALUE = addColumn("VALUE",          DataType.VARCHAR,     256, DataMode.NotNull);
+            ID    = addColumn("DATA_ID",  		DataType.AUTOINC,       0, true);
+            VALUE = addColumn("VALUE",          DataType.VARCHAR,     256, true);
             setPrimaryKey(ID);
         }
     }
diff --git a/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlDateTest.java b/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlDateTest.java
index 005f93d..c288126 100644
--- a/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlDateTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlDateTest.java
@@ -28,7 +28,6 @@ import java.util.Date;
 
 import org.apache.empire.DBResource;
 import org.apache.empire.DBResource.DB;
-import org.apache.empire.data.DataMode;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBCommand;
 import org.apache.empire.db.DBDatabase;
@@ -164,10 +163,10 @@ public class DBDatabaseDriverMSSqlDateTest {
 
 			public UserInfoTable(DBDatabase db) {
 				super("USER_INFO", db);
-				ID          = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,    0, DataMode.AutoGenerated);
-				USER        = addColumn("USER",             DataType.VARCHAR,   80, DataMode.NotNull);
-				REG_DATE    = addColumn("REG_DATE",         DataType.DATE,      80, DataMode.NotNull);
-				LAST_LOGIN  = addColumn("LAST_LOGIN",       DataType.DATETIME,   0, DataMode.Nullable);
+				ID          = addColumn("DEPARTMENT_ID",    DataType.AUTOINC,    0, true);
+				USER        = addColumn("USER",             DataType.VARCHAR,   80, true);
+				REG_DATE    = addColumn("REG_DATE",         DataType.DATE,      80, true);
+				LAST_LOGIN  = addColumn("LAST_LOGIN",       DataType.DATETIME,   0, false);
 				// Primary Key
 				setPrimaryKey(ID);
 
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 649b666..b33a6d9 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
@@ -155,8 +155,8 @@ public class DBDatabaseDriverSQLiteTest{
         public Data(DBDatabase db)
         {
             super("DATA", db);
-            ID    = addColumn("DATA_ID",  		DataType.AUTOINC,       0, DataMode.AutoGenerated);
-            VALUE = addColumn("VALUE",          DataType.VARCHAR,     256, DataMode.NotNull);
+            ID    = addColumn("DATA_ID",  		DataType.AUTOINC,       0, true);
+            VALUE = addColumn("VALUE",          DataType.VARCHAR,     256, true);
             setPrimaryKey(ID);
         }
     }