package hu.sztaki.ilab.longneck.process.constraint;
import hu.sztaki.ilab.longneck.Record;
import hu.sztaki.ilab.longneck.process.AbstractSourceInfoContainer;
import hu.sztaki.ilab.longneck.process.VariableSpace;
import java.util.ArrayList;
import java.util.List;
/**
* Negates the result of the contained constraint check.
*
* @author Molnar Peter <molnarp@sztaki.mta.hu>
*/
public class NotOperator extends AbstractSourceInfoContainer implements Constraint {
private Constraint constraint;
@Override
public CheckResult check(Record record, VariableSpace scope) {
if (constraint == null) {
return new CheckResult(this, false, null, null, null);
}
// Prepare result variable
List<CheckResult> results = new ArrayList<CheckResult>(1);
CheckResult res = constraint.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);
}
public Constraint getConstraint() {
return constraint;
}
public void setConstraint(Constraint constraint) {
this.constraint = constraint;
}
@Override
public NotOperator clone() {
NotOperator copy = (NotOperator) super.clone();
copy.constraint = constraint.clone();
return copy;
}
}