diff options
author | 2023-06-25 21:42:43 +0200 | |
---|---|---|
committer | 2023-06-29 02:23:00 +0200 | |
commit | 79a3fd092c79efc204d2980b07728258372871c4 (patch) | |
tree | e515ff637c1d1288281284d62d33175dd5d19f35 /subprojects/store-query-viatra | |
parent | feat: ordered query ResultSet (diff) | |
download | refinery-79a3fd092c79efc204d2980b07728258372871c4.tar.gz refinery-79a3fd092c79efc204d2980b07728258372871c4.tar.zst refinery-79a3fd092c79efc204d2980b07728258372871c4.zip |
refactor: query equality and hash code
Allow computing hash codes up to the renaming of variables.
Also introduces CheckLiteral instead of AssumeLiteral for more straightforward
naming.
Diffstat (limited to 'subprojects/store-query-viatra')
-rw-r--r-- | subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/CheckEvaluator.java (renamed from subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/AssumptionEvaluator.java) | 4 | ||||
-rw-r--r-- | subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java | 22 | ||||
-rw-r--r-- | subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java | 4 | ||||
-rw-r--r-- | subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java | 4 |
4 files changed, 17 insertions, 17 deletions
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/AssumptionEvaluator.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/CheckEvaluator.java index cf127291..5dde41be 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/AssumptionEvaluator.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/CheckEvaluator.java | |||
@@ -8,8 +8,8 @@ package tools.refinery.store.query.viatra.internal.pquery; | |||
8 | import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; | 8 | import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; |
9 | import tools.refinery.store.query.term.Term; | 9 | import tools.refinery.store.query.term.Term; |
10 | 10 | ||
11 | class AssumptionEvaluator extends TermEvaluator<Boolean> { | 11 | class CheckEvaluator extends TermEvaluator<Boolean> { |
12 | public AssumptionEvaluator(Term<Boolean> term) { | 12 | public CheckEvaluator(Term<Boolean> term) { |
13 | super(term); | 13 | super(term); |
14 | } | 14 | } |
15 | 15 | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java index 5b0ea61d..38fd017e 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java | |||
@@ -141,8 +141,8 @@ public class Dnf2PQuery { | |||
141 | translateConstantLiteral(constantLiteral, body); | 141 | translateConstantLiteral(constantLiteral, body); |
142 | } else if (literal instanceof AssignLiteral<?> assignLiteral) { | 142 | } else if (literal instanceof AssignLiteral<?> assignLiteral) { |
143 | translateAssignLiteral(assignLiteral, body); | 143 | translateAssignLiteral(assignLiteral, body); |
144 | } else if (literal instanceof AssumeLiteral assumeLiteral) { | 144 | } else if (literal instanceof CheckLiteral checkLiteral) { |
145 | translateAssumeLiteral(assumeLiteral, body); | 145 | translateCheckLiteral(checkLiteral, body); |
146 | } else if (literal instanceof CountLiteral countLiteral) { | 146 | } else if (literal instanceof CountLiteral countLiteral) { |
147 | translateCountLiteral(countLiteral, body); | 147 | translateCountLiteral(countLiteral, body); |
148 | } else if (literal instanceof AggregationLiteral<?, ?> aggregationLiteral) { | 148 | } else if (literal instanceof AggregationLiteral<?, ?> aggregationLiteral) { |
@@ -153,9 +153,9 @@ public class Dnf2PQuery { | |||
153 | } | 153 | } |
154 | 154 | ||
155 | private void translateEquivalenceLiteral(EquivalenceLiteral equivalenceLiteral, PBody body) { | 155 | private void translateEquivalenceLiteral(EquivalenceLiteral equivalenceLiteral, PBody body) { |
156 | PVariable varSource = body.getOrCreateVariableByName(equivalenceLiteral.left().getUniqueName()); | 156 | PVariable varSource = body.getOrCreateVariableByName(equivalenceLiteral.getLeft().getUniqueName()); |
157 | PVariable varTarget = body.getOrCreateVariableByName(equivalenceLiteral.right().getUniqueName()); | 157 | PVariable varTarget = body.getOrCreateVariableByName(equivalenceLiteral.getRight().getUniqueName()); |
158 | if (equivalenceLiteral.positive()) { | 158 | if (equivalenceLiteral.isPositive()) { |
159 | new Equality(body, varSource, varTarget); | 159 | new Equality(body, varSource, varTarget); |
160 | } else { | 160 | } else { |
161 | new Inequality(body, varSource, varTarget); | 161 | new Inequality(body, varSource, varTarget); |
@@ -212,13 +212,13 @@ public class Dnf2PQuery { | |||
212 | } | 212 | } |
213 | 213 | ||
214 | private void translateConstantLiteral(ConstantLiteral constantLiteral, PBody body) { | 214 | private void translateConstantLiteral(ConstantLiteral constantLiteral, PBody body) { |
215 | var variable = body.getOrCreateVariableByName(constantLiteral.variable().getUniqueName()); | 215 | var variable = body.getOrCreateVariableByName(constantLiteral.getVariable().getUniqueName()); |
216 | new ConstantValue(body, variable, constantLiteral.nodeId()); | 216 | new ConstantValue(body, variable, constantLiteral.getNodeId()); |
217 | } | 217 | } |
218 | 218 | ||
219 | private <T> void translateAssignLiteral(AssignLiteral<T> assignLiteral, PBody body) { | 219 | private <T> void translateAssignLiteral(AssignLiteral<T> assignLiteral, PBody body) { |
220 | var variable = body.getOrCreateVariableByName(assignLiteral.variable().getUniqueName()); | 220 | var variable = body.getOrCreateVariableByName(assignLiteral.getVariable().getUniqueName()); |
221 | var term = assignLiteral.term(); | 221 | var term = assignLiteral.getTerm(); |
222 | if (term instanceof ConstantTerm<T> constantTerm) { | 222 | if (term instanceof ConstantTerm<T> constantTerm) { |
223 | new ConstantValue(body, variable, constantTerm.getValue()); | 223 | new ConstantValue(body, variable, constantTerm.getValue()); |
224 | } else { | 224 | } else { |
@@ -227,8 +227,8 @@ public class Dnf2PQuery { | |||
227 | } | 227 | } |
228 | } | 228 | } |
229 | 229 | ||
230 | private void translateAssumeLiteral(AssumeLiteral assumeLiteral, PBody body) { | 230 | private void translateCheckLiteral(CheckLiteral checkLiteral, PBody body) { |
231 | var evaluator = new AssumptionEvaluator(assumeLiteral.term()); | 231 | var evaluator = new CheckEvaluator(checkLiteral.getTerm()); |
232 | new ExpressionEvaluation(body, evaluator, null); | 232 | new ExpressionEvaluation(body, evaluator, null); |
233 | } | 233 | } |
234 | 234 | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java index 258127e7..c4f877c5 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java | |||
@@ -29,7 +29,7 @@ import static org.hamcrest.Matchers.is; | |||
29 | import static org.hamcrest.Matchers.nullValue; | 29 | import static org.hamcrest.Matchers.nullValue; |
30 | import static org.junit.jupiter.api.Assertions.assertAll; | 30 | import static org.junit.jupiter.api.Assertions.assertAll; |
31 | import static org.junit.jupiter.api.Assertions.assertThrows; | 31 | import static org.junit.jupiter.api.Assertions.assertThrows; |
32 | import static tools.refinery.store.query.literal.Literals.assume; | 32 | import static tools.refinery.store.query.literal.Literals.check; |
33 | import static tools.refinery.store.query.term.int_.IntTerms.*; | 33 | import static tools.refinery.store.query.term.int_.IntTerms.*; |
34 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNullableResults; | 34 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNullableResults; |
35 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; | 35 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; |
@@ -390,7 +390,7 @@ class FunctionalQueryTest { | |||
390 | var query = Query.of("InvalidAssume", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( | 390 | var query = Query.of("InvalidAssume", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( |
391 | personView.call(p1), | 391 | personView.call(p1), |
392 | ageView.call(p1, x), | 392 | ageView.call(p1, x), |
393 | assume(lessEq(div(constant(120), x), constant(5))) | 393 | check(lessEq(div(constant(120), x), constant(5))) |
394 | ))); | 394 | ))); |
395 | 395 | ||
396 | var store = ModelStore.builder() | 396 | var store = ModelStore.builder() |
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java index 25bcb0dc..be05b5e6 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java | |||
@@ -23,7 +23,7 @@ import tools.refinery.store.tuple.Tuple; | |||
23 | import java.util.List; | 23 | import java.util.List; |
24 | import java.util.Map; | 24 | import java.util.Map; |
25 | 25 | ||
26 | import static tools.refinery.store.query.literal.Literals.assume; | 26 | import static tools.refinery.store.query.literal.Literals.check; |
27 | import static tools.refinery.store.query.literal.Literals.not; | 27 | import static tools.refinery.store.query.literal.Literals.not; |
28 | import static tools.refinery.store.query.term.int_.IntTerms.constant; | 28 | import static tools.refinery.store.query.term.int_.IntTerms.constant; |
29 | import static tools.refinery.store.query.term.int_.IntTerms.greaterEq; | 29 | import static tools.refinery.store.query.term.int_.IntTerms.greaterEq; |
@@ -652,7 +652,7 @@ class QueryTest { | |||
652 | var query = Query.of("Constraint", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( | 652 | var query = Query.of("Constraint", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( |
653 | personView.call(p1), | 653 | personView.call(p1), |
654 | ageView.call(p1, x), | 654 | ageView.call(p1, x), |
655 | assume(greaterEq(x, constant(18))) | 655 | check(greaterEq(x, constant(18))) |
656 | ))); | 656 | ))); |
657 | 657 | ||
658 | var store = ModelStore.builder() | 658 | var store = ModelStore.builder() |