]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/typicals/AvailableSynchronizationRules.java
Sync git svn branch with SVN repository r33203.
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / typicals / AvailableSynchronizationRules.java
index 07c8bc2aefbb65eb374a2b2b90f905b9e3dcfbd3..a396d3399ff608ca04a8a2904bdf3e3f58254138 100644 (file)
@@ -36,27 +36,34 @@ public class AvailableSynchronizationRules extends ResourceRead<Collection<Named
        @Override\r
        public Collection<NamedResource> perform(ReadGraph graph)\r
                        throws DatabaseException {\r
-               \r
+\r
                Layer0 L0 = Layer0.getInstance(graph);\r
                DiagramResource DIA = DiagramResource.getInstance(graph);\r
-               ModelingResources MOD = ModelingResources.getInstance(graph);\r
-               \r
+\r
                Set<Resource> rules = new HashSet<Resource>();\r
-               for(Resource element : graph.syncRequest(new ObjectsWithType(resource, L0.ConsistsOf, DIA.Element))) {\r
-                       for (Resource rule : graph.getObjects(element, MOD.HasTypicalSynchronizationRule)) {\r
-                               ITypicalSynchronizationRule r = graph.getPossibleAdapter(rule, ITypicalSynchronizationRule.class);\r
-                               if (r != null) rules.add(rule);\r
-                       }\r
+               tryAddRules(graph, resource, rules);\r
+               for (Resource element : graph.syncRequest(new ObjectsWithType(resource, L0.ConsistsOf, DIA.Element))) {\r
+                       tryAddRules(graph, element, rules);\r
                }\r
-               \r
-               Collection<NamedResource> result = new ArrayList<NamedResource>();\r
+\r
+               Collection<NamedResource> result = new ArrayList<>();\r
                for(Resource rule : rules) {\r
                        String name = NameUtils.getSafeLabel(graph, rule);\r
                        result.add(new NamedResource(name, rule));\r
                }\r
-               \r
+\r
                return result;\r
-               \r
+       }\r
+\r
+       private int tryAddRules(ReadGraph graph, Resource r, Set<Resource> rules) throws DatabaseException {\r
+               ModelingResources MOD = ModelingResources.getInstance(graph);\r
+               int count = 0;\r
+               for (Resource ruleResource : graph.getObjects(r, MOD.HasTypicalSynchronizationRule)) {\r
+                       ITypicalSynchronizationRule rule = graph.getPossibleAdapter(ruleResource, ITypicalSynchronizationRule.class);\r
+                       if (rule != null && rules.add(ruleResource))\r
+                               ++count;\r
+               }\r
+               return count;\r
        }\r
 \r
 }
\ No newline at end of file