diff options
Diffstat (limited to 'subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/api/IRunOnceQueryEngine.java')
-rw-r--r-- | subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/api/IRunOnceQueryEngine.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/api/IRunOnceQueryEngine.java b/subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/api/IRunOnceQueryEngine.java new file mode 100644 index 00000000..b625980b --- /dev/null +++ b/subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/api/IRunOnceQueryEngine.java | |||
@@ -0,0 +1,68 @@ | |||
1 | /******************************************************************************* | ||
2 | * Copyright (c) 2010-2013, Abel Hegedus, Istvan Rath and Daniel Varro | ||
3 | * This program and the accompanying materials are made available under the | ||
4 | * terms of the Eclipse Public License v. 2.0 which is available at | ||
5 | * http://www.eclipse.org/legal/epl-v20.html. | ||
6 | * | ||
7 | * SPDX-License-Identifier: EPL-2.0 | ||
8 | *******************************************************************************/ | ||
9 | package tools.refinery.viatra.runtime.api; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | import org.eclipse.emf.common.notify.Notifier; | ||
14 | import tools.refinery.viatra.runtime.base.api.BaseIndexOptions; | ||
15 | import tools.refinery.viatra.runtime.base.api.NavigationHelper; | ||
16 | |||
17 | /** | ||
18 | * A run-once query engine is used to get matches for queries without incremental support. | ||
19 | * Users can create a query engine with a given {@link Notifier} as scope and use a query specification | ||
20 | * to retrieve the current match set with this scope (see {@link #getAllMatches}). | ||
21 | * | ||
22 | * @author Abel Hegedus | ||
23 | * | ||
24 | */ | ||
25 | public interface IRunOnceQueryEngine { | ||
26 | |||
27 | /** | ||
28 | * Returns the set of all matches for the given query in the scope of the engine. | ||
29 | * | ||
30 | * @param querySpecification the query that is evaluated | ||
31 | * @return matches represented as a Match object. | ||
32 | */ | ||
33 | <Match extends IPatternMatch> Collection<Match> getAllMatches( | ||
34 | final IQuerySpecification<? extends ViatraQueryMatcher<Match>> querySpecification); | ||
35 | |||
36 | /** | ||
37 | * @return the scope of pattern matching, i.e. the root of the EMF model tree that this engine is attached to. | ||
38 | */ | ||
39 | Notifier getScope(); | ||
40 | |||
41 | /** | ||
42 | * The base index options specifies how the base index is built, including wildcard mode (defaults to false) and | ||
43 | * dynamic EMF mode (defaults to false). See {@link NavigationHelper} for the explanation of wildcard mode and | ||
44 | * dynamic EMF mode. | ||
45 | * | ||
46 | * <p/> The returned options can be modified in order to affect subsequent calls of {@link #getAllMatches}. | ||
47 | * | ||
48 | * @return the base index options used by the engine. | ||
49 | */ | ||
50 | BaseIndexOptions getBaseIndexOptions(); | ||
51 | |||
52 | /** | ||
53 | * When set to true, the run-once query engine will not dispose it's engine and will resample the values of derived | ||
54 | * features before returning matches if the model changed since the last call. | ||
55 | * | ||
56 | * If the values of derived features may change without any model modification, call {@link #resampleOnNextCall()} | ||
57 | * before subsequent calls of {@link #getAllMatches}. | ||
58 | * | ||
59 | * @param automaticResampling | ||
60 | */ | ||
61 | void setAutomaticResampling(boolean automaticResampling); | ||
62 | |||
63 | /** | ||
64 | * If automatic resampling is enabled and the value of derived features may change without model modifications, | ||
65 | * calling this method will make sure that re-sampling will occur before returning match results. | ||
66 | */ | ||
67 | void resampleOnNextCall(); | ||
68 | } | ||