]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/utils/ComponentUtils.java
Enable model loading using an existing transaction.
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / utils / ComponentUtils.java
index c20cf92102a2262a7429c8b41fc7fffda3484af2..2cef7060c14ede3b748ddb821146d26d8bc6ecdb 100644 (file)
@@ -11,6 +11,7 @@ import javax.vecmath.Vector3d;
 
 import org.simantics.Simantics;
 import org.simantics.db.ReadGraph;
+import org.simantics.db.RequestProcessor;
 import org.simantics.db.Resource;
 import org.simantics.db.common.request.ReadRequest;
 import org.simantics.db.common.utils.NameUtils;
@@ -32,34 +33,41 @@ import org.simantics.plant3d.scenegraph.TurnComponent;
 import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint;
 import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint.Direction;
 import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint.PositionType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.simantics.plant3d.scenegraph.controlpoint.PipingRules;
 
 public class ComponentUtils {
 
+       private final static Logger LOGGER = LoggerFactory.getLogger(ComponentUtils.class);
        
        private static Map<String,Class<? extends PipelineComponent>> clazzes = new HashMap<String, Class<? extends PipelineComponent>>();
        private static Map<String,GeometryProvider> providers = new HashMap<String,GeometryProvider>();
        private static Map<String,String> names = new HashMap<String,String>();
        
-       public static void preloadCache() {
-               Simantics.getSession().asyncRequest(new ReadRequest() {
-                       
-                       @Override
-                       public void run(ReadGraph graph) throws DatabaseException {
-                               List<String> types = new ArrayList<String>();
-                               types.add(Plant3D.URIs.Builtin_Straight);
-                               types.add(Plant3D.URIs.Builtin_Elbow);
-                               types.add(Plant3D.URIs.Builtin_ConcentricReducer);
-                               types.add(Plant3D.URIs.Builtin_BranchSplitComponent);
-                               types.add(Plant3D.URIs.Builtin_EccentricReducer);
-                               types.add(Plant3D.URIs.Builtin_Elbow45);
-                               types.add(Plant3D.URIs.Builtin_Elbow90);
+       public static void preloadCache(RequestProcessor session) {
+               try {
+                       session.syncRequest(new ReadRequest() {
                                
-                               for (String typeURI : types) {
-                                       load(graph, typeURI);
+                               @Override
+                               public void run(ReadGraph graph) throws DatabaseException {
+                                       List<String> types = new ArrayList<String>();
+                                       types.add(Plant3D.URIs.Builtin_Straight);
+                                       types.add(Plant3D.URIs.Builtin_Elbow);
+                                       types.add(Plant3D.URIs.Builtin_ConcentricReducer);
+                                       types.add(Plant3D.URIs.Builtin_BranchSplitComponent);
+                                       types.add(Plant3D.URIs.Builtin_EccentricReducer);
+                                       types.add(Plant3D.URIs.Builtin_Elbow45);
+                                       types.add(Plant3D.URIs.Builtin_Elbow90);
+                                       
+                                       for (String typeURI : types) {
+                                               load(graph, typeURI);
+                                       }
                                }
-                       }
-               });
+                       });
+               } catch (DatabaseException e) {
+                       LOGGER.error("ComponentUtils.preloadCache() failed unexpectedly", e);
+               }
        }
        
        private static GeometryProvider getProvider(ReadGraph graph, Resource type) throws DatabaseException {