--- /dev/null
+package org.simantics.diagram.profile.request;\r
+\r
+import java.util.Collection;\r
+import java.util.HashSet;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.ResourceRead;\r
+import org.simantics.db.common.utils.ListUtils;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.diagram.stubs.DiagramResource;\r
+import org.simantics.scenegraph.profile.ProfileUtils;\r
+\r
+public class ReferencedProfileEntries extends ResourceRead<Collection<Resource>> {\r
+\r
+ public ReferencedProfileEntries(Resource part) {\r
+ super(part);\r
+ }\r
+\r
+ public HashSet<Resource> process(ReadGraph graph, Resource resource, HashSet<Resource> result) throws DatabaseException {\r
+\r
+ DiagramResource DIA = DiagramResource.getInstance(graph);\r
+ \r
+ if(graph.isInstanceOf(resource, DIA.Profile)) {\r
+\r
+ for(Resource child : ProfileUtils.getProfileChildren(graph, resource)) {\r
+ process(graph, child, result);\r
+ }\r
+ \r
+ } else if(graph.isInstanceOf(resource, DIA.ProfileEntry)) {\r
+ \r
+ result.add(resource);\r
+\r
+ }\r
+ \r
+ return result;\r
+ \r
+ }\r
+ \r
+ @Override\r
+ public Collection<Resource> perform(ReadGraph graph) throws DatabaseException {\r
+ return process(graph, resource, new HashSet<Resource>());\r
+ }\r
+ \r
+}\r