From 6252cdf7dc40e64008e919d82f823c0729f23d21 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Fri, 4 Nov 2022 01:58:42 +0100 Subject: refactor: rename CallKind to Polarity --- .../internal/pquery/CountExpressionEvaluator.java | 6 ++--- .../query/viatra/internal/pquery/DNF2PQuery.java | 14 ++++++------ .../store/query/viatra/tests/QueryTest.java | 4 ++-- .../refinery/store/query/atom/BasicCallKind.java | 26 ---------------------- .../tools/refinery/store/query/atom/CallAtom.java | 24 ++++++++++---------- .../tools/refinery/store/query/atom/CallKind.java | 11 --------- .../refinery/store/query/atom/CallPolarity.java | 11 +++++++++ .../refinery/store/query/atom/CountCallKind.java | 13 ----------- .../store/query/atom/CountingPolarity.java | 13 +++++++++++ .../refinery/store/query/atom/SimplePolarity.java | 26 ++++++++++++++++++++++ 10 files changed, 74 insertions(+), 74 deletions(-) delete mode 100644 subprojects/store/src/main/java/tools/refinery/store/query/atom/BasicCallKind.java delete mode 100644 subprojects/store/src/main/java/tools/refinery/store/query/atom/CallKind.java create mode 100644 subprojects/store/src/main/java/tools/refinery/store/query/atom/CallPolarity.java delete mode 100644 subprojects/store/src/main/java/tools/refinery/store/query/atom/CountCallKind.java create mode 100644 subprojects/store/src/main/java/tools/refinery/store/query/atom/CountingPolarity.java create mode 100644 subprojects/store/src/main/java/tools/refinery/store/query/atom/SimplePolarity.java diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/CountExpressionEvaluator.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/CountExpressionEvaluator.java index 6fc96c05..e583e187 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/CountExpressionEvaluator.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/CountExpressionEvaluator.java @@ -3,14 +3,14 @@ package tools.refinery.store.query.viatra.internal.pquery; import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator; import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; import tools.refinery.store.query.atom.ComparisonOperator; -import tools.refinery.store.query.atom.CountCallKind; +import tools.refinery.store.query.atom.CountingPolarity; import java.util.List; public record CountExpressionEvaluator(String variableName, ComparisonOperator operator, int threshold) implements IExpressionEvaluator { - public CountExpressionEvaluator(String variableName, CountCallKind callKind) { - this(variableName, callKind.operator(), callKind.threshold()); + public CountExpressionEvaluator(String variableName, CountingPolarity polarity) { + this(variableName, polarity.operator(), polarity.threshold()); } @Override 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 61b984ae..ae99365d 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 @@ -127,21 +127,21 @@ public class DNF2PQuery { } var variablesTuple = translateSubstitution(callAtom.getSubstitution(), body); var translatedReferred = translate(target); - var callKind = callAtom.getKind(); - if (callKind instanceof BasicCallKind basicCallKind) { - switch (basicCallKind) { + var polarity = callAtom.getPolarity(); + if (polarity instanceof SimplePolarity simplePolarity) { + switch (simplePolarity) { case POSITIVE -> new PositivePatternCall(body, variablesTuple, translatedReferred); case TRANSITIVE -> new BinaryTransitiveClosure(body, variablesTuple, translatedReferred); case NEGATIVE -> new NegativePatternCall(body, variablesTuple, translatedReferred); - default -> throw new IllegalArgumentException("Unknown BasicCallKind: " + basicCallKind); + default -> throw new IllegalArgumentException("Unknown BasicCallKind: " + simplePolarity); } - } else if (callKind instanceof CountCallKind countCallKind) { + } else if (polarity instanceof CountingPolarity countingPolarity) { var countVariableName = DNFUtils.generateUniqueName("count"); var countPVariable = body.getOrCreateVariableByName(countVariableName); new PatternMatchCounter(body, variablesTuple, translatedReferred, countPVariable); - new ExpressionEvaluation(body, new CountExpressionEvaluator(countVariableName, countCallKind), null); + new ExpressionEvaluation(body, new CountExpressionEvaluator(countVariableName, countingPolarity), null); } else { - throw new IllegalArgumentException("Unknown CallKind: " + callKind); + throw new IllegalArgumentException("Unknown CallKind: " + polarity); } } diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryTest.java index 224df362..ea92b223 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryTest.java +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryTest.java @@ -438,7 +438,7 @@ class QueryTest { .clause( new RelationViewAtom(personView, p3), new RelationViewAtom(personView, p4), - new CallAtom<>(BasicCallKind.TRANSITIVE, friendPredicate, p3, p4) + new CallAtom<>(SimplePolarity.TRANSITIVE, friendPredicate, p3, p4) ) .build(); @@ -480,7 +480,7 @@ class QueryTest { .parameters(p1) .clause( new RelationViewAtom(personView, p1), - new CallAtom<>(new CountCallKind(ComparisonOperator.EQUALS, 2), called, p1, p2) + new CallAtom<>(new CountingPolarity(ComparisonOperator.EQUALS, 2), called, p1, p2) ) .build(); diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/BasicCallKind.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/BasicCallKind.java deleted file mode 100644 index cf2ffc07..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/BasicCallKind.java +++ /dev/null @@ -1,26 +0,0 @@ -package tools.refinery.store.query.atom; - -public enum BasicCallKind implements CallKind { - POSITIVE(true, false), - NEGATIVE(false, false), - TRANSITIVE(true, true); - - private final boolean positive; - - private final boolean transitive; - - BasicCallKind(boolean positive, boolean transitive) { - this.positive = positive; - this.transitive = transitive; - } - - @Override - public boolean isPositive() { - return positive; - } - - @Override - public boolean isTransitive() { - return transitive; - } -} diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallAtom.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallAtom.java index e52e33ac..9e289a8a 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallAtom.java +++ b/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallAtom.java @@ -8,22 +8,22 @@ import java.util.Objects; import java.util.Set; public final class CallAtom extends AbstractSubstitutionAtom { - private final CallKind kind; + private final CallPolarity polarity; - public CallAtom(CallKind kind, T target, List substitution) { + public CallAtom(CallPolarity polarity, T target, List substitution) { super(target, substitution); - if (kind.isTransitive() && target.getArity() != 2) { + if (polarity.isTransitive() && target.getArity() != 2) { throw new IllegalArgumentException("Transitive closures can only take binary relations"); } - this.kind = kind; + this.polarity = polarity; } - public CallAtom(CallKind kind, T target, Variable... substitution) { - this(kind, target, List.of(substitution)); + public CallAtom(CallPolarity polarity, T target, Variable... substitution) { + this(polarity, target, List.of(substitution)); } public CallAtom(boolean positive, T target, List substitution) { - this(CallKind.fromBoolean(positive), target, substitution); + this(CallPolarity.fromBoolean(positive), target, substitution); } public CallAtom(boolean positive, T target, Variable... substitution) { @@ -38,13 +38,13 @@ public final class CallAtom extends AbstractSubstitution this(target, List.of(substitution)); } - public CallKind getKind() { - return kind; + public CallPolarity getPolarity() { + return polarity; } @Override public void collectAllVariables(Set variables) { - if (kind.isPositive()) { + if (polarity.isPositive()) { super.collectAllVariables(variables); } } @@ -54,13 +54,13 @@ public final class CallAtom extends AbstractSubstitution if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; CallAtom that = (CallAtom) o; - return Objects.equals(kind, that.kind) + return Objects.equals(polarity, that.polarity) && Objects.equals(getTarget(), that.getTarget()) && Objects.equals(getSubstitution(), that.getSubstitution()); } @Override public int hashCode() { - return Objects.hash(kind, getTarget(), getSubstitution()); + return Objects.hash(polarity, getTarget(), getSubstitution()); } } diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallKind.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallKind.java deleted file mode 100644 index 86066b8e..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallKind.java +++ /dev/null @@ -1,11 +0,0 @@ -package tools.refinery.store.query.atom; - -public sealed interface CallKind permits BasicCallKind, CountCallKind { - boolean isPositive(); - - boolean isTransitive(); - - static CallKind fromBoolean(boolean positive) { - return positive ? BasicCallKind.POSITIVE : BasicCallKind.NEGATIVE; - } -} diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallPolarity.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallPolarity.java new file mode 100644 index 00000000..2ab2b6d2 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallPolarity.java @@ -0,0 +1,11 @@ +package tools.refinery.store.query.atom; + +public sealed interface CallPolarity permits SimplePolarity, CountingPolarity { + boolean isPositive(); + + boolean isTransitive(); + + static CallPolarity fromBoolean(boolean positive) { + return positive ? SimplePolarity.POSITIVE : SimplePolarity.NEGATIVE; + } +} diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CountCallKind.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/CountCallKind.java deleted file mode 100644 index 2c85cb4f..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CountCallKind.java +++ /dev/null @@ -1,13 +0,0 @@ -package tools.refinery.store.query.atom; - -public record CountCallKind(ComparisonOperator operator, int threshold) implements CallKind { - @Override - public boolean isPositive() { - return false; - } - - @Override - public boolean isTransitive() { - return false; - } -} diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CountingPolarity.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/CountingPolarity.java new file mode 100644 index 00000000..08a62f4f --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/query/atom/CountingPolarity.java @@ -0,0 +1,13 @@ +package tools.refinery.store.query.atom; + +public record CountingPolarity(ComparisonOperator operator, int threshold) implements CallPolarity { + @Override + public boolean isPositive() { + return false; + } + + @Override + public boolean isTransitive() { + return false; + } +} diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/SimplePolarity.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/SimplePolarity.java new file mode 100644 index 00000000..d243bf26 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/query/atom/SimplePolarity.java @@ -0,0 +1,26 @@ +package tools.refinery.store.query.atom; + +public enum SimplePolarity implements CallPolarity { + POSITIVE(true, false), + NEGATIVE(false, false), + TRANSITIVE(true, true); + + private final boolean positive; + + private final boolean transitive; + + SimplePolarity(boolean positive, boolean transitive) { + this.positive = positive; + this.transitive = transitive; + } + + @Override + public boolean isPositive() { + return positive; + } + + @Override + public boolean isTransitive() { + return transitive; + } +} -- cgit v1.2.3-54-g00ecf