--- /dev/null
+package org.simantics.db.impl;\r
+\r
+import org.simantics.db.AsyncReadGraph;\r
+import org.simantics.db.RelationInfo;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.impl.query.QueryProcessor;\r
+import org.simantics.db.procedure.AsyncContextMultiProcedure;\r
+\r
+public final class ForEachObjectContextProcedure<C> implements AsyncContextMultiProcedure<C, Resource> {\r
+\r
+ public final int predicateKey;\r
+ public final int[] clusterKey;\r
+ public final int[] predicateReference;\r
+ public final RelationInfo info;\r
+ public final QueryProcessor processor;\r
+ public final ClusterI.CompleteTypeEnum completeType;\r
+ private final AsyncContextMultiProcedure<C, Resource> user;\r
+ \r
+ public ForEachObjectContextProcedure(int predicateKey, RelationInfo info, QueryProcessor processor, AsyncContextMultiProcedure<C, Resource> user) {\r
+ this.predicateKey = predicateKey;\r
+ this.completeType = ClusterTraitsBase.getCompleteTypeFromResourceKey(predicateKey); \r
+ this.info = info;\r
+ this.user = user;\r
+ this.processor = processor;\r
+ this.clusterKey = new int[32*8];\r
+ this.predicateReference = new int[32*8];\r
+ }\r
+ \r
+ @Override\r
+ public void execute(AsyncReadGraph graph, C context, Resource result) {\r
+ user.execute(graph, context, result);\r
+ }\r
+\r
+ @Override\r
+ public void finished(AsyncReadGraph graph) {\r
+ user.finished(graph);\r
+ }\r
+\r
+ @Override\r
+ public void exception(AsyncReadGraph graph, Throwable throwable) {\r
+ user.exception(graph, throwable);\r
+ }\r
+ \r
+}\r