]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/AsyncReadEntry.java
Generate parts of db client query code
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / query / AsyncReadEntry.java
index 96e2fc15800d978d395631d8422d968e92adc715..767a82bd5644e8759a282b8820c49b570a8fdd60 100644 (file)
 package org.simantics.db.impl.query;
 
 import org.simantics.db.AsyncReadGraph;
+import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.impl.DebugPolicy;
 import org.simantics.db.impl.graph.ReadGraphImpl;
 import org.simantics.db.procedure.AsyncProcedure;
 import org.simantics.db.request.AsyncRead;
 
-final public class AsyncReadEntry<T> extends CacheEntryBase {
+final public class AsyncReadEntry<T> extends CacheEntryBase<AsyncProcedure<T>> {
 
     protected AsyncRead<T> request;
 
-    public AsyncReadEntry(AsyncRead<T> request) {
+    AsyncReadEntry(AsyncRead<T> request) {
        this.request = request;
        if(DebugPolicy.QUERY_STATE) System.out.println("[QUERY STATE]: created " + this);
     }
@@ -39,31 +40,17 @@ final public class AsyncReadEntry<T> extends CacheEntryBase {
     @Override
     public void discard() {
        super.discard();
-       //request = null;
        setResult(null);
     }
     
     final public void addOrSet(AsyncReadGraph graph, Object item) {
 
        assert(isPending());
-        
-//        ArrayList<AsyncProcedure<T>> p = null;
 
         synchronized(this) {
-               
             setResult(item);
                setReady();
-//            p = procs;
-//            procs = null;
-            
         }
-
-//        if(p != null)
-//            for(AsyncProcedure<T> proc : p) {
-//             proc.execute(graph, (T)item);
-////                proc.first.execute(graph, (T)item);
-////                proc.second.dec();
-//            }
         
     }
     
@@ -71,21 +58,10 @@ final public class AsyncReadEntry<T> extends CacheEntryBase {
     public void except(AsyncReadGraph graph, Throwable t) {
        
        assert(isPending());
-        
-//        ArrayList<AsyncProcedure<T>> p = null;
 
         synchronized(this) {
-               
             except(t);
-////            p = procs;
-//            procs = null;
-            
         }
-
-//        if(p != null)
-//            for(AsyncProcedure<T> proc : p) {
-//             proc.exception(graph, t);
-//            }
        
     }
     
@@ -96,15 +72,11 @@ final public class AsyncReadEntry<T> extends CacheEntryBase {
         return new Query() {
 
                        @Override
-                       public void recompute(ReadGraphImpl graph, Object provider, CacheEntry entry) {
-                               
-                               QueryProcessor qp = (QueryProcessor)provider;
-
-                               final ReadGraphImpl parentGraph = ReadGraphImpl.forRecompute(entry, qp); 
+                       public void recompute(ReadGraphImpl graph) {
 
                                try {
 
-                                   request.perform(parentGraph , new AsyncProcedure<T>() {
+                                   request.perform(graph , new AsyncProcedure<T>() {
 
                         @Override
                         public void execute(AsyncReadGraph graph, T result) {
@@ -126,7 +98,7 @@ final public class AsyncReadEntry<T> extends CacheEntryBase {
 
                        @Override
                        public void removeEntry(QueryProcessor qp) {
-                       qp.cache.asyncReadMap.remove(request);
+                       qp.cache.remove(AsyncReadEntry.this);
                        }
 
                        @Override
@@ -145,10 +117,9 @@ final public class AsyncReadEntry<T> extends CacheEntryBase {
         
     }
 
-       public Object performFromCache(ReadGraphImpl graph, Object provider, Object procedure) {
+    @Override
+       public Object performFromCache(ReadGraphImpl graph, AsyncProcedure<T> proc) {
                
-        AsyncProcedure<T> proc = (AsyncProcedure<T>)procedure;
-
            if(isExcepted()) {
             
             try {
@@ -171,6 +142,11 @@ final public class AsyncReadEntry<T> extends CacheEntryBase {
            
        }
 
+    @Override
+    public Object compute(ReadGraphImpl graph, AsyncProcedure<T> procedure) throws DatabaseException {
+       return graph.processor.cache.performQuery(graph, request, this, procedure);
+    }
+    
        @Override
        public String toString() {
                if(isDiscarded()) return "DISCARDED " + request.toString();