X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Ftypicals%2FAvailableSynchronizationRules.java;h=a396d3399ff608ca04a8a2904bdf3e3f58254138;hp=07c8bc2aefbb65eb374a2b2b90f905b9e3dcfbd3;hb=fd452722e97db9cf876f4f03a9e44fe750625a92;hpb=a4c65e93ad56fe4f0e43c9b173a218b31e9a33b2 diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/typicals/AvailableSynchronizationRules.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/typicals/AvailableSynchronizationRules.java index 07c8bc2ae..a396d3399 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/typicals/AvailableSynchronizationRules.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/typicals/AvailableSynchronizationRules.java @@ -36,27 +36,34 @@ public class AvailableSynchronizationRules extends ResourceRead perform(ReadGraph graph) throws DatabaseException { - + Layer0 L0 = Layer0.getInstance(graph); DiagramResource DIA = DiagramResource.getInstance(graph); - ModelingResources MOD = ModelingResources.getInstance(graph); - + Set rules = new HashSet(); - for(Resource element : graph.syncRequest(new ObjectsWithType(resource, L0.ConsistsOf, DIA.Element))) { - for (Resource rule : graph.getObjects(element, MOD.HasTypicalSynchronizationRule)) { - ITypicalSynchronizationRule r = graph.getPossibleAdapter(rule, ITypicalSynchronizationRule.class); - if (r != null) rules.add(rule); - } + tryAddRules(graph, resource, rules); + for (Resource element : graph.syncRequest(new ObjectsWithType(resource, L0.ConsistsOf, DIA.Element))) { + tryAddRules(graph, element, rules); } - - Collection result = new ArrayList(); + + Collection result = new ArrayList<>(); for(Resource rule : rules) { String name = NameUtils.getSafeLabel(graph, rule); result.add(new NamedResource(name, rule)); } - + return result; - + } + + private int tryAddRules(ReadGraph graph, Resource r, Set rules) throws DatabaseException { + ModelingResources MOD = ModelingResources.getInstance(graph); + int count = 0; + for (Resource ruleResource : graph.getObjects(r, MOD.HasTypicalSynchronizationRule)) { + ITypicalSynchronizationRule rule = graph.getPossibleAdapter(ruleResource, ITypicalSynchronizationRule.class); + if (rule != null && rules.add(ruleResource)) + ++count; + } + return count; } } \ No newline at end of file