blob: 95c5bd59575506323c3f14da19b606a25f9ace18 [file] [log] [blame]
package org.apache.directory.scim.spec.filter;
import lombok.extern.slf4j.Slf4j;
@Slf4j
abstract class SimpleLogicalFilterBuilder implements FilterBuilder {
protected FilterExpression filterExpression;
static FilterExpression groupIfNeeded(FilterExpression filterExpression) {
return (filterExpression instanceof LogicalExpression)
? new GroupExpression(false, filterExpression)
: filterExpression;
}
protected void handleComparisonExpression(FilterExpression expression) {
if (expression == null) {
log.error("*** in handle comparison ---> expression == null");
}
if (filterExpression == null) {
filterExpression = expression;
} else {
if (!(filterExpression instanceof LogicalExpression)) {
throw new IllegalStateException("Invalid filter state");
}
LogicalExpression le = (LogicalExpression) filterExpression;
le.setRight(groupIfNeeded(expression));
}
}
@Override
public String toString() {
return filterExpression.toFilter();
}
@Override
public FilterExpression filter() {
return filterExpression;
}
@Override
public Filter build() {
return new Filter(filterExpression);
}
}