package kernel;
import java.util.Collection;
import java.util.List;
import java.util.ArrayList;
import rescuecore2.config.Config;
import rescuecore2.messages.Command;
/**
A CommandFilter that chains together a set of filters.
*/
public class ChainedCommandFilter implements CommandFilter {
private List<CommandFilter> filters;
/**
Construct an empty ChainedCommandFilter.
*/
public ChainedCommandFilter() {
filters = new ArrayList<CommandFilter>();
}
/**
Add a CommandFilter to the chain.
@param filter The filter to add.
*/
public void addFilter(CommandFilter filter) {
filters.add(filter);
}
/**
Remove a CommandFilter from the chain.
@param filter The filter to remove.
*/
public void removeFilter(CommandFilter filter) {
filters.remove(filter);
}
@Override
public void initialise(Config config) {
for (CommandFilter next : filters) {
next.initialise(config);
}
}
@Override
public void filter(Collection<Command> commands, KernelState state) {
for (CommandFilter next : filters) {
next.filter(commands, state);
}
}
}