]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.indexing/src/org/simantics/db/indexing/QueryIndex.java
Index tokenized lowercase versions of name and types for UI searches
[simantics/platform.git] / bundles / org.simantics.db.indexing / src / org / simantics / db / indexing / QueryIndex.java
1 package org.simantics.db.indexing;
2
3 import java.util.Collection;
4 import java.util.Collections;
5 import java.util.Map;
6
7 import org.simantics.db.ReadGraph;
8 import org.simantics.db.Resource;
9 import org.simantics.db.common.primitiverequest.Adapter;
10 import org.simantics.db.common.procedure.adapter.TransientCacheListener;
11 import org.simantics.db.common.request.BinaryRead;
12 import org.simantics.db.exception.DatabaseException;
13 import org.simantics.operation.Layer0X;
14 import org.simantics.scl.runtime.function.Function;
15
16 /**
17  * A (cacheable) query to optimize single index queries for immutable
18  * indexes such as ontologies.
19  */
20 class QueryIndex extends BinaryRead<Resource, String, Collection<Map<String,Object>>> {
21
22         public QueryIndex(Resource index, String filter) {
23                 super(index, filter);
24         }
25
26         @Override
27         public Collection<Map<String,Object>> perform(ReadGraph graph) throws DatabaseException {
28
29                 Layer0X L0X = Layer0X.getInstance(graph);
30
31                 @SuppressWarnings({ "unchecked", "rawtypes" })
32                 Function dependencies = graph.syncRequest(new Adapter(L0X.Dependencies, Function.class), TransientCacheListener.<Function>instance());
33
34                 @SuppressWarnings("unchecked")
35                 Collection<Map<String, Object>> results = (Collection<Map<String, Object>>)dependencies.apply(graph, parameter, parameter2);
36                 if (results == null || results.isEmpty())
37                         return Collections.emptyList();
38
39                 return results;
40
41         }
42
43 }