package net.sourceforge.mayfly.evaluation; import net.sourceforge.mayfly.MayflyException; import net.sourceforge.mayfly.evaluation.expression.SingleColumn; import net.sourceforge.mayfly.evaluation.select.Evaluator; public class GroupItem { private final Expression expression; public GroupItem(Expression expression) { this.expression = expression; } public SingleColumn column() { if (expression instanceof SingleColumn) { return (SingleColumn) expression; } else { throw new MayflyException( "GROUP BY expression (as opposed to column) is not implemented"); } } public Expression expression() { return expression; } public GroupItem resolve(ResultRow row, Evaluator evaluator) { Expression resolved = expression.resolve(row, evaluator); if (resolved == expression) { return this; } else { return new GroupItem(resolved); } } }