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 aee2fc4  EMPIREDB-311 Wrap column expressions for rendering in ValueTag
aee2fc4 is described below

commit aee2fc4a33797863624f2a8746e3ff0be6070e4b
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Oct 7 21:17:04 2019 +0200

    EMPIREDB-311
    Wrap column expressions for rendering in ValueTag
---
 .../empire/jsf2/utils/TagEncodingHelper.java       | 28 ++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

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 e151873..3e216f8 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
@@ -52,6 +52,7 @@ import org.apache.empire.data.DataType;
 import org.apache.empire.data.Record;
 import org.apache.empire.data.RecordData;
 import org.apache.empire.db.DBColumn;
+import org.apache.empire.db.DBColumnExpr;
 import org.apache.empire.db.DBDatabase;
 import org.apache.empire.db.DBRecord;
 import org.apache.empire.db.DBRowSet;
@@ -59,6 +60,7 @@ import org.apache.empire.db.exceptions.FieldNotNullException;
 import org.apache.empire.exceptions.BeanPropertyGetException;
 import org.apache.empire.exceptions.BeanPropertySetException;
 import org.apache.empire.exceptions.InvalidArgumentException;
+import org.apache.empire.exceptions.InvalidPropertyException;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.apache.empire.exceptions.PropertyReadOnlyException;
 import org.apache.empire.jsf2.app.FacesUtils;
@@ -92,6 +94,11 @@ public class TagEncodingHelper implements NamingContainer
         {
             this.expr = expr;
         }
+        
+        public ColumnExpr getExpr()
+        {
+            return this.expr;
+        }
 
         @Override
         public DataType getDataType()
@@ -665,7 +672,8 @@ public class TagEncodingHelper implements NamingContainer
         {   // value
             if (record instanceof RecordData)
             { // a record
-                mostRecentValue = ((RecordData) record).getValue(getColumn());
+                ColumnExpr col = unwrapColumnExpr(getColumn());
+                mostRecentValue = ((RecordData) record).getValue(col);
                 return mostRecentValue;
             }   
             else
@@ -855,9 +863,18 @@ public class TagEncodingHelper implements NamingContainer
         // if parent is a record tag, get the record from there
         Object col = getTagAttributeValue("column");
         if (col instanceof Column)
-        { // cast to column
+        {   // cast to column
             return (Column) col;
         }
+        if (col instanceof ColumnExpr)
+        {   // check component
+            if ((component instanceof InputTag || component instanceof 
ControlTag))
+            {   log.warn("ColumnExpresion cannot be used with InputTag or 
ControlTag");
+                throw new InvalidPropertyException("column", column);
+            }
+            // wrap expression
+            return createColumnExprWrapper((ColumnExpr) col);
+        }
         if (col instanceof String)
         {   // parse String
             String name = String.valueOf(col);
@@ -921,6 +938,13 @@ public class TagEncodingHelper implements NamingContainer
     {
          return new ColumnExprWrapper(colExpr);
     }
+    
+    protected ColumnExpr unwrapColumnExpr(Column col)
+    {
+        if (col instanceof ColumnExprWrapper)
+            return ((ColumnExprWrapper) col).getExpr();
+        return col;
+    }
 
     protected Object findRecord()
     {

Reply via email to