package org.nlamah.QL.Model.Form.Abstract; import java.util.List; import org.nlamah.QL.Model.Expression.Abstract.Expression; import org.nlamah.QL.Model.Expression.Abstract.ValueExpression; import org.nlamah.QL.Model.Expression.Evaluation.ExpressionEvaluator; import org.nlamah.QL.Model.Expression.Literal.BooleanLiteral; public abstract class ConditionalBlockChildWithExpression extends DeclaringFormElement { private Expression expression; public ConditionalBlockChildWithExpression(Expression expression, List<FormElement> childElements) { super(childElements); this.expression = expression; } public Expression expression() { return expression; } public boolean isSatisfied() { ValueExpression booleanLiteral = (ValueExpression) expression.accept(new ExpressionEvaluator()); return ((BooleanLiteral) booleanLiteral).primitiveValue(); } @Override public boolean equals(Object object) { if (!super.equals(object)) { return false; } if (!(object instanceof ConditionalBlockChildWithExpression)) { return false; } ConditionalBlockChildWithExpression value = (ConditionalBlockChildWithExpression)object; if (!(this.expression.equals(value.expression))) { return false; } return true; } }