package kernel;
import rescuecore2.config.Config;
import java.util.Collection;
import java.util.Iterator;
/**
A TerminationCondition that returns true if any of its children return true.
*/
public class OrTerminationCondition implements TerminationCondition {
private Collection<TerminationCondition> children;
/**
Construct a new OrTerminationCondition.
@param children The child conditions. This must have at least one element.
*/
public OrTerminationCondition(Collection<TerminationCondition> children) {
if (children == null || children.size() == 0) {
throw new IllegalArgumentException("Must have at least one child");
}
this.children = children;
}
@Override
public boolean shouldStop(KernelState state) {
for (TerminationCondition next : children) {
if (next.shouldStop(state)) {
return true;
}
}
return false;
}
@Override
public void initialise(Config config) {
for (TerminationCondition next : children) {
next.initialise(config);
}
}
@Override
public String toString() {
StringBuilder result = new StringBuilder();
for (Iterator<TerminationCondition> it = children.iterator(); it.hasNext();) {
result.append(it.next());
if (it.hasNext()) {
result.append(" | ");
}
}
return result.toString();
}
}