package jeql.syntax;
import jeql.api.row.RowSchema;
import jeql.engine.Scope;
import jeql.syntax.util.IdentifierUtil;
/**
*
* @author Martin Davis
* @version 1.0
*/
public class SelectItemNode
extends ParseTreeNode
{
private ParseTreeNode expr;
private String alias = null;
public SelectItemNode(ParseTreeNode expr) {
this.expr = expr;
setLoc(expr);
}
public SelectItemNode(ParseTreeNode expr, String alias) {
this(expr);
this.alias = IdentifierUtil.keyIdentifier(alias);
}
public String getName(int colNum)
{
if (alias != null)
return alias;
if (expr instanceof TableColumnNode)
return ((TableColumnNode) expr).getColName();
// no other name assigned, so return default nam
return RowSchema.getDefaultColumnName(colNum);
}
public ParseTreeNode getItem() {
return expr;
}
public Class getType(Scope scope) {
return expr.getType(scope);
}
public void bind(Scope scope) {
expr.bind(scope);
}
public Object eval(Scope scope)
{
return expr.eval(scope);
}
public String toString()
{
String aliasStr = alias == null ? "" : alias;
return aliasStr;
}
}