blob: ee7f006026865720bea68658c1a56fb57560903e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package hu.bme.mit.inf.dslreasoner.domains.satellite.mdeo
import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SatelliteQueries
import java.util.WeakHashMap
import org.eclipse.emf.ecore.EObject
import org.eclipse.viatra.query.runtime.api.AdvancedViatraQueryEngine
import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine
import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions
import org.eclipse.viatra.query.runtime.emf.EMFScope
import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchHints
class LocalSearchEngineManager {
public static val INSTANCE = new LocalSearchEngineManager
val WeakHashMap<EObject, ViatraQueryEngine> engineMap = new WeakHashMap
private new() {
}
def getEngine(EObject eObject) {
engineMap.computeIfAbsent(eObject) [
val scope = new EMFScope(it)
val localSearchHints = LocalSearchHints.^default.build
val options = ViatraQueryEngineOptions.defineOptions.withDefaultHint(localSearchHints).withDefaultBackend(
localSearchHints.queryBackendFactory).build
val engine = AdvancedViatraQueryEngine.on(scope, options)
SatelliteQueries.instance.prepare(engine)
engine
]
}
}
|