Newer
Older
ResourceDependencyLogic / src / models / SetEvaluatableTerm.java
package models;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class SetEvaluatableTerm extends EvaluatableTerm{

	private EvaluatableTerm term;
	
	public SetEvaluatableTerm(EvaluatableTerm term) {
		super(term.getOrder() - 1);
		this.term = term;
		this.addChild(term);
	}
	
	public SetEvaluatableTerm(EvaluatableTerm term, int order) {
		super(order);
		if(term.getOrder() > order + 1) {
			var childTerm = new SetEvaluatableTerm(term, order+1); 
			this.term = childTerm;
			this.addChild(childTerm);
		} else {
			this.term = term;
			this.addChild(term);
		}
	}
	
	@Override
	public EvaluatableTerm linearRightNormalize() {
		return (SetEvaluatableTerm) clone();
	}

	@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();
	}
	
	@Override
	public String toStrWithOrder() {
		StringBuilder sb = new StringBuilder();
		sb.append('{');
		sb.append(term.toStrWithOrder());
		sb.append('}');
		return sb.toString() + "(" + order + ")";
	}

	@Override
	public Object clone() {
		return new SetEvaluatableTerm((EvaluatableTerm) term.clone(), order);
	}

}