package models;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Dependency extends RDLTerm{
private RDLTerm term;
private RDLVariable variable;
private Dependency dependency;
public Dependency(RDLTerm term, RDLVariable variable) {
super(variable.getOrder());
this.term = term;
this.variable = variable;
this.dependency = null;
}
public Dependency(Dependency dependency) {
super(dependency.getOrder() - 1);
this.dependency = dependency;
this.term = null;
this.variable = null;
}
public Dependency(RDLTerm term, RDLVariable variable, int order) {
super(order);
if(order == variable.order) {
this.term = term;
this.variable = variable;
this.dependency = null;
} else {
this.dependency = new Dependency(term, variable, order+1);
this.term = null;
this.variable = null;
}
}
public Dependency getDependency() {
return this.dependency;
}
public void setDependency(Dependency dependency) {
this.dependency = dependency;
}
@Override
public int getTermOrder() {
return getOrder() - 1;
}
@Override
public String toStr() {
StringBuilder sb = new StringBuilder();
if(dependency == null) {
sb.append(term.toStr());
sb.append(" : ");
sb.append(variable.toStr());
} else {
sb.append('[');
sb.append(dependency.toStr());
sb.append(']');
}
return sb.toString();
}
@Override
public String toTermStr() {
return "[" + toStr() + "]";
}
}