diff options
Diffstat (limited to 'subprojects/store-query-viatra')
5 files changed, 37 insertions, 5 deletions
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java index d31325f1..6b3be115 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java | |||
@@ -5,14 +5,15 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.query.viatra; | 6 | package tools.refinery.store.query.viatra; |
7 | 7 | ||
8 | import tools.refinery.viatra.runtime.api.ViatraQueryEngineOptions; | ||
9 | import tools.refinery.viatra.runtime.matchers.backend.IQueryBackendFactory; | ||
10 | import tools.refinery.viatra.runtime.matchers.backend.QueryEvaluationHint; | ||
11 | import tools.refinery.store.model.ModelStore; | 8 | import tools.refinery.store.model.ModelStore; |
12 | import tools.refinery.store.query.ModelQueryBuilder; | 9 | import tools.refinery.store.query.ModelQueryBuilder; |
13 | import tools.refinery.store.query.dnf.AnyQuery; | 10 | import tools.refinery.store.query.dnf.AnyQuery; |
14 | import tools.refinery.store.query.dnf.Dnf; | 11 | import tools.refinery.store.query.dnf.Dnf; |
15 | import tools.refinery.store.query.rewriter.DnfRewriter; | 12 | import tools.refinery.store.query.rewriter.DnfRewriter; |
13 | import tools.refinery.viatra.runtime.CancellationToken; | ||
14 | import tools.refinery.viatra.runtime.api.ViatraQueryEngineOptions; | ||
15 | import tools.refinery.viatra.runtime.matchers.backend.IQueryBackendFactory; | ||
16 | import tools.refinery.viatra.runtime.matchers.backend.QueryEvaluationHint; | ||
16 | 17 | ||
17 | import java.util.Collection; | 18 | import java.util.Collection; |
18 | import java.util.function.Function; | 19 | import java.util.function.Function; |
@@ -29,6 +30,8 @@ public interface ViatraModelQueryBuilder extends ModelQueryBuilder { | |||
29 | 30 | ||
30 | ViatraModelQueryBuilder searchBackend(IQueryBackendFactory queryBackendFactory); | 31 | ViatraModelQueryBuilder searchBackend(IQueryBackendFactory queryBackendFactory); |
31 | 32 | ||
33 | ViatraModelQueryBuilder cancellationToken(CancellationToken cancellationToken); | ||
34 | |||
32 | @Override | 35 | @Override |
33 | default ViatraModelQueryBuilder queries(AnyQuery... queries) { | 36 | default ViatraModelQueryBuilder queries(AnyQuery... queries) { |
34 | ModelQueryBuilder.super.queries(queries); | 37 | ModelQueryBuilder.super.queries(queries); |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryAdapterImpl.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryAdapterImpl.java index f1209f69..ad754988 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryAdapterImpl.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryAdapterImpl.java | |||
@@ -18,6 +18,7 @@ import tools.refinery.store.query.viatra.ViatraModelQueryAdapter; | |||
18 | import tools.refinery.store.query.viatra.internal.matcher.FunctionalViatraMatcher; | 18 | import tools.refinery.store.query.viatra.internal.matcher.FunctionalViatraMatcher; |
19 | import tools.refinery.store.query.viatra.internal.matcher.RawPatternMatcher; | 19 | import tools.refinery.store.query.viatra.internal.matcher.RawPatternMatcher; |
20 | import tools.refinery.store.query.viatra.internal.matcher.RelationalViatraMatcher; | 20 | import tools.refinery.store.query.viatra.internal.matcher.RelationalViatraMatcher; |
21 | import tools.refinery.viatra.runtime.CancellationToken; | ||
21 | import tools.refinery.viatra.runtime.api.AdvancedViatraQueryEngine; | 22 | import tools.refinery.viatra.runtime.api.AdvancedViatraQueryEngine; |
22 | import tools.refinery.viatra.runtime.api.GenericQueryGroup; | 23 | import tools.refinery.viatra.runtime.api.GenericQueryGroup; |
23 | import tools.refinery.viatra.runtime.api.IQuerySpecification; | 24 | import tools.refinery.viatra.runtime.api.IQuerySpecification; |
@@ -81,6 +82,10 @@ public class ViatraModelQueryAdapterImpl implements ViatraModelQueryAdapter, Mod | |||
81 | return storeAdapter; | 82 | return storeAdapter; |
82 | } | 83 | } |
83 | 84 | ||
85 | public CancellationToken getCancellationToken() { | ||
86 | return storeAdapter.getCancellationToken(); | ||
87 | } | ||
88 | |||
84 | @Override | 89 | @Override |
85 | public <T> ResultSet<T> getResultSet(Query<T> query) { | 90 | public <T> ResultSet<T> getResultSet(Query<T> query) { |
86 | var canonicalQuery = storeAdapter.getCanonicalQuery(query); | 91 | var canonicalQuery = storeAdapter.getCanonicalQuery(query); |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java index cfdc43ba..bb0630f3 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java | |||
@@ -17,6 +17,7 @@ import tools.refinery.store.query.viatra.ViatraModelQueryBuilder; | |||
17 | import tools.refinery.store.query.viatra.internal.localsearch.FlatCostFunction; | 17 | import tools.refinery.store.query.viatra.internal.localsearch.FlatCostFunction; |
18 | import tools.refinery.store.query.viatra.internal.matcher.RawPatternMatcher; | 18 | import tools.refinery.store.query.viatra.internal.matcher.RawPatternMatcher; |
19 | import tools.refinery.store.query.viatra.internal.pquery.Dnf2PQuery; | 19 | import tools.refinery.store.query.viatra.internal.pquery.Dnf2PQuery; |
20 | import tools.refinery.viatra.runtime.CancellationToken; | ||
20 | import tools.refinery.viatra.runtime.api.IQuerySpecification; | 21 | import tools.refinery.viatra.runtime.api.IQuerySpecification; |
21 | import tools.refinery.viatra.runtime.api.ViatraQueryEngineOptions; | 22 | import tools.refinery.viatra.runtime.api.ViatraQueryEngineOptions; |
22 | import tools.refinery.viatra.runtime.localsearch.matcher.integration.LocalSearchGenericBackendFactory; | 23 | import tools.refinery.viatra.runtime.localsearch.matcher.integration.LocalSearchGenericBackendFactory; |
@@ -35,6 +36,7 @@ public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder<Via | |||
35 | // Use a cost function that ignores the initial (empty) model but allows higher arity input keys. | 36 | // Use a cost function that ignores the initial (empty) model but allows higher arity input keys. |
36 | LocalSearchHintOptions.PLANNER_COST_FUNCTION, new FlatCostFunction() | 37 | LocalSearchHintOptions.PLANNER_COST_FUNCTION, new FlatCostFunction() |
37 | ), (IQueryBackendFactory) null); | 38 | ), (IQueryBackendFactory) null); |
39 | private CancellationToken cancellationToken = CancellationToken.NONE; | ||
38 | private final CompositeRewriter rewriter; | 40 | private final CompositeRewriter rewriter; |
39 | private final Dnf2PQuery dnf2PQuery = new Dnf2PQuery(); | 41 | private final Dnf2PQuery dnf2PQuery = new Dnf2PQuery(); |
40 | private final Set<AnyQuery> queries = new LinkedHashSet<>(); | 42 | private final Set<AnyQuery> queries = new LinkedHashSet<>(); |
@@ -85,6 +87,12 @@ public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder<Via | |||
85 | } | 87 | } |
86 | 88 | ||
87 | @Override | 89 | @Override |
90 | public ViatraModelQueryBuilder cancellationToken(CancellationToken cancellationToken) { | ||
91 | this.cancellationToken = cancellationToken; | ||
92 | return this; | ||
93 | } | ||
94 | |||
95 | @Override | ||
88 | public ViatraModelQueryBuilder queries(Collection<? extends AnyQuery> queries) { | 96 | public ViatraModelQueryBuilder queries(Collection<? extends AnyQuery> queries) { |
89 | checkNotConfigured(); | 97 | checkNotConfigured(); |
90 | this.queries.addAll(queries); | 98 | this.queries.addAll(queries); |
@@ -136,7 +144,7 @@ public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder<Via | |||
136 | validateSymbols(store); | 144 | validateSymbols(store); |
137 | return new ViatraModelQueryStoreAdapterImpl(store, buildEngineOptions(), dnf2PQuery.getSymbolViews(), | 145 | return new ViatraModelQueryStoreAdapterImpl(store, buildEngineOptions(), dnf2PQuery.getSymbolViews(), |
138 | Collections.unmodifiableMap(canonicalQueryMap), Collections.unmodifiableMap(querySpecifications), | 146 | Collections.unmodifiableMap(canonicalQueryMap), Collections.unmodifiableMap(querySpecifications), |
139 | Collections.unmodifiableSet(vacuousQueries)); | 147 | Collections.unmodifiableSet(vacuousQueries), cancellationToken); |
140 | } | 148 | } |
141 | 149 | ||
142 | private ViatraQueryEngineOptions buildEngineOptions() { | 150 | private ViatraQueryEngineOptions buildEngineOptions() { |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryStoreAdapterImpl.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryStoreAdapterImpl.java index 5407ad01..f32e1cc6 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryStoreAdapterImpl.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryStoreAdapterImpl.java | |||
@@ -5,6 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.query.viatra.internal; | 6 | package tools.refinery.store.query.viatra.internal; |
7 | 7 | ||
8 | import tools.refinery.viatra.runtime.CancellationToken; | ||
8 | import tools.refinery.viatra.runtime.api.IQuerySpecification; | 9 | import tools.refinery.viatra.runtime.api.IQuerySpecification; |
9 | import tools.refinery.viatra.runtime.api.ViatraQueryEngineOptions; | 10 | import tools.refinery.viatra.runtime.api.ViatraQueryEngineOptions; |
10 | import tools.refinery.viatra.runtime.matchers.context.IInputKey; | 11 | import tools.refinery.viatra.runtime.matchers.context.IInputKey; |
@@ -26,18 +27,20 @@ public class ViatraModelQueryStoreAdapterImpl implements ViatraModelQueryStoreAd | |||
26 | private final Map<AnyQuery, IQuerySpecification<RawPatternMatcher>> querySpecifications; | 27 | private final Map<AnyQuery, IQuerySpecification<RawPatternMatcher>> querySpecifications; |
27 | private final Set<AnyQuery> vacuousQueries; | 28 | private final Set<AnyQuery> vacuousQueries; |
28 | private final Set<AnyQuery> allQueries; | 29 | private final Set<AnyQuery> allQueries; |
30 | private final CancellationToken cancellationToken; | ||
29 | 31 | ||
30 | ViatraModelQueryStoreAdapterImpl(ModelStore store, ViatraQueryEngineOptions engineOptions, | 32 | ViatraModelQueryStoreAdapterImpl(ModelStore store, ViatraQueryEngineOptions engineOptions, |
31 | Map<AnySymbolView, IInputKey> inputKeys, | 33 | Map<AnySymbolView, IInputKey> inputKeys, |
32 | Map<AnyQuery, AnyQuery> canonicalQueryMap, | 34 | Map<AnyQuery, AnyQuery> canonicalQueryMap, |
33 | Map<AnyQuery, IQuerySpecification<RawPatternMatcher>> querySpecifications, | 35 | Map<AnyQuery, IQuerySpecification<RawPatternMatcher>> querySpecifications, |
34 | Set<AnyQuery> vacuousQueries) { | 36 | Set<AnyQuery> vacuousQueries, CancellationToken cancellationToken) { |
35 | this.store = store; | 37 | this.store = store; |
36 | this.engineOptions = engineOptions; | 38 | this.engineOptions = engineOptions; |
37 | this.inputKeys = inputKeys; | 39 | this.inputKeys = inputKeys; |
38 | this.canonicalQueryMap = canonicalQueryMap; | 40 | this.canonicalQueryMap = canonicalQueryMap; |
39 | this.querySpecifications = querySpecifications; | 41 | this.querySpecifications = querySpecifications; |
40 | this.vacuousQueries = vacuousQueries; | 42 | this.vacuousQueries = vacuousQueries; |
43 | this.cancellationToken = cancellationToken; | ||
41 | var mutableAllQueries = new LinkedHashSet<AnyQuery>(querySpecifications.size() + vacuousQueries.size()); | 44 | var mutableAllQueries = new LinkedHashSet<AnyQuery>(querySpecifications.size() + vacuousQueries.size()); |
42 | mutableAllQueries.addAll(querySpecifications.keySet()); | 45 | mutableAllQueries.addAll(querySpecifications.keySet()); |
43 | mutableAllQueries.addAll(vacuousQueries); | 46 | mutableAllQueries.addAll(vacuousQueries); |
@@ -62,6 +65,10 @@ public class ViatraModelQueryStoreAdapterImpl implements ViatraModelQueryStoreAd | |||
62 | return allQueries; | 65 | return allQueries; |
63 | } | 66 | } |
64 | 67 | ||
68 | public CancellationToken getCancellationToken() { | ||
69 | return cancellationToken; | ||
70 | } | ||
71 | |||
65 | @Override | 72 | @Override |
66 | public <T> Query<T> getCanonicalQuery(Query<T> query) { | 73 | public <T> Query<T> getCanonicalQuery(Query<T> query) { |
67 | // We know that canonical forms of queries do not change output types. | 74 | // We know that canonical forms of queries do not change output types. |
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 d1fa5239..dadab5dd 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 | |||
@@ -5,6 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.query.viatra.internal.context; | 6 | package tools.refinery.store.query.viatra.internal.context; |
7 | 7 | ||
8 | import tools.refinery.viatra.runtime.CancellationToken; | ||
8 | import tools.refinery.viatra.runtime.matchers.context.*; | 9 | import tools.refinery.viatra.runtime.matchers.context.*; |
9 | import tools.refinery.viatra.runtime.matchers.tuple.ITuple; | 10 | import tools.refinery.viatra.runtime.matchers.tuple.ITuple; |
10 | import tools.refinery.viatra.runtime.matchers.tuple.Tuple; | 11 | import tools.refinery.viatra.runtime.matchers.tuple.Tuple; |
@@ -32,10 +33,13 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext { | |||
32 | 33 | ||
33 | private final Model model; | 34 | private final Model model; |
34 | 35 | ||
36 | private final CancellationToken cancellationToken; | ||
37 | |||
35 | RelationalRuntimeContext(ViatraModelQueryAdapterImpl adapter) { | 38 | RelationalRuntimeContext(ViatraModelQueryAdapterImpl adapter) { |
36 | model = adapter.getModel(); | 39 | model = adapter.getModel(); |
37 | metaContext = new RelationalQueryMetaContext(adapter.getStoreAdapter().getInputKeys()); | 40 | metaContext = new RelationalQueryMetaContext(adapter.getStoreAdapter().getInputKeys()); |
38 | modelUpdateListener = new ModelUpdateListener(adapter); | 41 | modelUpdateListener = new ModelUpdateListener(adapter); |
42 | cancellationToken = adapter.getCancellationToken(); | ||
39 | } | 43 | } |
40 | 44 | ||
41 | @Override | 45 | @Override |
@@ -192,4 +196,9 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext { | |||
192 | public void executeAfterTraversal(Runnable runnable) { | 196 | public void executeAfterTraversal(Runnable runnable) { |
193 | runnable.run(); | 197 | runnable.run(); |
194 | } | 198 | } |
199 | |||
200 | @Override | ||
201 | public CancellationToken getCancellationToken() { | ||
202 | return cancellationToken; | ||
203 | } | ||
195 | } | 204 | } |