]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/PossibleSuperRelation.java
Multiple reader thread support for db client
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / query / PossibleSuperRelation.java
index 51c6c68d3da238342828090d5a93cca1a0cb2548..d391cec9c9fc44fe4890fd8acc395d249872b37f 100644 (file)
@@ -15,6 +15,8 @@ import gnu.trove.procedure.TIntProcedure;
 import gnu.trove.set.hash.TIntHashSet;
 
 import org.simantics.db.Resource;
+import org.simantics.db.common.utils.Logger;
+import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.impl.graph.ReadGraphImpl;
 import org.simantics.db.procedure.AsyncProcedure;
 import org.simantics.db.procedure.ListenerBase;
@@ -36,15 +38,6 @@ final public class PossibleSuperRelation extends UnaryQuery<IntProcedure> {
 
        }
 
-       @Override
-       public UnaryQuery<IntProcedure> getEntry(QueryProcessor provider) {
-               return null;
-       }
-
-       @Override
-       public void putEntry(QueryProcessor provider) {
-       }
-
        @Override
        final public void removeEntry(QueryProcessor provider) {
        }
@@ -65,22 +58,11 @@ final public class PossibleSuperRelation extends UnaryQuery<IntProcedure> {
                }
 
                public int size() {
-
                        if(single == 0) return 0;
                        if(set == null) return 1;
                        return set.size() + 1;
-
                }
 
-               //        public int[] toArray() {
-                       //            
-                       //            int[] result = Arrays.copyOf(set.toArray(), set.size() + 1);
-                       //            result[set.size()] = single;
-                       //            return result;
-                       //            
-                       //        }
-               //        
-
                public void forEach(TIntProcedure proc) {
                        if(single > 0) proc.execute(single);
                        if(set != null) set.forEach(proc);
@@ -88,20 +70,22 @@ final public class PossibleSuperRelation extends UnaryQuery<IntProcedure> {
 
        }
 
-       @Override
-       public Object computeForEach(final ReadGraphImpl graph, final QueryProcessor provider, final IntProcedure procedure, final boolean store) {
+       //@Override
+       public Object compute(final ReadGraphImpl graph, final IntProcedure procedure) throws DatabaseException {
 
-               provider.querySupport.ensureLoaded(graph, id);
-               int single = provider.querySupport.getSingleSuperrelation(id);
+               QueryProcessor processor = graph.processor;
+               
+               processor.querySupport.ensureLoaded(graph, id);
+               int single = processor.querySupport.getSingleSuperrelation(id);
                if(single > 0) {
                        procedure.execute(graph, single);
                        procedure.finished(graph);
                        return single;
                }
 
-               final int subrelationOf = provider.getSubrelationOf();
+               final int subrelationOf = processor.getSubrelationOf();
 
-               final IntSet result = new IntSet(provider.querySupport);
+               final IntSet result = new IntSet(processor.querySupport);
 
                final class DirectProcedure extends Koss implements IntProcedure, TIntProcedure {
                        @Override
@@ -129,7 +113,7 @@ final public class PossibleSuperRelation extends UnaryQuery<IntProcedure> {
 
                final DirectProcedure directProc = new DirectProcedure();
 
-               provider.querySupport.getObjects(graph, id, subrelationOf, directProc);
+               processor.querySupport.getObjects(graph, id, subrelationOf, directProc);
 
                int size = directProc.size();
 
@@ -149,7 +133,11 @@ final public class PossibleSuperRelation extends UnaryQuery<IntProcedure> {
                                @Override
                                public boolean execute(int arg0) {
 
-                                       procedure.execute(graph, arg0);
+                                       try {
+                                               procedure.execute(graph, arg0);
+                                       } catch (DatabaseException e) {
+                                               Logger.defaultLogError(e);
+                                       }
                                        return true;
 
                                }
@@ -166,17 +154,16 @@ final public class PossibleSuperRelation extends UnaryQuery<IntProcedure> {
 
        @Override
        public String toString() {
-               return "SuperRelations2[" + id + "]";
+               return "PossibleSuperRelation[" + id + "]";
        }
 
        @Override
-       public Object performFromCache(ReadGraphImpl graph, QueryProcessor provider, IntProcedure procedure) {
+       public Object performFromCache(ReadGraphImpl graph, IntProcedure procedure) {
                throw new UnsupportedOperationException();
        }
 
        @Override
-       public void recompute(ReadGraphImpl graph, QueryProcessor provider) {
-
+       public void recompute(ReadGraphImpl graph) {
        }
 
 }