in empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java [974:1029]
protected Column findColumn()
{
// if parent is a record tag, get the record from there
Object col = getTagAttributeValue("column");
if (col instanceof 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);
int dbix = name.indexOf('.');
if (dbix<=0)
{
log.error("Invalid column expression '{}'!", name);
return null; // not found
}
DBDatabase db = DBDatabase.findByIdentifier(name.substring(0,dbix));
if (db==null)
{
log.error("Database '{}' not found!", name.substring(0,dbix));
return null; // not found
}
int co = name.lastIndexOf('.');
int to = name.lastIndexOf('.', co - 1);
String cn = name.substring(co + 1);
String tn = name.substring(to + 1, co);
DBRowSet rs = db.getRowSet(tn);
if (rs == null)
{
log.error("Table/View '{}' not found in database!", tn);
return null; // not found
}
Column column = rs.getColumn(cn);
if (column == null)
{
log.error("Column '{}' not found in table/view '{}'!", cn, tn);
return null; // not found
}
// done
return column;
}
// No column!
if (log.isDebugEnabled() && !(component instanceof LinkTag))
log.warn("No Column provided for value tag!");
return null;
}