aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-query-viatra
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-06-25 21:42:43 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-06-29 02:23:00 +0200
commit79a3fd092c79efc204d2980b07728258372871c4 (patch)
treee515ff637c1d1288281284d62d33175dd5d19f35 /subprojects/store-query-viatra
parentfeat: ordered query ResultSet (diff)
downloadrefinery-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.java22
-rw-r--r--subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java4
-rw-r--r--subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java4
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;
8import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; 8import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider;
9import tools.refinery.store.query.term.Term; 9import tools.refinery.store.query.term.Term;
10 10
11class AssumptionEvaluator extends TermEvaluator<Boolean> { 11class 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;
29import static org.hamcrest.Matchers.nullValue; 29import static org.hamcrest.Matchers.nullValue;
30import static org.junit.jupiter.api.Assertions.assertAll; 30import static org.junit.jupiter.api.Assertions.assertAll;
31import static org.junit.jupiter.api.Assertions.assertThrows; 31import static org.junit.jupiter.api.Assertions.assertThrows;
32import static tools.refinery.store.query.literal.Literals.assume; 32import static tools.refinery.store.query.literal.Literals.check;
33import static tools.refinery.store.query.term.int_.IntTerms.*; 33import static tools.refinery.store.query.term.int_.IntTerms.*;
34import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNullableResults; 34import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNullableResults;
35import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; 35import 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;
23import java.util.List; 23import java.util.List;
24import java.util.Map; 24import java.util.Map;
25 25
26import static tools.refinery.store.query.literal.Literals.assume; 26import static tools.refinery.store.query.literal.Literals.check;
27import static tools.refinery.store.query.literal.Literals.not; 27import static tools.refinery.store.query.literal.Literals.not;
28import static tools.refinery.store.query.term.int_.IntTerms.constant; 28import static tools.refinery.store.query.term.int_.IntTerms.constant;
29import static tools.refinery.store.query.term.int_.IntTerms.greaterEq; 29import 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()