package models.terms.meta;
import java.util.HashMap;
import java.util.Map;
import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import models.algebra.Variable;
import models.terms.RDLTerm;
@RequiredArgsConstructor
@EqualsAndHashCode
@ToString
public class MatchConstraint {
private final Map<Variable, RDLTerm> binding;
private final Map<Variable, OrderVariableConstraint> orderConstraint;
public MatchConstraint(MatchConstraint constraint) {
this.binding = constraint.getBinding();
this.orderConstraint = constraint.getOrderConstraint();
}
public Map<Variable, RDLTerm> getBinding() {
return new HashMap<>(binding);
}
public Map<Variable, OrderVariableConstraint> getOrderConstraint() {
Map<Variable, OrderVariableConstraint> res = new HashMap<>();
for (var key : orderConstraint.keySet()) {
res.put(key, (OrderVariableConstraint) orderConstraint.get(key).clone());
}
return res;
}
}