]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/Statements.java
Merge branch 'private/db-threads' into private/threads-testing
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / query / Statements.java
index 121653b0faa799ec3b4cadc153dfd481ef5a513d..ad4700aa826d6178f9447f81fa8e606ddfd13f0f 100644 (file)
@@ -97,7 +97,7 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
             @Override
             public void execute(ReadGraphImpl graph, int type) throws DatabaseException {
                 if(result == null) {
-                       result = QueryCache.resultAssertedStatements(graph, type, r2, entry, null, NOPT);
+                       result = QueryCache.resultAssertedStatements(graph, type, r2, entry, null);
                 } else {
                        if (first) {
                                IntArray ia = result;
@@ -107,7 +107,7 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
                                }
                                first = false;
                        }
-                       IntArray ia = QueryCache.resultAssertedStatements(graph, type, r2, entry, null, NOPT);
+                       IntArray ia = QueryCache.resultAssertedStatements(graph, type, r2, entry, null);
                        if(ia.data != null) {
                                for(int i = 0;i < ia.sizeOrData ; i+=3) addStatement(ia.data[i],ia.data[i+1],ia.data[i+2]);
                        }
@@ -135,6 +135,10 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
        
     final static private void forSingleAssertion(ReadGraphImpl graph, final int r1, final int r2, final Statements entry, final TripleIntProcedure procedure) throws DatabaseException {
         
+       if(entry != null) {
+               assert(entry.isPending());
+       }
+       
        IntArray map = getAssertionMap(graph, r1, r2, entry);
        if(map == null) {
             if(entry != null) entry.finish(graph, procedure);
@@ -170,7 +174,7 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
                
                        IntSet candidateIs = null;
                        try {
-                               candidateIs = QueryCache.resultSuperTypes(graph, candidateS, entry, null, NOP);
+                               candidateIs = QueryCache.resultSuperTypes(graph, candidateS, entry, null);
                        } catch (DatabaseException e) {
                                if(entry != null) entry.except(e);
                                procedure.exception(graph, e);
@@ -202,7 +206,7 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
                                
                                        IntSet nextIs = null;
                                        try {
-                                               nextIs = QueryCache.resultSuperTypes(graph, nextS, entry, null, NOP);
+                                               nextIs = QueryCache.resultSuperTypes(graph, nextS, entry, null);
                                        } catch (DatabaseException e) {
                                                if(entry != null) entry.except(e);
                                                procedure.exception(graph, e);
@@ -322,7 +326,7 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
             final AtomicBoolean found = new AtomicBoolean(false);
             
             // Note! The dependency is intentionally cut!
-            IntSet direct = QueryCache.resultDirectPredicates(graph, r1, null, null, QueryCache.emptyProcedureDirectPredicates);
+            IntSet direct = QueryCache.resultDirectPredicates(graph, r1, null, null);
             direct.forEach(graph, new SyncIntProcedure() {
                 
                 @Override
@@ -554,7 +558,7 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
         } else {
 
             // Note! The dependency is intentionally cut!
-            IntSet direct = QueryCache.resultDirectPredicates(graph, r1, null, null, QueryCache.emptyProcedureDirectPredicates);
+            IntSet direct = QueryCache.resultDirectPredicates(graph, r1, null, null);
             direct.forEach(graph, new SyncIntProcedure() {
                 
                 @Override
@@ -599,7 +603,7 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
 
                         try {
                             
-                            IntSet result = QueryCache.resultSuperRelations(graph, pred2, entry, null, null);
+                            IntSet result = QueryCache.resultSuperRelations(graph, pred2, entry, null);
                             if(result.contains(r2)) {
 
                                 inc();
@@ -647,15 +651,13 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
         }
         
     }
-    
-    @Override
-    public Object compute(ReadGraphImpl graph, final TripleIntProcedure procedure) throws DatabaseException {
-       computeForEach(graph, r1(), r2(), this, procedure);
-       return getResult();
-    }
        
     public static void computeForEach(ReadGraphImpl graph, final int r1, final int r2, final Statements entry, final TripleIntProcedure procedure) throws DatabaseException {
        
+       if(entry != null) {
+               assert(entry.isPending());
+       }
+       
        QueryCache.runnerRelationInfoQuery(graph, r2, entry, null, new InternalProcedure<RelationInfo>() {
 
             @Override
@@ -690,6 +692,7 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
 
         synchronized(this) {
             setReady();
+            //new Exception(toString() + " is READY").printStackTrace();
         }
 
         IntArray v = (IntArray)getResult();
@@ -761,7 +764,7 @@ final public class Statements extends CollectionBinaryQuery<TripleIntProcedure>
     @Override
     public void recompute(ReadGraphImpl graph) throws DatabaseException {
         
-        compute(graph, new TripleIntProcedureAdapter() {
+        computeForEach(graph, r1(), r2(), this, new TripleIntProcedureAdapter() {
 
             @Override
             public void finished(ReadGraphImpl graph) {