diff --git a/src/models/meta/MetaRDLTerm.java b/src/models/meta/MetaRDLTerm.java index 61e17dd..fb751fd 100644 --- a/src/models/meta/MetaRDLTerm.java +++ b/src/models/meta/MetaRDLTerm.java @@ -72,72 +72,79 @@ } //dependency term - public MetaRDLTerm(Dependency dependency, MetaRDLTerm argumentTerm) { - super( - new Symbol(":", 3), - dependency.getDependedVariable().getOrder() == argumentTerm.getOrder() - ? dependency.getDependedVariable().getOrder() - : dependency.getDependedVariable().getOrder() - 1 - ); - if(! dependency.isDependeingTermEvaluatable()) { + public MetaRDLTerm(MetaRDLTerm dependingTerm, MetaResourceVariable dependedVariable, MetaRDLTerm argumentTerm) { + super(new Symbol(":", 3), -1); + if (! EvaluatableTerm.class.isAssignableFrom(dependingTerm.getTermType().getBaseTermClass())) { throw new IllegalTypeException(); } - addChild(dependency.getDependingTerm()); - addChild(dependency.getDependedVariable()); + if(! EvaluatableTerm.class.isAssignableFrom(argumentTerm.getTermType().getBaseTermClass())) { + throw new IllegalTypeException(); + } + addChild(dependingTerm); + addChild(dependedVariable); addChild(argumentTerm); - this.termType = TermType.META_DEPENDENCY_TERM; } - public MetaRDLTerm(MetaRDLTerm dependency, EvaluatableTerm argumentTerm) { - super( - new Symbol(":", 3), - ((RDLTerm) dependency.getChild(1)).getOrder() == argumentTerm.getOrder() - ? ((RDLTerm) dependency.getChild(1)).getOrder() - : ((RDLTerm) dependency.getChild(1)).getOrder() - 1 - ); - var firstTerm = (RDLTerm) dependency.getChild(0); - if(firstTerm instanceof MetaRDLTerm) { - var firtTerm2 = (MetaRDLTerm) firstTerm; - if(firtTerm2.getTermType() == TermType.META_DEPENDENCY || firtTerm2.getTermType() == TermType.META_DEPENDENCY_TERM) { - throw new IllegalTypeException(); - } - } else { - if(! (firstTerm instanceof EvaluatableTerm)) { - throw new IllegalTypeException(); - } + public MetaRDLTerm(EvaluatableTerm dependingTerm, MetaRDLTerm dependedVariable, MetaRDLTerm argumentTerm) { + super(new Symbol(":", 3), -1); + if(! EvaluatableTerm.class.isAssignableFrom(argumentTerm.getTermType().getBaseTermClass())) { + throw new IllegalTypeException(); } - - addChild(dependency.getChild(0)); - addChild(dependency.getChild(1)); + addChild(dependingTerm); + addChild(dependedVariable); addChild(argumentTerm); - this.termType = TermType.META_DEPENDENCY_TERM; + } + + public MetaRDLTerm(MetaRDLTerm dependingTerm, ResourceVariable dependedVariable, MetaRDLTerm argumentTerm) { + super(new Symbol(":", 3), -1); + if (! EvaluatableTerm.class.isAssignableFrom(dependingTerm.getTermType().getBaseTermClass())) { + throw new IllegalTypeException(); + } + if(! EvaluatableTerm.class.isAssignableFrom(argumentTerm.getTermType().getBaseTermClass())) { + throw new IllegalTypeException(); + } + addChild(dependingTerm); + addChild(dependedVariable); + addChild(argumentTerm); + } + + public MetaRDLTerm(MetaRDLTerm dependingTerm, MetaRDLTerm dependedVariable, EvaluatableTerm argumentTerm) { + super(new Symbol(":", 3), -1); + if (! EvaluatableTerm.class.isAssignableFrom(dependingTerm.getTermType().getBaseTermClass())) { + throw new IllegalTypeException(); + } + addChild(dependingTerm); + addChild(dependedVariable); + addChild(argumentTerm); + } + + public MetaRDLTerm(MetaRDLTerm dependingTerm, ResourceVariable dependedVariable, EvaluatableTerm argumentTerm) { + super(new Symbol(":", 3), -1); + if (! EvaluatableTerm.class.isAssignableFrom(dependingTerm.getTermType().getBaseTermClass())) { + throw new IllegalTypeException(); + } + addChild(dependingTerm); + addChild(dependedVariable); + addChild(argumentTerm); + } + + public MetaRDLTerm(EvaluatableTerm dependingTerm, MetaResourceVariable dependedVariable, EvaluatableTerm argumentTerm) { + super(new Symbol(":", 3), -1); + addChild(dependingTerm); + addChild(dependedVariable); + addChild(argumentTerm); + } + + public MetaRDLTerm(EvaluatableTerm dependingTerm, ResourceVariable dependedVariable, MetaRDLTerm argumentTerm) { + super(new Symbol(":", 3), -1); + if(! EvaluatableTerm.class.isAssignableFrom(argumentTerm.getTermType().getBaseTermClass())) { + throw new IllegalTypeException(); + } + addChild(dependingTerm); + addChild(dependedVariable); + addChild(argumentTerm); } - public MetaRDLTerm(MetaRDLTerm dependency, MetaRDLTerm argumentTerm) { - super( - new Symbol(":", 3), - ((RDLTerm) dependency.getChild(1)).getOrder() == argumentTerm.getOrder() - ? ((RDLTerm) dependency.getChild(1)).getOrder() - : ((RDLTerm) dependency.getChild(1)).getOrder() - 1 - ); - var firstTerm = (RDLTerm) dependency.getChild(0); - if(firstTerm instanceof MetaRDLTerm) { - var firtTerm2 = (MetaRDLTerm) firstTerm; - if(firtTerm2.getTermType() == TermType.META_DEPENDENCY || firtTerm2.getTermType() == TermType.META_DEPENDENCY_TERM) { - throw new IllegalTypeException(); - } - } else { - if(! (firstTerm instanceof EvaluatableTerm)) { - throw new IllegalTypeException(); - } - } - - addChild(dependency.getChild(0)); - addChild(dependency.getChild(1)); - addChild(argumentTerm); - this.termType = TermType.META_DEPENDENCY_TERM; - } - public boolean isVariable() { return false; diff --git a/src/tests/meta/MetaResourceVariableTest.java b/src/tests/meta/MetaResourceVariableTest.java index 56036ae..6eef567 100644 --- a/src/tests/meta/MetaResourceVariableTest.java +++ b/src/tests/meta/MetaResourceVariableTest.java @@ -23,7 +23,7 @@ ResourceVariable b = new ResourceVariable("b", INT, 0); ResourceVariable c = new ResourceVariable("c", INT, 0); Dependency dep = new Dependency(a, b); - DependencyTerm depTerm = new DependencyTerm(dep, c); + DependencyTerm depTerm = new DependencyTerm(a, b, c); MetaResourceVariable x = new MetaResourceVariable(new Variable("x")); MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d"));