package models;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class SetEvaluableTerm extends EvaluableTerm{

	private EvaluableTerm term;
	
	public SetEvaluableTerm(EvaluableTerm term) {
		super(term.getOrder() - 1);
		this.term = term;
	}
	
	public SetEvaluableTerm(EvaluableTerm term, int order) {
		super(order);
		if(term.getOrder() > order + 1) {
			this.term = new SetEvaluableTerm(term, order+1);
		} else {
			this.term = term;
		}
	}
	
	@Override
	public EvaluableTerm linearRightNormalize() {
		return new SetEvaluableTerm(term, order);
	}

	@Override
	public void selfLinearRightNormalize() {
	}
	
	@Override
	public boolean isLinearRightNormal() {
		return term.isLinearRightNormal();
	}

	@Override
	public String toStr() {
		StringBuilder sb = new StringBuilder();
		sb.append('{');
		sb.append(term.toStr());
		sb.append('}');
		return sb.toString();
	}

}
