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 <[email protected]>
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);
         }
     }

Reply via email to