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 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;
	}
	
}
