Newer
Older
ResourceDependencyLogic / src / models / formulas / meta / MetaDependencyFormula.java
@Sakoda2269 Sakoda2269 on 30 Oct 1 KB コンストラクタ追加
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.MetaResourceVariable;
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;
	}
	
	public MetaDependencyFormula(MetaRDLTerm dependingTerm, MetaResourceVariable dependedVariable) {
		this.dependency = new MetaRDLTerm(dependingTerm, dependedVariable);
	}
	
	@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);
	}

	
	public String toString() {
		return dependency.toString();
	}
	
	public boolean equals(Object another) {
		if (! (another instanceof MetaDependencyFormula)) {
			return false;
		}
		MetaDependencyFormula anohterFormula = (MetaDependencyFormula) another;
		return dependency.equals(anohterFormula.getDependency());
	}
	
	public int hashCode() {
		return ("MDF" + toString()).hashCode();
	}
	
}