-package org.simantics.structural2.internal.queries;\r
-\r
-import java.util.Collection;\r
-import java.util.Collections;\r
-import java.util.HashSet;\r
-import java.util.Set;\r
-\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.Statement;\r
-import org.simantics.db.common.request.ResourceRead2;\r
-import org.simantics.db.common.utils.NameUtils;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.structural.stubs.StructuralResource2;\r
-import org.simantics.structural2.queries.Terminal;\r
-import org.simantics.structural2.utils.StructuralUtils;\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- */\r
-public class ConnectedTo extends ResourceRead2<Set<Terminal>> {\r
-\r
- private static final boolean DEBUG = false;\r
-\r
- public ConnectedTo(Resource component, Resource connectionPoint) {\r
- super(component, connectionPoint);\r
- }\r
-\r
- @Override\r
- public Set<Terminal> perform(ReadGraph graph) throws DatabaseException {\r
- if (DEBUG)\r
- System.out.println("connectedTo(" + NameUtils.getSafeName(graph, resource) + ", " + NameUtils.getSafeName(graph, resource2) + ")");\r
-\r
- Collection<Resource> connections = graph.getObjects(resource, resource2);\r
- if (connections.isEmpty())\r
- return Collections.emptySet();\r
-\r
- Set<Resource> reachableConnections = new HashSet<Resource>();\r
- for (Resource connection : connections) {\r
- reachableConnections.addAll(StructuralUtils.getRelatedConnections(graph, connection));\r
- }\r
-\r
- StructuralResource2 sr = StructuralResource2.getInstance(graph);\r
-\r
- Set<Terminal> connectedTo = new HashSet<Terminal>();\r
-\r
- for (Resource connection : reachableConnections) {\r
- if (DEBUG)\r
- System.out.println(" checking connection: " + NameUtils.getSafeName(graph, connection));\r
-\r
- for (Statement stm : graph.getStatements(connection, sr.Connects)) {\r
- Resource connectionPoint2 = graph.getInverse(stm.getPredicate());\r
- if (resource2.equals(connectionPoint2) && resource.equals(stm.getObject()))\r
- continue;\r
-\r
- if (DEBUG)\r
- System.out.println(" connected to (" + NameUtils.getSafeName(graph, stm.getObject()) + ", " + NameUtils.getSafeName(graph, connectionPoint2) + ")");\r
-\r
- connectedTo.add(new Terminal(stm.getObject(), connectionPoint2));\r
- }\r
- }\r
-\r
- return connectedTo;\r
- }\r
-\r
-}\r
+package org.simantics.structural2.internal.queries;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.Statement;
+import org.simantics.db.common.request.ResourceRead2;
+import org.simantics.db.common.utils.NameUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.structural.stubs.StructuralResource2;
+import org.simantics.structural2.queries.Terminal;
+import org.simantics.structural2.utils.StructuralUtils;
+
+/**
+ * @author Tuukka Lehtonen
+ */
+public class ConnectedTo extends ResourceRead2<Set<Terminal>> {
+
+ private static final boolean DEBUG = false;
+
+ public ConnectedTo(Resource component, Resource connectionPoint) {
+ super(component, connectionPoint);
+ }
+
+ @Override
+ public Set<Terminal> perform(ReadGraph graph) throws DatabaseException {
+ if (DEBUG)
+ System.out.println("connectedTo(" + NameUtils.getSafeName(graph, resource) + ", " + NameUtils.getSafeName(graph, resource2) + ")");
+
+ Collection<Resource> connections = graph.getObjects(resource, resource2);
+ if (connections.isEmpty())
+ return Collections.emptySet();
+
+ Set<Resource> reachableConnections = new HashSet<Resource>();
+ for (Resource connection : connections) {
+ reachableConnections.addAll(StructuralUtils.getRelatedConnections(graph, connection));
+ }
+
+ StructuralResource2 sr = StructuralResource2.getInstance(graph);
+
+ Set<Terminal> connectedTo = new HashSet<Terminal>();
+
+ for (Resource connection : reachableConnections) {
+ if (DEBUG)
+ System.out.println(" checking connection: " + NameUtils.getSafeName(graph, connection));
+
+ for (Statement stm : graph.getStatements(connection, sr.Connects)) {
+ Resource connectionPoint2 = graph.getInverse(stm.getPredicate());
+ if (resource2.equals(connectionPoint2) && resource.equals(stm.getObject()))
+ continue;
+
+ if (DEBUG)
+ System.out.println(" connected to (" + NameUtils.getSafeName(graph, stm.getObject()) + ", " + NameUtils.getSafeName(graph, connectionPoint2) + ")");
+
+ connectedTo.add(new Terminal(stm.getObject(), connectionPoint2));
+ }
+ }
+
+ return connectedTo;
+ }
+
+}