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