package models.formulas;

import lombok.Getter;
import models.terms.EvaluatableTerm;

@Getter
public class EquationFormula extends Formula {

	private EvaluatableTerm leftSideHand;
	private EvaluatableTerm rightSideHand;
		
	public EquationFormula(EvaluatableTerm leftTerm, EvaluatableTerm rightTerm) {
		this.leftSideHand = leftTerm;
		this.rightSideHand = rightTerm;
	}

	public EquationFormula linearRightNormalized() {
		return new EquationFormula(leftSideHand.linearRightNormalize(), rightSideHand.linearRightNormalize());
	}
	
	
	@Override
	public String toString() {
		return leftSideHand.toString() + " = " + rightSideHand.toString();
	}

	@Override
	public boolean equals(Object another) {
		if (! (another instanceof EquationFormula)) {
			return false;
		}
		EquationFormula anotherFormula = (EquationFormula) another;
		return leftSideHand.equals(anotherFormula.getLeftSideHand()) && rightSideHand.equals(anotherFormula.getRightSideHand());
	}

	@Override
	public int hashCode() {
		return toString().hashCode();
	}
	
}
