import org.simantics.db.WriteGraph;\r
import org.simantics.db.common.request.IndexRoot;\r
import org.simantics.db.common.request.WriteRequest;\r
+import org.simantics.db.common.utils.OrderedSetUtils;\r
import org.simantics.db.exception.DatabaseException;\r
import org.simantics.diagram.content.ConnectionUtil;\r
import org.simantics.diagram.content.EdgeResource;\r
Resource r = AdaptionUtils.adaptToSingle(s, Resource.class);\r
if (r == null || !graph.isInstanceOf(r, DIA.Flag))\r
return Collections.emptyList();\r
- Resource counterpart = FlagUtil.getPossibleCounterpart(graph, r);\r
- if (counterpart == null)\r
+ if (!isConnectedToSomething(graph, r))\r
return Collections.emptyList();\r
- if (!FlagUtil.isJoinedInSingleDiagram(graph, r))\r
- return Collections.emptyList();\r
- if (!isConnectedToSomething(graph, r) || !isConnectedToSomething(graph, counterpart))\r
+ Collection<Resource> counterparts = FlagUtil.getCounterparts(graph, r);\r
+ if (counterparts.isEmpty())\r
return Collections.emptyList();\r
+ Collection<Resource> flagDiagrams = OrderedSetUtils.getOwnerLists(graph, r, DIA.Diagram);\r
+ for (Resource counterpart : counterparts) {\r
+ boolean joinedWithinSingleDiagram = !Collections.disjoint(flagDiagrams,\r
+ OrderedSetUtils.getOwnerLists(graph, counterpart, DIA.Diagram));\r
+ if (!joinedWithinSingleDiagram)\r
+ return Collections.emptyList();\r
+ if (!isConnectedToSomething(graph, counterpart))\r
+ return Collections.emptyList();\r
+ }\r
result.add(r);\r
}\r
return result;\r