diff options
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.java | 13 |
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; | |||
3 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | 3 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; |
4 | import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener; | 4 | import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener; |
5 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; | 5 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; |
6 | import tools.refinery.store.model.Model; | 6 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; |
7 | import tools.refinery.store.query.view.AnyRelationView; | 7 | import tools.refinery.store.query.view.AnyRelationView; |
8 | import tools.refinery.store.query.view.RelationView; | 8 | import tools.refinery.store.query.view.RelationView; |
9 | 9 | ||
10 | import java.util.Collection; | ||
11 | import java.util.HashMap; | 10 | import java.util.HashMap; |
12 | import java.util.Map; | 11 | import java.util.Map; |
13 | 12 | ||
14 | public class ModelUpdateListener { | 13 | public 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); |