package models.formulas.meta;
import java.util.Map;
import exceptions.IllegalTypeException;
import lombok.Getter;
import models.algebra.Variable;
import models.formulas.DependencyFormula;
import models.formulas.Formula;
import models.terms.RDLTerm;
import models.terms.meta.MetaRDLTerm;
import models.terms.meta.OrderVariableConstraint;
@Getter
public class MetaDependencyFormula extends MetaFormula {
private MetaRDLTerm dependency;
public MetaDependencyFormula(MetaRDLTerm term) {
if (! term.isDependency()) {
throw new IllegalTypeException();
}
this.dependency = term;
}
@Override
public boolean isMatchedBy(Formula formula, Map<Variable, RDLTerm> binding,
Map<Variable, OrderVariableConstraint> orderConstraint) {
if (! (formula instanceof DependencyFormula)) {
return false;
}
DependencyFormula dep = (DependencyFormula) formula;
return dependency.isMatchedBy(dep.getDependency(), binding, orderConstraint);
}
}