diff --git a/src/Main.java b/src/Main.java index cae17f4..f09284e 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,12 +1,11 @@ import lombok.SneakyThrows; -import models.Dependency; +import models.EvaluatableTerm; import models.ResourceVariable; import models.algebra.Expression; import models.algebra.Type; import models.algebra.Variable; import models.dataConstraintModel.DataConstraintModel; import models.dataFlowModel.DataTransferModel; -import models.meta.MetaDependencyVariable; import models.meta.MetaRDLTerm; import models.meta.MetaResourceVariable; import models.meta.OrderConstraint; @@ -23,23 +22,28 @@ Type INT = DataConstraintModel.typeInt; - ResourceVariable a = new ResourceVariable("a", INT, 0); - ResourceVariable b = new ResourceVariable("b", INT, 0); - Dependency dep = new Dependency(a, b); - System.out.println(dep.toStringWithOrder()); + var a = new ResourceVariable("a", INT, 2); + var b = new ResourceVariable("b", INT, 2); + var c = new ResourceVariable("c", INT, 1); + var d = EvaluatableTerm.of(a, b, c); - MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d"), OrderConstraint.EQ, parse("0")); - MetaResourceVariable x = new MetaResourceVariable(new Variable("x"), OrderConstraint.EQ, parse("x")); - MetaResourceVariable y = new MetaResourceVariable(new Variable("y"), OrderConstraint.EQ, parse("x")); - MetaRDLTerm term = new MetaRDLTerm(x, x); - System.out.println(term.isMatchedBy(dep)); - + var v1 = new MetaResourceVariable(new Variable("v1"), OrderConstraint.LE, parse("x + 1")); + var v2 = new MetaResourceVariable(new Variable("v1"), OrderConstraint.EQ, parse("x + 1")); + var v3 = new MetaResourceVariable(new Variable("v3"), OrderConstraint.LE, parse("x")); + var dd = new MetaRDLTerm(v1, v2); + var te = new MetaRDLTerm(dd, (MetaRDLTerm) v3); + + System.out.println(d.toString()); + System.out.println(te.toString()); + System.out.println(te.isMatchedBy(d)); + } @SneakyThrows - public static Expression parse(String expr) { + static Expression parse(String expr) { stream.addLine(expr); return parser.parseTerm(stream, model); } + } diff --git a/src/models/meta/MetaRDLTerm.java b/src/models/meta/MetaRDLTerm.java index 87327f4..61e17dd 100644 --- a/src/models/meta/MetaRDLTerm.java +++ b/src/models/meta/MetaRDLTerm.java @@ -138,6 +138,7 @@ this.termType = TermType.META_DEPENDENCY_TERM; } + public boolean isVariable() { return false; } diff --git a/src/models/meta/MetaVariable.java b/src/models/meta/MetaVariable.java index 52461f2..6357c67 100644 --- a/src/models/meta/MetaVariable.java +++ b/src/models/meta/MetaVariable.java @@ -158,7 +158,25 @@ @Override public String toStringWithOrder() { - return toString() + "(" + orderExpression.toString() + ")"; + return toString() +getOrderString(); + } + + protected String getOrderString() { + switch(constraint) { + case ANY: + return "(*)"; + case EQ: + return "(= " + orderExpression.toString() + ")"; + case GE: + return "(>= " + orderExpression.toString() + ")"; + case GT: + return "(> " + orderExpression.toString() + ")"; + case LE: + return "(<= " + orderExpression.toString() + ")"; + case LT: + return "(< " + orderExpression.toString() + ")"; + } + return ""; } @Override diff --git a/target/classes/Main.class b/target/classes/Main.class index e839b6f..013b56c 100644 --- a/target/classes/Main.class +++ b/target/classes/Main.class Binary files differ