blob: 18708a37ffba2fa67b2219b3b7deafedd6df6fd9 (
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
32
33
34
35
36
37
38
39
|
package hu.bme.mit.inf.dslreasoner.domains.satellite.mdeo;
import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SatelliteQueries;
import java.util.WeakHashMap;
import java.util.function.Function;
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;
import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint;
@SuppressWarnings("all")
public class LocalSearchEngineManager {
public static final LocalSearchEngineManager INSTANCE = new LocalSearchEngineManager();
private final WeakHashMap<EObject, ViatraQueryEngine> engineMap = new WeakHashMap<EObject, ViatraQueryEngine>();
private LocalSearchEngineManager() {
}
public ViatraQueryEngine getEngine(final EObject eObject) {
final Function<EObject, ViatraQueryEngine> _function = (EObject it) -> {
ViatraQueryEngine _xblockexpression = null;
{
final EMFScope scope = new EMFScope(it);
final QueryEvaluationHint localSearchHints = LocalSearchHints.getDefault().build();
final ViatraQueryEngineOptions options = ViatraQueryEngineOptions.defineOptions().withDefaultHint(localSearchHints).withDefaultBackend(
localSearchHints.getQueryBackendFactory()).build();
final ViatraQueryEngine engine = AdvancedViatraQueryEngine.on(scope, options);
SatelliteQueries.instance().prepare(engine);
_xblockexpression = engine;
}
return _xblockexpression;
};
return this.engineMap.computeIfAbsent(eObject, _function);
}
}
|