package tc.oc.pgm.filters.matcher.match;
import java.util.Arrays;
import java.util.Collection;
import java.util.EnumSet;
import tc.oc.commons.core.util.EnumSets;
import tc.oc.pgm.filters.Filter;
import tc.oc.pgm.filters.matcher.TypedFilter;
import tc.oc.pgm.filters.query.IMatchQuery;
import tc.oc.pgm.match.MatchState;
public class MatchStateFilter extends TypedFilter.Impl<IMatchQuery> {
private final @Inspect EnumSet<MatchState> states;
public MatchStateFilter(MatchState... states) {
this(Arrays.asList(states));
}
public MatchStateFilter(Collection<MatchState> states) {
this.states = EnumSets.copySet(MatchState.class, states);
}
@Override
public boolean isDynamic() {
return true;
}
@Override
public boolean matches(IMatchQuery query) {
return states.contains(query.matchState());
}
private static final MatchStateFilter STARTED = new MatchStateFilter(MatchState.Running, MatchState.Finished);
private static final MatchStateFilter RUNNING = new MatchStateFilter(MatchState.Running);
private static final MatchStateFilter FINISHED = new MatchStateFilter(MatchState.Finished);
public static Filter started() { return STARTED; }
public static Filter running() { return RUNNING; }
public static Filter finished() { return FINISHED; }
}