package net.sourceforge.mayfly.evaluation.condition;
import net.sourceforge.mayfly.datastore.Cell;
import net.sourceforge.mayfly.datastore.NullCell;
import net.sourceforge.mayfly.evaluation.Expression;
import net.sourceforge.mayfly.evaluation.ResultRow;
import net.sourceforge.mayfly.evaluation.select.Evaluator;
public class IsNull extends Condition {
public final Expression expression;
public IsNull(Expression expression) {
this.expression = expression;
}
@Override
public boolean evaluate(ResultRow row, Evaluator evaluator) {
Cell cell = expression.evaluate(row, evaluator);
return cell instanceof NullCell;
}
@Override
public Condition resolve(ResultRow row, Evaluator evaluator) {
Expression resolved = expression.resolve(row, evaluator);
if (resolved != expression) {
return new IsNull(resolved);
}
else {
return this;
}
}
@Override
public String firstAggregate() {
return expression.firstAggregate();
}
@Override
public void check(ResultRow row) {
expression.check(row);
}
}