package edu.stanford.nlp.util.logging;
import java.util.List;
import edu.stanford.nlp.util.logging.Redwood.Record;
/**
* Basic support for filtering records via LogFilter objects. Can be used in both conjunctive and disjunctive mode.
*
* @author David McClosky
*/
public class FilterHandler extends BooleanLogRecordHandler {
private List<LogFilter> filters;
private boolean disjunctiveMode;
public FilterHandler(List<LogFilter> filters, boolean disjunctiveMode) {
this.filters = filters;
this.disjunctiveMode = disjunctiveMode;
}
@Override
public boolean propagateRecord(Record record) {
for (LogFilter filter : filters) {
boolean match = filter.matches(record);
if (match && disjunctiveMode) {
return true;
}
if (!match && !disjunctiveMode) {
return false;
}
}
return !disjunctiveMode;
}
}