public static Filter excludeAll() {
return new ConstantFilter(false);
}
private static Filter any(final List<Filter> filters) {
return new Filter() {
@Override
public boolean includeAdd(PropertyState after) {
for (Filter filter : filters) {
if (filter.includeAdd(after)) {
return true;
}
}
return false;
}
@Override
public boolean includeChange(PropertyState before, PropertyState after) {
for (Filter filter : filters) {
if (filter.includeChange(before, after)) {
return true;
}
}
return false;
}
@Override
public boolean includeDelete(PropertyState before) {
for (Filter filter : filters) {
if (filter.includeDelete(before)) {
return true;
}
}
return false;
}
@Override
public boolean includeAdd(String name, NodeState after) {
for (Filter filter : filters) {
if (filter.includeAdd(name, after)) {
return true;
}
}
return false;
}
@Override
public boolean includeChange(String name, NodeState before, NodeState after) {
for (Filter filter : filters) {
if (filter.includeChange(name, before, after)) {
return true;
}
}
return false;
}
@Override
public boolean includeDelete(String name, NodeState before) {
for (Filter filter : filters) {
if (filter.includeDelete(name, before)) {
return true;
}
}
return false;
}
@Override
public boolean includeMove(String sourcePath, String destPath, NodeState moved) {
for (Filter filter : filters) {
if (filter.includeMove(sourcePath, destPath, moved)) {
return true;
}
}
return false;
}
@Override
public Filter create(String name, NodeState before, NodeState after) {
List<Filter> childFilters = Lists.newArrayList();
for (Filter filter : filters) {
Filter childFilter = filter.create(name, before, after);
if (childFilter != null) {
childFilters.add(childFilter);
}
}
return any(childFilters);