]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardSessionManager.java
Simulator toolkit enhancements
[simantics/platform.git] / bundles / org.simantics.simulator.toolkit.db / src / org / simantics / simulator / toolkit / db / StandardSessionManager.java
similarity index 85%
rename from bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/StandardSessionManager.java
rename to bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/StandardSessionManager.java
index cdd8e074c404ee4d698878b37eaf7d7478c36eca..62389597a9916ea0509608592ee0bf72f83d740d 100644 (file)
@@ -1,4 +1,4 @@
-package org.simantics.db.layer0;
+package org.simantics.simulator.toolkit.db;
 
 import java.util.Collection;
 import java.util.concurrent.ConcurrentHashMap;
@@ -9,12 +9,14 @@ import org.simantics.db.common.request.ParametrizedPrimitiveRead;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.variable.NodeSupport;
 import org.simantics.db.procedure.Listener;
+import org.simantics.simulator.toolkit.StandardNodeManagerSupport;
+import org.simantics.simulator.toolkit.StandardRealm;
 
-abstract public class StandardSessionManager<Node, Engine extends StandardEngine<Node>> {
+public abstract class StandardSessionManager<Node, Engine extends StandardNodeManagerSupport<Node>> {
 
     private ConcurrentHashMap<String, Listener<StandardRealm<Node,Engine>>> realmListeners = new ConcurrentHashMap<>();
-    private ConcurrentHashMap<String, StandardRealm<Node,Engine>> REALMS = new ConcurrentHashMap<String, StandardRealm<Node,Engine>>(); 
-    private ConcurrentHashMap<String, NodeSupport<Node>> SUPPORTS = new ConcurrentHashMap<String, NodeSupport<Node>>(); 
+    private ConcurrentHashMap<String, StandardRealm<Node,Engine>> REALMS = new ConcurrentHashMap<>(); 
+    private ConcurrentHashMap<String, NodeSupport<Node>> SUPPORTS = new ConcurrentHashMap<>(); 
 
     // Accessing Realms should be done over ParametrizedPrimitveRead for the
     // case if a realm is destroyed and new one is created with the same id than
@@ -28,7 +30,6 @@ abstract public class StandardSessionManager<Node, Engine extends StandardEngine
 
         @Override
         public void register(ReadGraph graph, Listener<StandardRealm<Node, Engine>> procedure) {
-
             StandardRealm<Node, Engine> realm = REALMS.get(parameter);
             if (realm == null) {
                 try {
@@ -37,12 +38,12 @@ abstract public class StandardSessionManager<Node, Engine extends StandardEngine
                     e.printStackTrace();
                 }
             }
-            
+
             if(procedure.isDisposed()) {
                 procedure.execute(realm);
                 return;
             }
-            
+
             Listener<StandardRealm<Node,Engine>> existing = getOrDisposeListener(parameter);
             assert(existing == null);
             realmListeners.put(parameter, procedure);
@@ -56,10 +57,10 @@ abstract public class StandardSessionManager<Node, Engine extends StandardEngine
             return realm;
         }
     }
-    
+
     protected StandardSessionManager() {
     }
-    
+
     private Listener<StandardRealm<Node,Engine>> getOrDisposeListener(String key) {
         Listener<StandardRealm<Node,Engine>> listener = realmListeners.get(key);
         if(listener != null) {
@@ -71,7 +72,7 @@ abstract public class StandardSessionManager<Node, Engine extends StandardEngine
         }
         return null;
     }
-    
+
     private void modifyRealms(String key, StandardRealm<Node,Engine> realm) {
         if(realm != null) {
             REALMS.put(key, realm);
@@ -88,25 +89,25 @@ abstract public class StandardSessionManager<Node, Engine extends StandardEngine
 
     public NodeSupport<Node> getOrCreateNodeSupport(ReadGraph graph, String id) throws DatabaseException {
         synchronized(SUPPORTS) {
-               NodeSupport<Node> result = SUPPORTS.get(id);
-               if(result == null) {
-                       StandardRealm<Node,Engine> realm = getOrCreateRealm(graph, id);
-                       result = new NodeSupport<Node>(realm.getNodeManager());
-                       SUPPORTS.put(id, result);
-               }
-               return result;
+            NodeSupport<Node> result = SUPPORTS.get(id);
+            if(result == null) {
+                StandardRealm<Node,Engine> realm = getOrCreateRealm(graph, id);
+                result = new NodeSupport<Node>(realm.getNodeManager());
+                SUPPORTS.put(id, result);
+            }
+            return result;
         }
     }
-    
+
     public StandardRealm<Node,Engine> getOrCreateRealm(ReadGraph graph, String id) throws DatabaseException {
         synchronized(REALMS) {
             return graph.syncRequest(new RealmRequest(id));
         }
     }
-    
+
     protected abstract Engine createEngine(ReadGraph graph, String id) throws DatabaseException;
     protected abstract StandardRealm<Node,Engine> createRealm(Engine engine, String id);
-    
+
     public void removeRealm(WriteGraph graph, String id) throws DatabaseException {
         modifyRealms(id, null);
         // remove listeners from this realm
@@ -116,7 +117,7 @@ abstract public class StandardSessionManager<Node, Engine extends StandardEngine
         if (support != null)
             support.dispose();
     }
-    
+
     public Collection<String> getRealms() {
         return REALMS.keySet();
     }