final Column columnToResolve,
final CriteriaInterface<?> criteria)
throws TorqueException
{
String columnNameToResolve = columnToResolve.getColumnName();
Column resolvedColumn = criteria.getAsColumns().get(columnNameToResolve);
boolean sqlExpressionModified = false;
if (resolvedColumn == null)
{
resolvedColumn = columnToResolve;
}
else
{
sqlExpressionModified = true;
}
String tableNameToResolve = resolvedColumn.getTableName();
Object resolvedAlias = criteria.getAliases().get(tableNameToResolve);
String resolvedTableName;
if (resolvedAlias == null || !(resolvedAlias instanceof String))
{
resolvedTableName = tableNameToResolve;
}
else
{
resolvedTableName = (String) resolvedAlias;
sqlExpressionModified = true;
}
String resolvedSchemaName = resolvedColumn.getSchemaName();
if (resolvedSchemaName == null)
{
final String dbName = criteria.getDbName();
final Database database = Torque.getDatabase(dbName);
resolvedSchemaName = database.getSchema();
}
if (sqlExpressionModified)
{
return new ColumnImpl(
resolvedSchemaName,
resolvedTableName,
resolvedColumn.getColumnName());
}
else
{
return new ColumnImpl(
resolvedSchemaName,
resolvedTableName,
resolvedColumn.getColumnName(),
resolvedColumn.getSqlExpression());
}
}