package org.jactr.core.module.declarative.search.filter;
/*
* default logging
*/
import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jactr.core.chunk.IChunk;
/**
* fail-fast filter that only accepts if all delegates do.
*
* @author harrison
*/
public class DelegatedFilter implements IChunkFilter
{
/**
* Logger definition
*/
static private final transient Log LOGGER = LogFactory
.getLog(DelegatedFilter.class);
private final Collection<IChunkFilter> _filters;
public DelegatedFilter(Collection<IChunkFilter> filters)
{
_filters = new ArrayList<IChunkFilter>(filters);
}
public DelegatedFilter()
{
_filters = new ArrayList<IChunkFilter>(2);
}
public void add(IChunkFilter filter)
{
_filters.add(filter);
}
@Override
public boolean accept(IChunk chunk)
{
for (IChunkFilter filter : _filters)
if (!filter.accept(chunk)) return false;
return true;
}
}