aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java')
-rw-r--r--subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java13
1 files changed, 7 insertions, 6 deletions
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java
index 1ae3daa7..8a467066 100644
--- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java
+++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java
@@ -3,26 +3,27 @@ package tools.refinery.store.query.viatra.internal.update;
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.Model; 6import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl;
7import tools.refinery.store.query.view.AnyRelationView; 7import tools.refinery.store.query.view.AnyRelationView;
8import tools.refinery.store.query.view.RelationView; 8import tools.refinery.store.query.view.RelationView;
9 9
10import java.util.Collection;
11import java.util.HashMap; 10import java.util.HashMap;
12import java.util.Map; 11import java.util.Map;
13 12
14public class ModelUpdateListener { 13public class ModelUpdateListener {
15 private final Map<AnyRelationView, RelationViewUpdateListener<?>> relationViewUpdateListeners; 14 private final Map<AnyRelationView, RelationViewUpdateListener<?>> relationViewUpdateListeners;
16 15
17 public ModelUpdateListener(Model model, Collection<AnyRelationView> relationViews) { 16 public ModelUpdateListener(ViatraModelQueryAdapterImpl adapter) {
17 var relationViews = adapter.getStoreAdapter().getInputKeys().keySet();
18 relationViewUpdateListeners = new HashMap<>(relationViews.size()); 18 relationViewUpdateListeners = new HashMap<>(relationViews.size());
19 for (var relationView : relationViews) { 19 for (var relationView : relationViews) {
20 registerView(model, (RelationView<?>) relationView); 20 registerView(adapter, (RelationView<?>) relationView);
21 } 21 }
22 } 22 }
23 23
24 private <T> void registerView(Model model, RelationView<T> relationView) { 24 private <T> void registerView(ViatraModelQueryAdapterImpl adapter, RelationView<T> relationView) {
25 var listener = RelationViewUpdateListener.of(relationView); 25 var listener = RelationViewUpdateListener.of(adapter, relationView);
26 var model = adapter.getModel();
26 var interpretation = model.getInterpretation(relationView.getSymbol()); 27 var interpretation = model.getInterpretation(relationView.getSymbol());
27 interpretation.addListener(listener, true); 28 interpretation.addListener(listener, true);
28 relationViewUpdateListeners.put(relationView, listener); 29 relationViewUpdateListeners.put(relationView, listener);