diff options
Diffstat (limited to 'subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/matchers/backend/IQueryBackend.java')
-rw-r--r-- | subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/matchers/backend/IQueryBackend.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/matchers/backend/IQueryBackend.java b/subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/matchers/backend/IQueryBackend.java new file mode 100644 index 00000000..c85f10a4 --- /dev/null +++ b/subprojects/viatra-runtime/src/main/java/tools/refinery/viatra/runtime/matchers/backend/IQueryBackend.java | |||
@@ -0,0 +1,68 @@ | |||
1 | /******************************************************************************* | ||
2 | * Copyright (c) 2010-2014, Bergmann Gabor, 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.matchers.backend; | ||
10 | |||
11 | import tools.refinery.viatra.runtime.matchers.ViatraQueryRuntimeException; | ||
12 | import tools.refinery.viatra.runtime.matchers.psystem.queries.PQuery; | ||
13 | |||
14 | /** | ||
15 | * Internal interface for a VIATRA query specification. Each query is associated with a pattern. Methods instantiate a matcher | ||
16 | * of the pattern with various parameters. | ||
17 | * | ||
18 | * @author Bergmann Gábor | ||
19 | * @since 0.9 | ||
20 | * @noextend This interface is not intended to be extended by users of the VIATRA framework, and should only be used by the query engine | ||
21 | */ | ||
22 | public interface IQueryBackend { | ||
23 | |||
24 | /** | ||
25 | * @return true iff this backend is incremental, i.e. it caches the results of queries for quick retrieval, | ||
26 | * and can provide update notifications on result set changes. | ||
27 | */ | ||
28 | public boolean isCaching(); | ||
29 | |||
30 | /** | ||
31 | * Returns a result provider for a given query. Repeated calls may return the same instance. | ||
32 | * @throws ViatraQueryRuntimeException | ||
33 | */ | ||
34 | public IQueryResultProvider getResultProvider(PQuery query); | ||
35 | |||
36 | /** | ||
37 | * Returns a result provider for a given query. Repeated calls may return the same instance. | ||
38 | * @param optional hints that may override engine and query defaults (as provided by {@link IQueryBackendHintProvider}). Can be null. | ||
39 | * @throws ViatraQueryRuntimeException | ||
40 | * @since 1.4 | ||
41 | */ | ||
42 | public IQueryResultProvider getResultProvider(PQuery query, QueryEvaluationHint hints); | ||
43 | |||
44 | /** | ||
45 | * Returns an existing result provider for a given query, if it was previously constructed, returns null otherwise. | ||
46 | * Will not construct and initialize new result providers. | ||
47 | */ | ||
48 | public IQueryResultProvider peekExistingResultProvider(PQuery query); | ||
49 | |||
50 | /** | ||
51 | * Propagates all pending updates in this query backend. The implementation of this method is optional, and it | ||
52 | * can be ignored entirely if the backend does not delay updates. | ||
53 | * @since 1.6 | ||
54 | */ | ||
55 | public void flushUpdates(); | ||
56 | |||
57 | /** | ||
58 | * Disposes the query backend. | ||
59 | */ | ||
60 | public abstract void dispose(); | ||
61 | |||
62 | /** | ||
63 | * @return the factory that created this backend, if this functionality is supported | ||
64 | * @since 2.1 | ||
65 | */ | ||
66 | public IQueryBackendFactory getFactory(); | ||
67 | |||
68 | } | ||