Sync git svn branch with SVN repository r33324.
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / flag / FlagUtil.java
index 27dc9e307e69038ac40daa53f5c24dc8057b412e..2a0e14b933aa7fad2c5c2364fd07b3c6f898796e 100644 (file)
@@ -28,6 +28,7 @@ import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.common.utils.OrderedSetUtils;\r
 import org.simantics.db.exception.DatabaseException;\r
 import org.simantics.db.exception.ServiceException;\r
+import org.simantics.db.function.DbBiFunction;\r
 import org.simantics.db.function.DbConsumer;\r
 import org.simantics.db.layer0.util.RemoverUtil;\r
 import org.simantics.db.layer0.variable.Variable;\r
@@ -130,6 +131,21 @@ public final class FlagUtil {
         return count;\r
     }\r
 \r
+    public static int forCounterparts(ReadGraph graph, Resource flag, DbBiFunction<Resource, Resource, Boolean> procedure) throws DatabaseException {\r
+        DiagramResource DIA = DiagramResource.getInstance(graph);\r
+        int count = 0;\r
+        for (Resource connectionJoin : graph.getObjects(flag, DIA.FlagIsJoinedBy)) {\r
+            for (Resource otherFlag : graph.getObjects(connectionJoin, DIA.JoinsFlag)) {\r
+                if (!flag.equals(otherFlag)) {\r
+                    if (!procedure.apply(connectionJoin, otherFlag))\r
+                        return ++count;\r
+                    ++count;\r
+                }\r
+            }\r
+        }\r
+        return count;\r
+    }\r
+\r
     /**\r
      * Returns all flags that are joined with the given flag including the flag given as parameter.\r
      */\r