EMPIREDB-362 more cleanup and beautification
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
index 026be5e..e360fb6 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
@@ -46,6 +46,7 @@
 import org.apache.empire.commons.ObjectUtils;

 import org.apache.empire.commons.Options;

 import org.apache.empire.commons.StringUtils;

+import org.apache.empire.commons.Unwrappable;

 import org.apache.empire.data.Column;

 import org.apache.empire.data.ColumnExpr;

 import org.apache.empire.data.DataType;

@@ -88,7 +89,7 @@
      * wraps a ColumnExpr object into a Column interface object

      * @author doebele

      */

-    protected static class ColumnExprWrapper implements Column

+    protected static class ColumnExprWrapper implements Column, Unwrappable<ColumnExpr>

     {

         private final ColumnExpr expr;

 

@@ -164,10 +165,7 @@
 

         @Override

         public ColumnExpr unwrap()

-        {   // unwrap the expression

-            if (expr.isWrapper())

-                return expr.unwrap();

-            // the wrapped expression

+        {   // the wrapped expression

             return expr;

         }

 

diff --git a/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java b/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
index 8e13af1..f871f81 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/ObjectUtils.java
@@ -282,10 +282,10 @@
      */
     public static boolean compareEqual(ColumnExpr expr, ColumnExpr other)
     {
-        if (other.isWrapper() && !expr.isWrapper())
-            return expr.equals(other.unwrap());
-        else if (!other.isWrapper() && expr.isWrapper())
-            return expr.unwrap().equals(other);
+        if (isWrapper(other) && !isWrapper(expr))
+            return expr.equals(unwrap(other));
+        else  if (!isWrapper(other) && isWrapper(expr))
+            return unwrap(expr).equals(other);
         // both wrapped or both unwrapped
         return expr.equals(other);
     }
diff --git a/empire-db/src/main/java/org/apache/empire/data/ColumnExpr.java b/empire-db/src/main/java/org/apache/empire/data/ColumnExpr.java
index 29ed800..2b8feb2 100644
--- a/empire-db/src/main/java/org/apache/empire/data/ColumnExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/data/ColumnExpr.java
@@ -25,7 +25,7 @@
  * The column interface provides methods for accessing metadata that is relevant for managing
  * and displaying data available through the RecordData interface.
  */
-public interface ColumnExpr extends Unwrappable<ColumnExpr>
+public interface ColumnExpr
 {
     /**
      * Returns the column's data type.
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 9c66574..57a14ed 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
@@ -25,7 +25,6 @@
 import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.commons.Options;
 import org.apache.empire.data.Column;
-import org.apache.empire.data.ColumnExpr;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.exceptions.FieldNotNullException;
 
@@ -214,18 +213,6 @@
         return this;
     }
 
-    @Override
-    public boolean isWrapper()
-    {   // Nope
-        return false; 
-    }
-
-    @Override
-    public ColumnExpr unwrap()
-    {   // Nothing to unwrap
-        return this; 
-    }
-
     // --- Column interface implementation ---
     
     @Override
diff --git a/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java b/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
index 20e4f2b..7e25fb0 100644
--- a/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
+++ b/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
@@ -129,7 +129,7 @@
         ColumnExpr[] cols = head.getColumns(); 
         for (int i=0; i<cols.length; i++)
         {
-            ColumnExpr col = cols[i].unwrap();
+            ColumnExpr col = ObjectUtils.unwrap(cols[i]);
             // must be a column!
             if (!(col instanceof Column))
             {   // not a true column
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 c8e68d4..4a7d814 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
@@ -54,16 +54,6 @@
     // *Deprecated* private static final long serialVersionUID = 1L;
   
     private static final Logger log = LoggerFactory.getLogger(DBColumn.class);
-    
-    /**
-     * Read only column (Boolean)
-     */
-    // private static final String DBCOLATTR_READONLY  = "readonly";
-    
-    /**
-     * Read only column (Boolean)
-     */
-    public static final String DBCOLATTR_SINGLEBYTECHARS  = "singleByteChars";
 
     // basic data
     protected final DBRowSet  rowset; /* transient */
@@ -311,11 +301,11 @@
     }
 
     /**
-     * Returns the name of the column as a value expression
-     * This may be used to reference a parent column in a subquery 
+     * Returns a reference expression for this column
+     * This can be used to reference a parent column in a subquery 
      * @return the column value expression
      */
-    public DBValueExpr value()
+    public DBValueExpr reference()
     {
         return new DBValueExpr(getDatabase(), this, DataType.UNKNOWN);    
     }
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
index 112817f..d3e440d 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
@@ -119,24 +119,6 @@
     public abstract Element addXml(Element parent, long flags);
 
     /**
-     * @link {#org.apache.empire.commons.Unwrappable#isWrapper()}
-     */
-    @Override
-    public boolean isWrapper()
-    {   // Nope
-        return false;
-    }
-
-    /**
-     * @link {#org.apache.empire.commons.Unwrappable#unwrap()}
-     */
-    @Override
-    public DBColumnExpr unwrap()
-    {   // Noting to unwrap
-        return this;
-    }
-
-    /**
      * returns an expression that renames the column with its alias name
      */
     public DBColumnExpr qualified()
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
index 5547767..b36b1e4 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
@@ -663,7 +663,7 @@
                     return i; // found

             }

         // try unwrap

-        ColumnExpr unwrapped = columnExpr.unwrap();

+        ColumnExpr unwrapped = ObjectUtils.unwrap(columnExpr);

         if (unwrapped!=columnExpr)

             return getColumnIndex(unwrapped);

         // not found

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 a4f608e..9ee2f0e 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
@@ -47,6 +47,9 @@
     // *Deprecated* private static final long serialVersionUID = 1L;
     private static final Logger log = LoggerFactory.getLogger(DBTableColumn.class);
     
+    // Additional Attributes
+    public static final String DBCOLATTR_SINGLEBYTECHARS  = "singleByteChars";
+    
     // Column Information
     protected DataType  type;
     protected double    size;
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
index dea582f..e25b18d 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAliasExpr.java
@@ -22,6 +22,7 @@
 
 // Java
 import org.apache.empire.commons.StringUtils;
+import org.apache.empire.commons.Unwrappable;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
@@ -36,7 +37,7 @@
  * There is no need to explicitly create instances of this class.<BR>
  * Instead use {@link DBColumnExpr#as(String) }
  */
-public class DBAliasExpr extends DBColumnExpr
+public class DBAliasExpr extends DBColumnExpr implements Unwrappable<DBColumnExpr>
 {
     // *Deprecated* private static final long serialVersionUID = 1L;
   
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCoalesceExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCoalesceExpr.java
index 2c0d136..cbc226c 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCoalesceExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCoalesceExpr.java
@@ -6,12 +6,13 @@
 import java.util.Set;
 
 import org.apache.empire.commons.StringUtils;
+import org.apache.empire.commons.Unwrappable;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBExpr;
 import org.apache.empire.dbms.DBSqlPhrase;
 
-public class DBCoalesceExpr extends DBAbstractFuncExpr
+public class DBCoalesceExpr extends DBAbstractFuncExpr implements Unwrappable<DBColumnExpr>
 {
     private final Object nullValue;
     
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBParenthesisExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBParenthesisExpr.java
index 699eb0f..df6cce3 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBParenthesisExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBParenthesisExpr.java
@@ -20,6 +20,7 @@
 
 import java.util.Set;
 
+import org.apache.empire.commons.Unwrappable;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;
@@ -32,7 +33,7 @@
  * There is no need to explicitly create instances of this class.<BR>
  * Instead use {@link DBColumnExpr#as(String) }
  */
-public class DBParenthesisExpr extends DBColumnExpr
+public class DBParenthesisExpr extends DBColumnExpr implements Unwrappable<DBColumnExpr>
 {
     // *Deprecated* private static final long serialVersionUID = 1L;
   
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
index 6d38d99..77f12a3 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
@@ -20,6 +20,7 @@
 
 import java.util.Set;
 
+import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBCmdParam;
 import org.apache.empire.db.DBCmpType;
@@ -300,17 +301,11 @@
     {
         // check type 
     	if (other instanceof DBCompareColExpr)
-    	{   // unwrap
-            DBColumnExpr texpr = expr;
-            if (texpr.isWrapper())
-                texpr = texpr.unwrap();
-            // other
+    	{   // other
             DBCompareColExpr o = (DBCompareColExpr)other;
             DBColumnExpr oexpr = o.getColumnExpr();
-            if (oexpr.isWrapper())
-                oexpr = oexpr.unwrap();
     		// Compare
-    		if (texpr.equals(oexpr))
+    		if (ObjectUtils.compareEqual(expr, oexpr))
     			return true;
     		/*
             // probably not a good idea to do this: