]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.common/src/org/simantics/db/common/utils/traverser/TraverseQueryBuilder.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / utils / traverser / TraverseQueryBuilder.java
1 package org.simantics.db.common.utils.traverser;\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.Resource;\r
8 \r
9 /**\r
10  * Class for building traverse queries\r
11  *\r
12  * @author toni.kalajainen@semantum.fi\r
13  */\r
14 public class TraverseQueryBuilder {\r
15 \r
16         private final static Resource[] NO_RESOURCES = new Resource[0];\r
17         \r
18     public Set<Resource> startResources = new HashSet<Resource>();\r
19     public Set<Resource> relationsToFollow = new HashSet<Resource>();\r
20     public Set<Resource> instanceOfToFollowTo = new HashSet<Resource>();\r
21     public Set<Resource> instanceOfToAddToResult = new HashSet<Resource>();\r
22     public Set<Resource> inheritedFromToFollowTo = new HashSet<Resource>();\r
23     public Set<Resource> inheritedFromToAddToResult = new HashSet<Resource>();\r
24 \r
25     \r
26     public void setStartResource(Resource r) {\r
27         startResources.clear();\r
28         startResources.add(r);\r
29     }\r
30     \r
31     public void setStartResources(Collection<Resource> r) {\r
32         startResources.clear();\r
33         startResources.addAll(r);\r
34     }\r
35     \r
36     public void addStartResource(Resource r) {\r
37         startResources.add(r);\r
38     }\r
39     \r
40     public void followInstanceOf(Resource r) {\r
41         instanceOfToFollowTo.add(r);\r
42     }\r
43     \r
44     public void followInheritedFrom(Resource r) {\r
45         inheritedFromToFollowTo.add(r);\r
46     }\r
47     \r
48     public void followRelation(Resource r) {\r
49         relationsToFollow.add(r);\r
50     }\r
51     \r
52     public void returnInstanceOf(Resource r) {\r
53         instanceOfToAddToResult.add(r);\r
54     }\r
55 \r
56     public void returnInheritedFrom(Resource r) {\r
57         inheritedFromToAddToResult.add(r);\r
58     }\r
59     \r
60     public void followAndReturnInstanceOf(Resource r) {\r
61         instanceOfToFollowTo.add(r);\r
62         instanceOfToAddToResult.add(r);\r
63     }\r
64     \r
65     public void followAndReturnInheritedFrom(Resource r) {\r
66         inheritedFromToFollowTo.add(r);\r
67         inheritedFromToAddToResult.add(r);\r
68     }\r
69     \r
70     \r
71     public void clear() {\r
72         startResources.clear();\r
73         instanceOfToFollowTo.clear();\r
74         relationsToFollow.clear();\r
75         instanceOfToAddToResult.clear();\r
76     }\r
77     \r
78     public TraverseQuery build() {\r
79         return new TraverseQuery(\r
80                 startResources.toArray( NO_RESOURCES ),\r
81                 instanceOfToFollowTo.toArray( NO_RESOURCES ),\r
82                 relationsToFollow.toArray( NO_RESOURCES ),\r
83                 instanceOfToAddToResult.toArray( NO_RESOURCES ),\r
84                 inheritedFromToFollowTo.toArray( NO_RESOURCES ),\r
85                 inheritedFromToAddToResult.toArray( NO_RESOURCES )\r
86         );\r
87     }\r
88 \r
89         \r
90 }\r