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