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