X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fflag%2FFlagUtil.java;h=2a0e14b933aa7fad2c5c2364fd07b3c6f898796e;hp=27dc9e307e69038ac40daa53f5c24dc8057b412e;hb=bd5bc6e45f700e755b61bd112631796631330ecb;hpb=7684baeb8bc7963700676af20db6f4a860581e46 diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/flag/FlagUtil.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/flag/FlagUtil.java index 27dc9e307..2a0e14b93 100644 --- a/bundles/org.simantics.diagram/src/org/simantics/diagram/flag/FlagUtil.java +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/flag/FlagUtil.java @@ -28,6 +28,7 @@ import org.simantics.db.common.utils.NameUtils; import org.simantics.db.common.utils.OrderedSetUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.db.exception.ServiceException; +import org.simantics.db.function.DbBiFunction; import org.simantics.db.function.DbConsumer; import org.simantics.db.layer0.util.RemoverUtil; import org.simantics.db.layer0.variable.Variable; @@ -130,6 +131,21 @@ public final class FlagUtil { return count; } + public static int forCounterparts(ReadGraph graph, Resource flag, DbBiFunction procedure) throws DatabaseException { + DiagramResource DIA = DiagramResource.getInstance(graph); + int count = 0; + for (Resource connectionJoin : graph.getObjects(flag, DIA.FlagIsJoinedBy)) { + for (Resource otherFlag : graph.getObjects(connectionJoin, DIA.JoinsFlag)) { + if (!flag.equals(otherFlag)) { + if (!procedure.apply(connectionJoin, otherFlag)) + return ++count; + ++count; + } + } + } + return count; + } + /** * Returns all flags that are joined with the given flag including the flag given as parameter. */