]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/request/LinkedFrom.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / request / LinkedFrom.java
1 package org.simantics.db.layer0.request;\r
2 \r
3 import java.util.Collection;\r
4 import java.util.HashSet;\r
5 import java.util.Set;\r
6 \r
7 import org.simantics.db.ReadGraph;\r
8 import org.simantics.db.Resource;\r
9 import org.simantics.db.common.request.ResourceRead;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.layer0.Layer0;\r
12 \r
13 /**\r
14  * @author Tuukka Lehtonen\r
15  * @since 1.25.0\r
16  */\r
17 public class LinkedFrom extends ResourceRead<Set<Resource>> {\r
18 \r
19     public LinkedFrom(Resource resource) {\r
20         super(resource);\r
21     }\r
22 \r
23     @Override\r
24     public Set<Resource> perform(ReadGraph graph) throws DatabaseException {\r
25         Layer0 L0 = Layer0.getInstance(graph);\r
26         HashSet<Resource> result = new HashSet<>();\r
27         Collection<Resource> linkees = graph.getObjects(resource, L0.IsLinkedTo_Inverse);\r
28         result.addAll(linkees);\r
29         for (Resource linkee : linkees) {\r
30             Set<Resource> deep = graph.sync(new LinkedFrom(linkee));\r
31             result.addAll(deep);\r
32         }\r
33         return result;\r
34     }\r
35 \r
36 }\r