package org.simantics.db.indexing; import java.util.Collection; import java.util.Collections; import java.util.Map; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.primitiverequest.Adapter; import org.simantics.db.common.procedure.adapter.TransientCacheListener; import org.simantics.db.common.request.BinaryRead; import org.simantics.db.exception.DatabaseException; import org.simantics.operation.Layer0X; import org.simantics.scl.runtime.function.Function; /** * A (cacheable) query to optimize single index queries for immutable * indexes such as ontologies. */ class QueryIndex extends BinaryRead>> { public QueryIndex(Resource index, String filter) { super(index, filter); } @Override public Collection> perform(ReadGraph graph) throws DatabaseException { Layer0X L0X = Layer0X.getInstance(graph); @SuppressWarnings({ "unchecked", "rawtypes" }) Function dependencies = graph.syncRequest(new Adapter(L0X.Dependencies, Function.class), TransientCacheListener.instance()); @SuppressWarnings("unchecked") Collection> results = (Collection>)dependencies.apply(graph, parameter, parameter2); if (results == null || results.isEmpty()) return Collections.emptyList(); return results; } }