package hu.sztaki.ilab.longneck.process.constraint;
import hu.sztaki.ilab.longneck.Record;
import hu.sztaki.ilab.longneck.process.VariableSpace;
import java.util.ArrayList;
import java.util.List;
/**
* And operator for multiple constraints.
*
* @author Molnar Peter <molnarp@sztaki.mta.hu>
*/
public class AndOperator extends AbstractCompoundConstraint {
public AndOperator() {
}
public AndOperator(List<Constraint> constraints) {
this.constraints = constraints;
}
@Override
public CheckResult check(Record record, VariableSpace scope) {
if (constraints == null) {
return new CheckResult(this, true, null, null, null);
}
// Prepare result variable
List<CheckResult> results = new ArrayList<CheckResult>(constraints.size());
for (Constraint c : constraints) {
CheckResult res = c.check(record, scope);
results.add(res);
if (! res.isPassed()) {
return new CheckResult(this, false, null, null, null, results);
}
}
return new CheckResult(this, true, null, null, null, results);
}
@Override
public AndOperator clone() {
return (AndOperator) super.clone();
}
}