1 package org.simantics.db.indexing;
\r
3 import java.util.Collection;
\r
4 import java.util.Collections;
\r
5 import java.util.Map;
\r
7 import org.simantics.db.ReadGraph;
\r
8 import org.simantics.db.Resource;
\r
9 import org.simantics.db.common.primitiverequest.Adapter;
\r
10 import org.simantics.db.common.procedure.adapter.TransientCacheListener;
\r
11 import org.simantics.db.common.request.BinaryRead;
\r
12 import org.simantics.db.exception.DatabaseException;
\r
13 import org.simantics.operation.Layer0X;
\r
14 import org.simantics.scl.runtime.function.Function;
\r
17 * A (cacheable) query to optimize single index queries for immutable
\r
18 * indexes such as ontologies.
\r
20 class QueryIndex extends BinaryRead<Resource, String, Collection<Map<String,Object>>> {
\r
22 public QueryIndex(Resource index, String filter) {
\r
23 super(index, filter);
\r
27 public Collection<Map<String,Object>> perform(ReadGraph graph) throws DatabaseException {
\r
29 Layer0X L0X = Layer0X.getInstance(graph);
\r
31 @SuppressWarnings({ "unchecked", "rawtypes" })
\r
32 Function dependencies = graph.syncRequest(new Adapter(L0X.Dependencies, Function.class), TransientCacheListener.<Function>instance());
\r
34 @SuppressWarnings("unchecked")
\r
35 Collection<Map<String, Object>> results = (Collection<Map<String, Object>>)dependencies.apply(graph, parameter, parameter2);
\r
36 if (results == null || results.isEmpty())
\r
37 return Collections.emptyList();
\r