Skip to content

Commit

Permalink
Criteria. Make DnfExpression implement Expressional to better identif…
Browse files Browse the repository at this point in the history
…y nils
  • Loading branch information
asereda-gs committed May 23, 2019
1 parent 1a25f5c commit 96ea391
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
Expand Up @@ -7,7 +7,7 @@
* Link between front-end (Criteria DSL) and <a href="https://cs.lmu.edu/~ray/notes/ir/">Intermediate Representation</a>
* (internally known as {@link Expression}).
*/
public final class CriteriaContext<R> {
public final class CriteriaContext<R> implements Expressional<R> {

private final CriteriaCreator<R> creator;
private final DnfExpression expression;
Expand Down Expand Up @@ -50,8 +50,9 @@ public CriteriaContext<R> or() {
return new CriteriaContext<>(Operators.OR, expression, path, creator);
}

@Override
public Expression expression() {
return this.expression.simplify();
return this.expression.expression();
}

@SuppressWarnings("unchecked")
Expand Down
Expand Up @@ -14,7 +14,7 @@
*
* <p>Example: {@code (A and B or C and D or E)}
*/
class DnfExpression implements Expression {
class DnfExpression implements Expressional<DnfExpression>, Expression {

private final List<Expression> conjunctions;
private final List<Expression> disjunctions;
Expand All @@ -31,10 +31,15 @@ static DnfExpression create() {
@Nullable
@Override
public <R, C> R accept(ExpressionBiVisitor<R, C> visitor, @Nullable C context) {
return simplify().accept(visitor, context);
return expression().accept(visitor, context);
}

Expression simplify() {
@Override
public Expression expression() {
return simplify();
}

private Expression simplify() {
final List<Expression> expressions = new ArrayList<>(disjunctions);
if (!conjunctions.isEmpty()) {
expressions.add(Expressions.and(conjunctions));
Expand All @@ -43,7 +48,6 @@ Expression simplify() {
return Expressions.or(expressions);
}


DnfExpression and(Expression expression) {
Objects.requireNonNull(expression, "expression");
ImmutableList<Expression> newConjunctions = ImmutableList.<Expression>builder().addAll(conjunctions).add(expression).build();
Expand Down

0 comments on commit 96ea391

Please sign in to comment.