aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-query-viatra
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-12-13 03:21:58 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-12-13 12:25:02 +0100
commit6ccc179ea305fc27ae121253b1d1f172bad676fd (patch)
tree8c5bb8dd7bf45157cabb57b19d17ce9af11aca5f /subprojects/store-query-viatra
parentchore(deps): upgrade to yarn canary (diff)
downloadrefinery-6ccc179ea305fc27ae121253b1d1f172bad676fd.tar.gz
refinery-6ccc179ea305fc27ae121253b1d1f172bad676fd.tar.zst
refinery-6ccc179ea305fc27ae121253b1d1f172bad676fd.zip
refactor(store): simplify return types
Prefers sealed non-generic interfaces over wildcard types to avoid confusion about method return types, especially in collections (see SonarQube rule java:S1452).
Diffstat (limited to 'subprojects/store-query-viatra')
-rw-r--r--subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraQueryableModelStore.java28
-rw-r--r--subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/RelationalScope.java7
-rw-r--r--subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraQueryableModel.java8
-rw-r--r--subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalRuntimeContext.java28
-rw-r--r--subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/DNF2PQuery.java15
-rw-r--r--subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RelationViewWrapper.java6
-rw-r--r--subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ModelUpdateListener.java21
-rw-r--r--subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ViewUpdateTranslator.java5
8 files changed, 67 insertions, 51 deletions
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraQueryableModelStore.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraQueryableModelStore.java
index 37cd91a6..94d2db4f 100644
--- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraQueryableModelStore.java
+++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraQueryableModelStore.java
@@ -5,13 +5,17 @@ import tools.refinery.store.model.ModelDiffCursor;
5import tools.refinery.store.model.ModelStore; 5import tools.refinery.store.model.ModelStore;
6import tools.refinery.store.model.ModelStoreImpl; 6import tools.refinery.store.model.ModelStoreImpl;
7import tools.refinery.store.model.RelationLike; 7import tools.refinery.store.model.RelationLike;
8import tools.refinery.store.model.representation.AnyDataRepresentation;
8import tools.refinery.store.model.representation.DataRepresentation; 9import tools.refinery.store.model.representation.DataRepresentation;
9import tools.refinery.store.query.*; 10import tools.refinery.store.query.DNF;
11import tools.refinery.store.query.DNFAnd;
12import tools.refinery.store.query.QueryableModel;
13import tools.refinery.store.query.QueryableModelStore;
10import tools.refinery.store.query.atom.*; 14import tools.refinery.store.query.atom.*;
11import tools.refinery.store.query.viatra.internal.RawPatternMatcher; 15import tools.refinery.store.query.viatra.internal.RawPatternMatcher;
12import tools.refinery.store.query.viatra.internal.ViatraQueryableModel; 16import tools.refinery.store.query.viatra.internal.ViatraQueryableModel;
13import tools.refinery.store.query.viatra.internal.pquery.DNF2PQuery; 17import tools.refinery.store.query.viatra.internal.pquery.DNF2PQuery;
14import tools.refinery.store.query.view.RelationView; 18import tools.refinery.store.query.view.AnyRelationView;
15 19
16import java.util.Collections; 20import java.util.Collections;
17import java.util.HashMap; 21import java.util.HashMap;
@@ -21,11 +25,11 @@ import java.util.Set;
21public class ViatraQueryableModelStore implements QueryableModelStore { 25public class ViatraQueryableModelStore implements QueryableModelStore {
22 protected final ModelStore store; 26 protected final ModelStore store;
23 27
24 protected final Set<RelationView<?>> relationViews; 28 protected final Set<AnyRelationView> relationViews;
25 29
26 protected final Map<DNF, GenericQuerySpecification<RawPatternMatcher>> predicates; 30 protected final Map<DNF, GenericQuerySpecification<RawPatternMatcher>> predicates;
27 31
28 public ViatraQueryableModelStore(ModelStore store, Set<RelationView<?>> relationViews, 32 public ViatraQueryableModelStore(ModelStore store, Set<AnyRelationView> relationViews,
29 Set<DNF> predicates) { 33 Set<DNF> predicates) {
30 this.store = store; 34 this.store = store;
31 validateViews(store.getDataRepresentations(), relationViews); 35 validateViews(store.getDataRepresentations(), relationViews);
@@ -34,13 +38,13 @@ public class ViatraQueryableModelStore implements QueryableModelStore {
34 this.predicates = initPredicates(predicates); 38 this.predicates = initPredicates(predicates);
35 } 39 }
36 40
37 public ViatraQueryableModelStore(Set<DataRepresentation<?, ?>> dataRepresentations, 41 public ViatraQueryableModelStore(Set<AnyDataRepresentation> dataRepresentations,
38 Set<RelationView<?>> relationViews, Set<DNF> predicates) { 42 Set<AnyRelationView> relationViews, Set<DNF> predicates) {
39 this(new ModelStoreImpl(dataRepresentations), relationViews, predicates); 43 this(new ModelStoreImpl(dataRepresentations), relationViews, predicates);
40 } 44 }
41 45
42 private void validateViews(Set<DataRepresentation<?, ?>> dataRepresentations, Set<RelationView<?>> relationViews) { 46 private void validateViews(Set<AnyDataRepresentation> dataRepresentations, Set<AnyRelationView> relationViews) {
43 for (RelationView<?> relationView : relationViews) { 47 for (var relationView : relationViews) {
44 if (!dataRepresentations.contains(relationView.getRepresentation())) { 48 if (!dataRepresentations.contains(relationView.getRepresentation())) {
45 throw new IllegalArgumentException("%s %s added to %s without a referred representation.".formatted( 49 throw new IllegalArgumentException("%s %s added to %s without a referred representation.".formatted(
46 DataRepresentation.class.getSimpleName(), relationView.getName(), 50 DataRepresentation.class.getSimpleName(), relationView.getName(),
@@ -49,7 +53,7 @@ public class ViatraQueryableModelStore implements QueryableModelStore {
49 } 53 }
50 } 54 }
51 55
52 private void validatePredicates(Set<RelationView<?>> relationViews, Set<DNF> predicates) { 56 private void validatePredicates(Set<AnyRelationView> relationViews, Set<DNF> predicates) {
53 for (DNF dnfPredicate : predicates) { 57 for (DNF dnfPredicate : predicates) {
54 for (DNFAnd clause : dnfPredicate.getClauses()) { 58 for (DNFAnd clause : dnfPredicate.getClauses()) {
55 for (DNFAtom atom : clause.constraints()) { 59 for (DNFAtom atom : clause.constraints()) {
@@ -65,7 +69,7 @@ public class ViatraQueryableModelStore implements QueryableModelStore {
65 } 69 }
66 } 70 }
67 71
68 private void validateRelationAtom(Set<RelationView<?>> relationViews, DNF dnfPredicate, 72 private void validateRelationAtom(Set<AnyRelationView> relationViews, DNF dnfPredicate,
69 RelationViewAtom relationViewAtom) { 73 RelationViewAtom relationViewAtom) {
70 if (!relationViews.contains(relationViewAtom.getTarget())) { 74 if (!relationViews.contains(relationViewAtom.getTarget())) {
71 throw new IllegalArgumentException( 75 throw new IllegalArgumentException(
@@ -100,12 +104,12 @@ public class ViatraQueryableModelStore implements QueryableModelStore {
100 } 104 }
101 105
102 @Override 106 @Override
103 public Set<DataRepresentation<?, ?>> getDataRepresentations() { 107 public Set<AnyDataRepresentation> getDataRepresentations() {
104 return store.getDataRepresentations(); 108 return store.getDataRepresentations();
105 } 109 }
106 110
107 @Override 111 @Override
108 public Set<RelationView<?>> getViews() { 112 public Set<AnyRelationView> getViews() {
109 return this.relationViews; 113 return this.relationViews;
110 } 114 }
111 115
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/RelationalScope.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/RelationalScope.java
index 5ddad67d..133c4c72 100644
--- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/RelationalScope.java
+++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/RelationalScope.java
@@ -6,19 +6,20 @@ import org.eclipse.viatra.query.runtime.api.scope.IEngineContext;
6import org.eclipse.viatra.query.runtime.api.scope.IIndexingErrorListener; 6import org.eclipse.viatra.query.runtime.api.scope.IIndexingErrorListener;
7import org.eclipse.viatra.query.runtime.api.scope.QueryScope; 7import org.eclipse.viatra.query.runtime.api.scope.QueryScope;
8import tools.refinery.store.model.Model; 8import tools.refinery.store.model.Model;
9import tools.refinery.store.tuple.Tuple;
10import tools.refinery.store.model.representation.Relation; 9import tools.refinery.store.model.representation.Relation;
11import tools.refinery.store.query.viatra.internal.context.RelationalEngineContext; 10import tools.refinery.store.query.viatra.internal.context.RelationalEngineContext;
12import tools.refinery.store.query.viatra.internal.viewupdate.ModelUpdateListener; 11import tools.refinery.store.query.viatra.internal.viewupdate.ModelUpdateListener;
13import tools.refinery.store.query.view.RelationView; 12import tools.refinery.store.query.view.AnyRelationView;
13import tools.refinery.store.tuple.Tuple;
14 14
15import java.util.Set; 15import java.util.Set;
16 16
17public class RelationalScope extends QueryScope { 17public class RelationalScope extends QueryScope {
18 private final Model model; 18 private final Model model;
19
19 private final ModelUpdateListener updateListener; 20 private final ModelUpdateListener updateListener;
20 21
21 public RelationalScope(Model model, Set<RelationView<?>> relationViews) { 22 public RelationalScope(Model model, Set<AnyRelationView> relationViews) {
22 this.model = model; 23 this.model = model;
23 this.updateListener = new ModelUpdateListener(relationViews); 24 this.updateListener = new ModelUpdateListener(relationViews);
24 } 25 }
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraQueryableModel.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraQueryableModel.java
index cd9fb180..5b06e266 100644
--- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraQueryableModel.java
+++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraQueryableModel.java
@@ -8,6 +8,7 @@ import tools.refinery.store.map.Cursor;
8import tools.refinery.store.map.DiffCursor; 8import tools.refinery.store.map.DiffCursor;
9import tools.refinery.store.model.Model; 9import tools.refinery.store.model.Model;
10import tools.refinery.store.model.ModelDiffCursor; 10import tools.refinery.store.model.ModelDiffCursor;
11import tools.refinery.store.model.representation.AnyDataRepresentation;
11import tools.refinery.store.model.representation.DataRepresentation; 12import tools.refinery.store.model.representation.DataRepresentation;
12import tools.refinery.store.model.representation.Relation; 13import tools.refinery.store.model.representation.Relation;
13import tools.refinery.store.query.QueryableModel; 14import tools.refinery.store.query.QueryableModel;
@@ -66,7 +67,7 @@ public class ViatraQueryableModel implements QueryableModel {
66 } 67 }
67 68
68 @Override 69 @Override
69 public Set<DataRepresentation<?, ?>> getDataRepresentations() { 70 public Set<AnyDataRepresentation> getDataRepresentations() {
70 return model.getDataRepresentations(); 71 return model.getDataRepresentations();
71 } 72 }
72 73
@@ -113,7 +114,7 @@ public class ViatraQueryableModel implements QueryableModel {
113 } 114 }
114 115
115 @Override 116 @Override
116 public <K, V> long getSize(DataRepresentation<K, V> representation) { 117 public long getSize(AnyDataRepresentation representation) {
117 return model.getSize(representation); 118 return model.getSize(representation);
118 } 119 }
119 120
@@ -207,7 +208,8 @@ public class ViatraQueryableModel implements QueryableModel {
207 208
208 private void restoreWithDiffReplay(long state) { 209 private void restoreWithDiffReplay(long state) {
209 var modelDiffCursor = getDiffCursor(state); 210 var modelDiffCursor = getDiffCursor(state);
210 for (DataRepresentation<?, ?> dataRepresentation : this.getDataRepresentations()) { 211 for (AnyDataRepresentation anyDataRepresentation : this.getDataRepresentations()) {
212 var dataRepresentation = (DataRepresentation<?, ?>) anyDataRepresentation;
211 restoreRepresentationWithDiffReplay(modelDiffCursor, dataRepresentation); 213 restoreRepresentationWithDiffReplay(modelDiffCursor, dataRepresentation);
212 } 214 }
213 } 215 }
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalRuntimeContext.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalRuntimeContext.java
index c007d630..e01525e0 100644
--- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalRuntimeContext.java
+++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalRuntimeContext.java
@@ -9,6 +9,7 @@ import org.eclipse.viatra.query.runtime.matchers.util.Accuracy;
9import tools.refinery.store.model.Model; 9import tools.refinery.store.model.Model;
10import tools.refinery.store.query.viatra.internal.pquery.RelationViewWrapper; 10import tools.refinery.store.query.viatra.internal.pquery.RelationViewWrapper;
11import tools.refinery.store.query.viatra.internal.viewupdate.ModelUpdateListener; 11import tools.refinery.store.query.viatra.internal.viewupdate.ModelUpdateListener;
12import tools.refinery.store.query.view.AnyRelationView;
12import tools.refinery.store.query.view.RelationView; 13import tools.refinery.store.query.view.RelationView;
13 14
14import java.lang.reflect.InvocationTargetException; 15import java.lang.reflect.InvocationTargetException;
@@ -53,7 +54,7 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext {
53 @Override 54 @Override
54 public boolean isIndexed(IInputKey key, IndexingService service) { 55 public boolean isIndexed(IInputKey key, IndexingService service) {
55 if (key instanceof RelationView<?> relationalKey) { 56 if (key instanceof RelationView<?> relationalKey) {
56 return this.modelUpdateListener.containsRelationalView(relationalKey); 57 return this.modelUpdateListener.containsRelationView(relationalKey);
57 } else { 58 } else {
58 return false; 59 return false;
59 } 60 }
@@ -66,11 +67,10 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext {
66 } 67 }
67 } 68 }
68 69
69 @SuppressWarnings("squid:S1452") 70 AnyRelationView checkKey(IInputKey key) {
70 RelationView<?> checkKey(IInputKey key) {
71 if (key instanceof RelationViewWrapper wrappedKey) { 71 if (key instanceof RelationViewWrapper wrappedKey) {
72 var relationViewKey = wrappedKey.getWrappedKey(); 72 var relationViewKey = wrappedKey.getWrappedKey();
73 if (modelUpdateListener.containsRelationalView(relationViewKey)) { 73 if (modelUpdateListener.containsRelationView(relationViewKey)) {
74 return relationViewKey; 74 return relationViewKey;
75 } else { 75 } else {
76 throw new IllegalStateException("Query is asking for non-indexed key"); 76 throw new IllegalStateException("Query is asking for non-indexed key");
@@ -82,8 +82,8 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext {
82 82
83 @Override 83 @Override
84 public int countTuples(IInputKey key, TupleMask seedMask, ITuple seed) { 84 public int countTuples(IInputKey key, TupleMask seedMask, ITuple seed) {
85 RelationView<?> relationalViewKey = checkKey(key); 85 var relationViewKey = checkKey(key);
86 Iterable<Object[]> allObjects = relationalViewKey.getAll(model); 86 Iterable<Object[]> allObjects = relationViewKey.getAll(model);
87 Iterable<Object[]> filteredBySeed = filter(allObjects, objectArray -> isMatching(objectArray, seedMask, seed)); 87 Iterable<Object[]> filteredBySeed = filter(allObjects, objectArray -> isMatching(objectArray, seedMask, seed));
88 Iterator<Object[]> iterator = filteredBySeed.iterator(); 88 Iterator<Object[]> iterator = filteredBySeed.iterator();
89 int result = 0; 89 int result = 0;
@@ -101,8 +101,8 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext {
101 101
102 @Override 102 @Override
103 public Iterable<Tuple> enumerateTuples(IInputKey key, TupleMask seedMask, ITuple seed) { 103 public Iterable<Tuple> enumerateTuples(IInputKey key, TupleMask seedMask, ITuple seed) {
104 RelationView<?> relationalViewKey = checkKey(key); 104 var relationViewKey = checkKey(key);
105 Iterable<Object[]> allObjects = relationalViewKey.getAll(model); 105 Iterable<Object[]> allObjects = relationViewKey.getAll(model);
106 Iterable<Object[]> filteredBySeed = filter(allObjects, objectArray -> isMatching(objectArray, seedMask, seed)); 106 Iterable<Object[]> filteredBySeed = filter(allObjects, objectArray -> isMatching(objectArray, seedMask, seed));
107 return map(filteredBySeed, Tuples::flatTupleOf); 107 return map(filteredBySeed, Tuples::flatTupleOf);
108 } 108 }
@@ -125,21 +125,21 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext {
125 125
126 @Override 126 @Override
127 public boolean containsTuple(IInputKey key, ITuple seed) { 127 public boolean containsTuple(IInputKey key, ITuple seed) {
128 RelationView<?> relationalViewKey = checkKey(key); 128 var relationViewKey = checkKey(key);
129 return relationalViewKey.get(model, seed.getElements()); 129 return relationViewKey.get(model, seed.getElements());
130 } 130 }
131 131
132 @Override 132 @Override
133 public void addUpdateListener(IInputKey key, Tuple seed, IQueryRuntimeContextListener listener) { 133 public void addUpdateListener(IInputKey key, Tuple seed, IQueryRuntimeContextListener listener) {
134 RelationView<?> relationalKey = checkKey(key); 134 var relationViewKey = (RelationView<?>) checkKey(key);
135 this.modelUpdateListener.addListener(key, relationalKey, seed, listener); 135 this.modelUpdateListener.addListener(key, relationViewKey, seed, listener);
136 136
137 } 137 }
138 138
139 @Override 139 @Override
140 public void removeUpdateListener(IInputKey key, Tuple seed, IQueryRuntimeContextListener listener) { 140 public void removeUpdateListener(IInputKey key, Tuple seed, IQueryRuntimeContextListener listener) {
141 RelationView<?> relationalKey = checkKey(key); 141 var relationViewKey = checkKey(key);
142 this.modelUpdateListener.removeListener(key, relationalKey, seed, listener); 142 this.modelUpdateListener.removeListener(key, relationViewKey, seed, listener);
143 } 143 }
144 144
145 @Override 145 @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 98054161..aa3fba6e 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
@@ -2,7 +2,10 @@ package tools.refinery.store.query.viatra.internal.pquery;
2 2
3import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; 3import org.eclipse.viatra.query.runtime.matchers.psystem.PBody;
4import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; 4import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable;
5import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.*; 5import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality;
6import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter;
7import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality;
8import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall;
6import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure; 9import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure;
7import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue; 10import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue;
8import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall; 11import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall;
@@ -10,9 +13,11 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeCo
10import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; 13import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter;
11import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; 14import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple;
12import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; 15import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
13import tools.refinery.store.query.*; 16import tools.refinery.store.query.DNF;
17import tools.refinery.store.query.DNFAnd;
18import tools.refinery.store.query.Variable;
14import tools.refinery.store.query.atom.*; 19import tools.refinery.store.query.atom.*;
15import tools.refinery.store.query.view.RelationView; 20import tools.refinery.store.query.view.AnyRelationView;
16 21
17import java.util.*; 22import java.util.*;
18import java.util.stream.Collectors; 23import java.util.stream.Collectors;
@@ -22,7 +27,7 @@ public class DNF2PQuery {
22 27
23 private final Map<DNF, SimplePQuery> dnf2PQueryMap = new HashMap<>(); 28 private final Map<DNF, SimplePQuery> dnf2PQueryMap = new HashMap<>();
24 29
25 private final Map<RelationView<?>, RelationViewWrapper> view2WrapperMap = new HashMap<>(); 30 private final Map<AnyRelationView, RelationViewWrapper> view2WrapperMap = new HashMap<>();
26 31
27 public SimplePQuery translate(DNF dnfQuery) { 32 public SimplePQuery translate(DNF dnfQuery) {
28 if (translating.contains(dnfQuery)) { 33 if (translating.contains(dnfQuery)) {
@@ -115,7 +120,7 @@ public class DNF2PQuery {
115 return Tuples.flatTupleOf(variables); 120 return Tuples.flatTupleOf(variables);
116 } 121 }
117 122
118 private RelationViewWrapper wrapView(RelationView<?> relationView) { 123 private RelationViewWrapper wrapView(AnyRelationView relationView) {
119 return view2WrapperMap.computeIfAbsent(relationView, RelationViewWrapper::new); 124 return view2WrapperMap.computeIfAbsent(relationView, RelationViewWrapper::new);
120 } 125 }
121 126
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RelationViewWrapper.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RelationViewWrapper.java
index 2a4148dc..e48648bf 100644
--- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RelationViewWrapper.java
+++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RelationViewWrapper.java
@@ -1,10 +1,10 @@
1package tools.refinery.store.query.viatra.internal.pquery; 1package tools.refinery.store.query.viatra.internal.pquery;
2 2
3import org.eclipse.viatra.query.runtime.matchers.context.common.BaseInputKeyWrapper; 3import org.eclipse.viatra.query.runtime.matchers.context.common.BaseInputKeyWrapper;
4import tools.refinery.store.query.view.RelationView; 4import tools.refinery.store.query.view.AnyRelationView;
5 5
6public class RelationViewWrapper extends BaseInputKeyWrapper<RelationView<?>> { 6public class RelationViewWrapper extends BaseInputKeyWrapper<AnyRelationView> {
7 public RelationViewWrapper(RelationView<?> wrappedKey) { 7 public RelationViewWrapper(AnyRelationView wrappedKey) {
8 super(wrappedKey); 8 super(wrappedKey);
9 } 9 }
10 10
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ModelUpdateListener.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ModelUpdateListener.java
index 1a2fcee7..6a1d06a9 100644
--- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ModelUpdateListener.java
+++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ModelUpdateListener.java
@@ -3,6 +3,8 @@ package tools.refinery.store.query.viatra.internal.viewupdate;
3import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; 3import org.eclipse.viatra.query.runtime.matchers.context.IInputKey;
4import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener; 4import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener;
5import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; 5import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple;
6import tools.refinery.store.model.representation.AnyRelation;
7import tools.refinery.store.query.view.AnyRelationView;
6import tools.refinery.store.tuple.Tuple; 8import tools.refinery.store.tuple.Tuple;
7import tools.refinery.store.model.representation.Relation; 9import tools.refinery.store.model.representation.Relation;
8import tools.refinery.store.query.view.RelationView; 10import tools.refinery.store.query.view.RelationView;
@@ -16,24 +18,24 @@ public class ModelUpdateListener {
16 /** 18 /**
17 * Collections of Relations and their Views. 19 * Collections of Relations and their Views.
18 */ 20 */
19 private final Map<Relation<?>, Set<RelationView<?>>> relation2View; 21 private final Map<AnyRelation, Set<AnyRelationView>> relation2View;
20 22
21 /** 23 /**
22 * Collection of Views and their buffers. 24 * Collection of Views and their buffers.
23 */ 25 */
24 private final Map<RelationView<?>, Set<ViewUpdateBuffer<?>>> view2Buffers; 26 private final Map<AnyRelationView, Set<ViewUpdateBuffer<?>>> view2Buffers;
25 27
26 public ModelUpdateListener(Set<RelationView<?>> relationViews) { 28 public ModelUpdateListener(Set<AnyRelationView> relationViews) {
27 this.relation2View = new HashMap<>(); 29 this.relation2View = new HashMap<>();
28 this.view2Buffers = new HashMap<>(); 30 this.view2Buffers = new HashMap<>();
29 31
30 for (RelationView<?> relationView : relationViews) { 32 for (var relationView : relationViews) {
31 registerView(relationView); 33 registerView(relationView);
32 } 34 }
33 } 35 }
34 36
35 private void registerView(RelationView<?> view) { 37 private void registerView(AnyRelationView view) {
36 Relation<?> relation = view.getRepresentation(); 38 AnyRelation relation = view.getRepresentation();
37 39
38 // 1. register views to relations, if necessary 40 // 1. register views to relations, if necessary
39 var views = relation2View.computeIfAbsent(relation, x -> new HashSet<>()); 41 var views = relation2View.computeIfAbsent(relation, x -> new HashSet<>());
@@ -43,7 +45,7 @@ public class ModelUpdateListener {
43 view2Buffers.computeIfAbsent(view, x -> new HashSet<>()); 45 view2Buffers.computeIfAbsent(view, x -> new HashSet<>());
44 } 46 }
45 47
46 public boolean containsRelationalView(RelationView<?> relationalKey) { 48 public boolean containsRelationView(AnyRelationView relationalKey) {
47 return view2Buffers.containsKey(relationalKey); 49 return view2Buffers.containsKey(relationalKey);
48 } 50 }
49 51
@@ -58,7 +60,7 @@ public class ModelUpdateListener {
58 } 60 }
59 } 61 }
60 62
61 public void removeListener(IInputKey key, RelationView<?> relationView, ITuple seed, 63 public void removeListener(IInputKey key, AnyRelationView relationView, ITuple seed,
62 IQueryRuntimeContextListener listener) { 64 IQueryRuntimeContextListener listener) {
63 if (view2Buffers.containsKey(relationView)) { 65 if (view2Buffers.containsKey(relationView)) {
64 Set<ViewUpdateBuffer<?>> buffers = this.view2Buffers.get(relationView); 66 Set<ViewUpdateBuffer<?>> buffers = this.view2Buffers.get(relationView);
@@ -92,8 +94,9 @@ public class ModelUpdateListener {
92 public boolean hasChanges() { 94 public boolean hasChanges() {
93 for (var bufferCollection : this.view2Buffers.values()) { 95 for (var bufferCollection : this.view2Buffers.values()) {
94 for (ViewUpdateBuffer<?> buffer : bufferCollection) { 96 for (ViewUpdateBuffer<?> buffer : bufferCollection) {
95 if (buffer.hasChanges()) 97 if (buffer.hasChanges()) {
96 return true; 98 return true;
99 }
97 } 100 }
98 } 101 }
99 return false; 102 return false;
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ViewUpdateTranslator.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ViewUpdateTranslator.java
index 74d0b366..c324c84a 100644
--- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ViewUpdateTranslator.java
+++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/viewupdate/ViewUpdateTranslator.java
@@ -4,8 +4,9 @@ import org.eclipse.viatra.query.runtime.matchers.context.IInputKey;
4import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener; 4import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener;
5import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; 5import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple;
6import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; 6import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples;
7import tools.refinery.store.tuple.Tuple; 7import tools.refinery.store.query.view.AnyRelationView;
8import tools.refinery.store.query.view.RelationView; 8import tools.refinery.store.query.view.RelationView;
9import tools.refinery.store.tuple.Tuple;
9 10
10import java.util.Objects; 11import java.util.Objects;
11 12
@@ -27,7 +28,7 @@ public class ViewUpdateTranslator<D> {
27 this.listener = listener; 28 this.listener = listener;
28 } 29 }
29 30
30 public boolean equals(IInputKey wrappedKey, RelationView<?> relationView, ITuple seed, 31 public boolean equals(IInputKey wrappedKey, AnyRelationView relationView, ITuple seed,
31 IQueryRuntimeContextListener listener) { 32 IQueryRuntimeContextListener listener) {
32 return this.wrappedKey == wrappedKey && key == relationView && filter.equals(seed) && this.listener == listener; 33 return this.wrappedKey == wrappedKey && key == relationView && filter.equals(seed) && this.listener == listener;
33 } 34 }