package org.infinispan.query.dsl.impl; import org.infinispan.query.dsl.QueryBuilder; import org.infinispan.query.dsl.QueryFactory; import org.infinispan.query.dsl.impl.logging.Log; import org.jboss.logging.Logger; /** * Unary or binary boolean condition (NOT, AND, OR). * * @author anistor@redhat.com * @since 6.0 */ abstract class BooleanCondition extends BaseCondition { private static final Log log = Logger.getMessageLogger(Log.class, BooleanCondition.class.getName()); private BaseCondition leftCondition; private BaseCondition rightCondition; protected BooleanCondition(QueryFactory queryFactory, BaseCondition leftCondition, BaseCondition rightCondition) { super(queryFactory); this.leftCondition = leftCondition; this.rightCondition = rightCondition; } public BaseCondition getFirstCondition() { return leftCondition; } public BaseCondition getSecondCondition() { return rightCondition; } public void replaceChildCondition(BaseCondition oldChild, BaseCondition newChild) { if (leftCondition == oldChild) { leftCondition = newChild; } else if (rightCondition == oldChild) { rightCondition = newChild; } else { throw log.conditionNotFoundInParent(); } newChild.setParent(this); } @Override void setQueryBuilder(QueryBuilder queryBuilder) { super.setQueryBuilder(queryBuilder); if (leftCondition != null) { leftCondition.setQueryBuilder(queryBuilder); } if (rightCondition != null) { rightCondition.setQueryBuilder(queryBuilder); } } }