]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.indexing/src/org/simantics/db/indexing/QueryIndex.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.indexing / src / org / simantics / db / indexing / QueryIndex.java
1 package org.simantics.db.indexing;\r
2 \r
3 import java.util.Collection;\r
4 import java.util.Collections;\r
5 import java.util.Map;\r
6 \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
15 \r
16 /**\r
17  * A (cacheable) query to optimize single index queries for immutable\r
18  * indexes such as ontologies.\r
19  */\r
20 class QueryIndex extends BinaryRead<Resource, String, Collection<Map<String,Object>>> {\r
21 \r
22         public QueryIndex(Resource index, String filter) {\r
23                 super(index, filter);\r
24         }\r
25 \r
26         @Override\r
27         public Collection<Map<String,Object>> perform(ReadGraph graph) throws DatabaseException {\r
28 \r
29                 Layer0X L0X = Layer0X.getInstance(graph);\r
30 \r
31                 @SuppressWarnings({ "unchecked", "rawtypes" })\r
32                 Function dependencies = graph.syncRequest(new Adapter(L0X.Dependencies, Function.class), TransientCacheListener.<Function>instance());\r
33 \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
38 \r
39                 return results;\r
40 \r
41         }\r
42 \r
43 }