1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.common.lib.search;
20
21 import java.util.Collections;
22 import java.util.Map;
23 import org.apache.cxf.jaxrs.ext.search.client.FiqlSearchConditionBuilder;
24 import org.apache.cxf.jaxrs.ext.search.fiql.FiqlParser;
25
26
27
28
29
30 public class AnyObjectFiqlSearchConditionBuilder extends AbstractFiqlSearchConditionBuilder<
31 AnyObjectProperty, AnyObjectPartialCondition, AnyObjectCompleteCondition> {
32
33 private static final long serialVersionUID = -3248603004632741935L;
34
35 private final String type;
36
37 public AnyObjectFiqlSearchConditionBuilder(final String type) {
38 super();
39 this.type = type;
40 }
41
42 @Override
43 protected Builder newBuilderInstance() {
44 return new Builder(properties);
45 }
46
47 @Override
48 public String query() {
49 return new FiqlSearchConditionBuilder.Builder(Collections.<String, String>emptyMap()).
50 is(SpecialAttr.TYPE.toString()).equalTo(type).query();
51 }
52
53 @Override
54 public AnyObjectProperty is(final String property) {
55 return newBuilderInstance().is(property);
56 }
57
58 public AnyObjectCompleteCondition inGroups(final String group, final String... moreGroups) {
59 return newBuilderInstance().
60 is(SpecialAttr.GROUPS.toString()).
61 inGroups(group, moreGroups);
62 }
63
64 public AnyObjectCompleteCondition notInGroups(final String group, final String... moreGroups) {
65 return newBuilderInstance().
66 is(SpecialAttr.GROUPS.toString()).
67 notInGroups(group, moreGroups);
68 }
69
70 public AnyObjectCompleteCondition inRelationships(final String anyObject, final String... moreAnyObjects) {
71 return newBuilderInstance().
72 is(SpecialAttr.RELATIONSHIPS.toString()).
73 inRelationships(anyObject, moreAnyObjects);
74 }
75
76 public AnyObjectCompleteCondition notInRelationships(final String anyObject, final String... moreAnyObjects) {
77 return newBuilderInstance().
78 is(SpecialAttr.RELATIONSHIPS.toString()).
79 notInRelationships(anyObject, moreAnyObjects);
80 }
81
82 public AnyObjectCompleteCondition inRelationshipTypes(final String type, final String... moreTypes) {
83 return newBuilderInstance().
84 is(SpecialAttr.RELATIONSHIP_TYPES.toString()).
85 inRelationshipTypes(type, moreTypes);
86 }
87
88 public AnyObjectCompleteCondition notInRelationshipTypes(final String type, final String... moreTypes) {
89 return newBuilderInstance().
90 is(SpecialAttr.RELATIONSHIP_TYPES.toString()).
91 notInRelationshipTypes(type, moreTypes);
92 }
93
94 protected class Builder extends AbstractFiqlSearchConditionBuilder.Builder<
95 AnyObjectProperty, AnyObjectPartialCondition, AnyObjectCompleteCondition>
96 implements AnyObjectProperty, AnyObjectPartialCondition, AnyObjectCompleteCondition {
97
98 public Builder(final Map<String, String> properties) {
99 super(properties);
100 }
101
102 public Builder(final Builder parent) {
103 super(parent);
104 }
105
106 @Override
107 public String query() {
108 FiqlSearchConditionBuilder.Builder b = new FiqlSearchConditionBuilder.Builder(this);
109 return b.and(SpecialAttr.TYPE.toString()).equalTo(type).query();
110 }
111
112 @Override
113 public AnyObjectProperty is(final String property) {
114 Builder b = new Builder(this);
115 b.result = property;
116 return b;
117 }
118
119 @Override
120 public AnyObjectCompleteCondition inGroups(final String group, final String... moreGroups) {
121 this.result = SpecialAttr.GROUPS.toString();
122 return condition(FiqlParser.EQ, group, (Object[]) moreGroups);
123 }
124
125 @Override
126 public AnyObjectCompleteCondition notInGroups(final String group, final String... moreGroups) {
127 this.result = SpecialAttr.GROUPS.toString();
128 return condition(FiqlParser.NEQ, group, (Object[]) moreGroups);
129 }
130
131 @Override
132 public AnyObjectCompleteCondition inRelationships(final String anyObject, final String... moreAnyObjects) {
133 this.result = SpecialAttr.RELATIONSHIPS.toString();
134 return condition(FiqlParser.EQ, anyObject, (Object[]) moreAnyObjects);
135 }
136
137 @Override
138 public AnyObjectCompleteCondition notInRelationships(final String group, final String... moreRelationships) {
139 this.result = SpecialAttr.RELATIONSHIPS.toString();
140 return condition(FiqlParser.NEQ, group, (Object[]) moreRelationships);
141 }
142
143 @Override
144 public AnyObjectCompleteCondition inRelationshipTypes(final String type, final String... moreTypes) {
145 this.result = SpecialAttr.RELATIONSHIP_TYPES.toString();
146 return condition(FiqlParser.EQ, type, (Object[]) moreTypes);
147 }
148
149 @Override
150 public AnyObjectCompleteCondition notInRelationshipTypes(final String type, final String... moreTypes) {
151 this.result = SpecialAttr.RELATIONSHIP_TYPES.toString();
152 return condition(FiqlParser.NEQ, type, (Object[]) moreTypes);
153 }
154 }
155 }