]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/utils/P3DUtil.java
Plant3D customization
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / utils / P3DUtil.java
index 7ba42b8f9d128d511973507595fee90d9a6d59fa..0d656b054de0e724e72d4592597fa46aa52b4a17 100644 (file)
@@ -23,14 +23,18 @@ import org.simantics.plant3d.scenegraph.controlpoint.PipingRules;
 import org.simantics.plant3d.utils.Item.Type;
 
 public class P3DUtil {
+    
+    public static List<Item> getEquipments() throws DatabaseException {
+        return getEquipments(Plant3D.URIs.Builtin);
+    }
        
-       public static List<Item> getEquipments() throws DatabaseException {
+       public static List<Item> getEquipments(final String libUri) throws DatabaseException {
                return Simantics.getSession().syncRequest(new Read<List<Item>>() {
                        @Override
                        public List<Item> perform(ReadGraph graph) throws DatabaseException {
                                Plant3D p3d = Plant3D.getInstance(graph);
                                Resource project = Simantics.getProject().get();
-                               Resource builtins = graph.getResource(Plant3D.URIs.Builtin);
+                               Resource builtins = graph.getResource(libUri);
                                List<Item> actions = getItems(graph, project,p3d.Equipment);
                                actions.addAll(getItems(graph, builtins,p3d.Equipment));
                                return actions;
@@ -45,26 +49,43 @@ public class P3DUtil {
                        @Override
                        public List<Item> perform(ReadGraph graph) throws DatabaseException {
                                Plant3D p3d = Plant3D.getInstance(graph);
-                               ItemQuery query = new ItemQuery(p3d.Nozzle);
+                               ItemQuery query = new ItemQuery(p3d.Nozzle, Plant3D.URIs.Builtin);
                                return graph.syncRequest(query);
                        }
                });
        }
        
-       private static class ItemQuery implements Read<List<Item>> {
+       public static class ItemQuery implements Read<List<Item>> {
                private Resource type;
-               public ItemQuery(Resource type) {
+               private String libUri;
+               public ItemQuery(Resource type, String libUri) {
                        this.type = type;
+                       this.libUri = libUri;
                }
                
                @Override
                public List<Item> perform(ReadGraph graph) throws DatabaseException {
                        Resource project = Simantics.getProject().get();
-                       Resource builtins = graph.getResource(Plant3D.URIs.Builtin);
+                       Resource builtins = graph.getResource(libUri);
                        List<Item> actions = getItems(graph, project,type);
                        actions.addAll(getItems(graph, builtins,type));
                        return actions;
                }
+               
+               @Override
+               public boolean equals(Object obj) {
+                   if (obj.getClass() != this.getClass())
+                       return false;
+                   ItemQuery other = (ItemQuery)obj;
+                   if (!type.equals(other.type))
+                       return false;
+                   return libUri.equals(other.libUri);
+               }
+               
+               @Override
+               public int hashCode() {
+                   return type.hashCode() + libUri.hashCode();
+               }
        }
        
        public static List<Item> getEnds() throws DatabaseException {
@@ -72,7 +93,7 @@ public class P3DUtil {
                        @Override
                        public List<Item> perform(ReadGraph graph) throws DatabaseException {
                                Plant3D p3d = Plant3D.getInstance(graph);
-                               ItemQuery query = new ItemQuery(p3d.EndComponent);
+                               ItemQuery query = new ItemQuery(p3d.EndComponent, Plant3D.URIs.Builtin);
                                return graph.syncRequest(query);
                        }
                });
@@ -83,7 +104,7 @@ public class P3DUtil {
                        @Override
                        public List<Item> perform(ReadGraph graph) throws DatabaseException {
                                Plant3D p3d = Plant3D.getInstance(graph);
-                               ItemQuery query = new ItemQuery(p3d.TurnComponent);
+                               ItemQuery query = new ItemQuery(p3d.TurnComponent, Plant3D.URIs.Builtin);
                                return graph.syncRequest(query);
                        }
                });
@@ -94,7 +115,7 @@ public class P3DUtil {
                        @Override
                        public List<Item> perform(ReadGraph graph) throws DatabaseException {
                                Plant3D p3d = Plant3D.getInstance(graph);
-                               ItemQuery query = new ItemQuery(p3d.InlineComponent);
+                               ItemQuery query = new ItemQuery(p3d.InlineComponent, Plant3D.URIs.Builtin);
                                return graph.syncRequest(query);
                        }
                });