@Override public FilePredicate or(Collection<FilePredicate> or) { return OrPredicate.create(or); }
public static FilePredicate create(Collection<FilePredicate> predicates) { if (predicates.isEmpty()) { return TruePredicate.TRUE; } OrPredicate result = new OrPredicate(); for (FilePredicate filePredicate : predicates) { if (filePredicate == TruePredicate.TRUE) { return TruePredicate.TRUE; } else if (filePredicate == FalsePredicate.FALSE) { continue; } else if (filePredicate instanceof OrPredicate) { result.predicates.addAll(((OrPredicate) filePredicate).predicates); } else { result.predicates.add(filePredicate); } } return result; }
@Test public void flattenNestedOr() { PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); PathPatternPredicate pathPatternPredicate3 = new PathPatternPredicate(PathPattern.create("foo3/**")); FilePredicate orPredicate = OrPredicate.create(Arrays.asList(pathPatternPredicate1, OrPredicate.create(Arrays.asList(pathPatternPredicate2, pathPatternPredicate3)))); assertThat(((OrPredicate) orPredicate).predicates()).containsExactly(pathPatternPredicate1, pathPatternPredicate2, pathPatternPredicate3); }
@Test public void simplifyOrExpressionsWhenFalse() { PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); FilePredicate andPredicate = OrPredicate.create(Arrays.asList(pathPatternPredicate1, FalsePredicate.FALSE, pathPatternPredicate2)); assertThat(((OrPredicate) andPredicate).predicates()).containsExactly(pathPatternPredicate1, pathPatternPredicate2); }
@Override public FilePredicate or(FilePredicate first, FilePredicate second) { return OrPredicate.create(Arrays.asList(first, second)); }
public static FilePredicate create(Collection<FilePredicate> predicates) { if (predicates.isEmpty()) { return TruePredicate.TRUE; } OrPredicate result = new OrPredicate(); for (FilePredicate filePredicate : predicates) { if (filePredicate == TruePredicate.TRUE) { return TruePredicate.TRUE; } else if (filePredicate == FalsePredicate.FALSE) { continue; } else if (filePredicate instanceof OrPredicate) { result.predicates.addAll(((OrPredicate) filePredicate).predicates); } else { result.predicates.add(filePredicate); } } return result; }
@Override public FilePredicate or(FilePredicate... or) { return OrPredicate.create(Arrays.asList(or)); }
public static FilePredicate create(Collection<FilePredicate> predicates) { if (predicates.isEmpty()) { return TruePredicate.TRUE; } OrPredicate result = new OrPredicate(); for (FilePredicate filePredicate : predicates) { if (filePredicate == TruePredicate.TRUE) { return TruePredicate.TRUE; } else if (filePredicate == FalsePredicate.FALSE) { continue; } else if (filePredicate instanceof OrPredicate) { result.predicates.addAll(((OrPredicate) filePredicate).predicates); } else { result.predicates.add(filePredicate); } } return result; }
@Test public void simplifyOrExpressionsWhenEmpty() { FilePredicate orPredicate = OrPredicate.create(Arrays.asList()); assertThat(orPredicate).isEqualTo(TruePredicate.TRUE); }
@Test public void simplifyAndExpressionsWhenTrue() { PathPatternPredicate pathPatternPredicate1 = new PathPatternPredicate(PathPattern.create("foo1/**")); PathPatternPredicate pathPatternPredicate2 = new PathPatternPredicate(PathPattern.create("foo2/**")); FilePredicate andPredicate = OrPredicate.create(Arrays.asList(pathPatternPredicate1, TruePredicate.TRUE, pathPatternPredicate2)); assertThat(andPredicate).isEqualTo(TruePredicate.TRUE); }
@Override public FilePredicate or(Collection<FilePredicate> or) { return OrPredicate.create(or); }
@Override public FilePredicate or(Collection<FilePredicate> or) { return OrPredicate.create(or); }
@Override public FilePredicate or(FilePredicate first, FilePredicate second) { return OrPredicate.create(Arrays.asList(first, second)); }
@Override public FilePredicate or(FilePredicate... or) { return OrPredicate.create(Arrays.asList(or)); }
@Override public FilePredicate or(FilePredicate first, FilePredicate second) { return OrPredicate.create(Arrays.asList(first, second)); }
@Override public FilePredicate or(FilePredicate... or) { return OrPredicate.create(Arrays.asList(or)); }