aboutsummaryrefslogtreecommitdiffstats
path: root/store/src/main/java/org/eclipse/viatra/solver/data/query/RelationalScope.java
diff options
context:
space:
mode:
Diffstat (limited to 'store/src/main/java/org/eclipse/viatra/solver/data/query/RelationalScope.java')
-rw-r--r--store/src/main/java/org/eclipse/viatra/solver/data/query/RelationalScope.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/store/src/main/java/org/eclipse/viatra/solver/data/query/RelationalScope.java b/store/src/main/java/org/eclipse/viatra/solver/data/query/RelationalScope.java
new file mode 100644
index 00000000..97b33935
--- /dev/null
+++ b/store/src/main/java/org/eclipse/viatra/solver/data/query/RelationalScope.java
@@ -0,0 +1,34 @@
1package org.eclipse.viatra.solver.data.query;
2
3import java.util.Set;
4
5import org.apache.log4j.Logger;
6import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
7import org.eclipse.viatra.query.runtime.api.scope.IEngineContext;
8import org.eclipse.viatra.query.runtime.api.scope.IIndexingErrorListener;
9import org.eclipse.viatra.query.runtime.api.scope.QueryScope;
10import org.eclipse.viatra.solver.data.model.Model;
11import org.eclipse.viatra.solver.data.model.Tuple;
12import org.eclipse.viatra.solver.data.query.internal.RelationUpdateListener;
13import org.eclipse.viatra.solver.data.query.internal.RelationalEngineContext;
14import org.eclipse.viatra.solver.data.query.view.RelationView;
15
16public class RelationalScope extends QueryScope{
17 private final Model model;
18 private final RelationUpdateListener updateListener;
19
20 public RelationalScope(Model model, Set<RelationView<?>> relationViews) {
21 this.model = model;
22 updateListener = new RelationUpdateListener(relationViews);
23 }
24
25 public <D> void processUpdate(RelationView<D> relationView, Tuple key, D oldValue, D newValue) {
26 updateListener.processChange(relationView, key, oldValue, newValue);
27 }
28
29 @Override
30 protected IEngineContext createEngineContext(ViatraQueryEngine engine, IIndexingErrorListener errorListener,
31 Logger logger) {
32 return new RelationalEngineContext(model, updateListener);
33 }
34}