1 package org.simantics.db.common.utils.traverser;
\r
3 import java.util.Collection;
\r
4 import java.util.HashSet;
\r
5 import java.util.Set;
\r
7 import org.simantics.db.Resource;
\r
10 * Class for building traverse queries
\r
12 * @author toni.kalajainen@semantum.fi
\r
14 public class TraverseQueryBuilder {
\r
16 private final static Resource[] NO_RESOURCES = new Resource[0];
\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
26 public void setStartResource(Resource r) {
\r
27 startResources.clear();
\r
28 startResources.add(r);
\r
31 public void setStartResources(Collection<Resource> r) {
\r
32 startResources.clear();
\r
33 startResources.addAll(r);
\r
36 public void addStartResource(Resource r) {
\r
37 startResources.add(r);
\r
40 public void followInstanceOf(Resource r) {
\r
41 instanceOfToFollowTo.add(r);
\r
44 public void followInheritedFrom(Resource r) {
\r
45 inheritedFromToFollowTo.add(r);
\r
48 public void followRelation(Resource r) {
\r
49 relationsToFollow.add(r);
\r
52 public void returnInstanceOf(Resource r) {
\r
53 instanceOfToAddToResult.add(r);
\r
56 public void returnInheritedFrom(Resource r) {
\r
57 inheritedFromToAddToResult.add(r);
\r
60 public void followAndReturnInstanceOf(Resource r) {
\r
61 instanceOfToFollowTo.add(r);
\r
62 instanceOfToAddToResult.add(r);
\r
65 public void followAndReturnInheritedFrom(Resource r) {
\r
66 inheritedFromToFollowTo.add(r);
\r
67 inheritedFromToAddToResult.add(r);
\r
71 public void clear() {
\r
72 startResources.clear();
\r
73 instanceOfToFollowTo.clear();
\r
74 relationsToFollow.clear();
\r
75 instanceOfToAddToResult.clear();
\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