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()
{