Skip to content

Commit

Permalink
allow to combine two matchers with a logical operator OR
Browse files Browse the repository at this point in the history
  • Loading branch information
fhussonnois committed May 5, 2018
1 parent 800feb3 commit 4c88b43
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 10 deletions.
14 changes: 12 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ QueryBuilder<String, Integer> builder = new QueryBuilder<>();
<pre lang="java">
builder.where(new SimpleMatcher<String, String>() {
@Override
public boolean matches(Event<String, Integer> event) {
public boolean matches(Event<String, String> event) {
return event.value().equals("A");
}
});
Expand Down Expand Up @@ -192,7 +192,17 @@ builder.fold("amount", new Aggregator<String, Integer, Integer>() {
<td class="desc">Combines two simple patterns in a stage with a logical operator AND.</td>
<td>
<pre lang="java">
builder.where( (event) -> event.value > 0).and((event) -> event.value < 10)
builder.where( (event) -> event.value() > 0).and((event) -> event.value() < 10)
</pre>
</td>
</tr>
</tr>
<tr>
<td><pre lang="java">or(Matcher)</pre></td>
<td class="desc">Combines two simple patterns in a stage with a logical operator OR.</td>
<td>
<pre lang="java">
builder.where( (event) -> event.value().equals("A")).or((event) -> event.value().equals("B")))
</pre>
</td>
</tr>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,20 @@ void setWindow(long time, TimeUnit unit) {
this.windowUnit = unit;
}

void addPredicate(final Matcher<K, V> predicate) {
void andPredicate(final Matcher<K, V> predicate) {
if (this.predicate == null)
this.predicate = predicate;
else
this.predicate = Matcher.and(this.predicate, predicate);
}

void orPredicate(final Matcher<K, V> predicate) {
if (this.predicate == null)
this.predicate = predicate;
else
this.predicate = Matcher.or(this.predicate, predicate);
}

void setCardinality(final Cardinality cardinality) {
this.cardinality = cardinality;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

public class PredicateBuilder<K, V> {

private Pattern<K, V> pattern;
private final Pattern<K, V> pattern;

/**
* Creates a new {@link PredicateBuilder} instance.
Expand All @@ -32,17 +32,32 @@ public class PredicateBuilder<K, V> {
}

public PredicateBuilder<K, V> and(final SimpleMatcher<K, V> predicate) {
this.pattern.addPredicate(predicate);
this.pattern.andPredicate(predicate);
return this;
}

public PredicateBuilder<K, V> and(final StatefulMatcher<K, V> predicate) {
this.pattern.addPredicate(predicate);
this.pattern.andPredicate(predicate);
return this;
}

public PredicateBuilder<K, V> and(final SequenceMatcher<K, V> predicate) {
this.pattern.addPredicate(predicate);
this.pattern.andPredicate(predicate);
return this;
}

public PredicateBuilder<K, V> or(final SimpleMatcher<K, V> predicate) {
this.pattern.orPredicate(predicate);
return this;
}

public PredicateBuilder<K, V> or(final StatefulMatcher<K, V> predicate) {
this.pattern.orPredicate(predicate);
return this;
}

public PredicateBuilder<K, V> or(final SequenceMatcher<K, V> predicate) {
this.pattern.orPredicate(predicate);
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,17 +58,17 @@ public SelectBuilder<K, V> strictContiguity() {
}

public PredicateBuilder<K, V> where(final SimpleMatcher<K, V> predicate) {
this.pattern.addPredicate(predicate);
this.pattern.andPredicate(predicate);
return new PredicateBuilder<>(this.pattern);
}

public PredicateBuilder<K, V> where(final StatefulMatcher<K, V> predicate) {
this.pattern.addPredicate(predicate);
this.pattern.andPredicate(predicate);
return new PredicateBuilder<>(this.pattern);
}

public PredicateBuilder<K, V> where(final SequenceMatcher<K, V> predicate) {
this.pattern.addPredicate(predicate);
this.pattern.andPredicate(predicate);
return new PredicateBuilder<>(this.pattern);
}

Expand Down

0 comments on commit 4c88b43

Please sign in to comment.