33
33
import com .redhat .lightblue .query .ValueComparisonExpression ;
34
34
import com .unboundid .ldap .sdk .Filter ;
35
35
36
+ /**
37
+ * Translates a Lightblue {@link QueryExpression} into a UnboundID {@link Filter}.
38
+ *
39
+ * @author dcrissman
40
+ */
36
41
public class FilterTranslator {
37
42
43
+ /**
44
+ * <p>Translates a Lightblue {@link QueryExpression} into a UnboundID {@link Filter}.</p>
45
+ * @param query - {@link QueryExpression}
46
+ * @return {@link Filter}
47
+ */
48
+ //NOTE: This method is internally called recursively.
38
49
public Filter translate (QueryExpression query ){
39
50
Filter filter ;
40
51
if (query instanceof ArrayContainsExpression ) {
@@ -88,10 +99,12 @@ private Filter translate(ArrayContainsExpression query){
88
99
}
89
100
90
101
private Filter translate (ArrayMatchExpression query ){
102
+ //TODO: Support
91
103
throw new UnsupportedOperationException ("Operation not yet supported" );
92
104
}
93
105
94
106
private Filter translate (FieldComparisonExpression query ){
107
+ //TODO: Support
95
108
throw new UnsupportedOperationException ("Operation not yet supported" );
96
109
}
97
110
@@ -128,11 +141,17 @@ private Filter translate(NaryRelationalExpression query){
128
141
}
129
142
130
143
private Filter translate (RegexMatchExpression query ){
144
+ //TODO: Support
131
145
throw new UnsupportedOperationException ("Operation not yet supported" );
132
146
}
133
147
134
148
private Filter translate (UnaryLogicalExpression query ){
135
- return null ;
149
+ switch (query .getOp ()){
150
+ case _not :
151
+ return Filter .createNOTFilter (translate (query .getQuery ()));
152
+ default :
153
+ throw new UnsupportedOperationException ("Unsupported operation: " + query .getOp ());
154
+ }
136
155
}
137
156
138
157
private Filter translate (ValueComparisonExpression query ){
@@ -148,7 +167,11 @@ private Filter translate(ValueComparisonExpression query){
148
167
return Filter .createGreaterOrEqualFilter (field , rValue );
149
168
case _lte :
150
169
return Filter .createLessOrEqualFilter (field , rValue );
151
- default : //TODO gt, lt
170
+ case _gt : //!lte
171
+ return Filter .createNOTFilter (Filter .createLessOrEqualFilter (field , rValue ));
172
+ case _lt : //!gte
173
+ return Filter .createNOTFilter (Filter .createGreaterOrEqualFilter (field , rValue ));
174
+ default :
152
175
throw new UnsupportedOperationException ("Unsupported operation: " + query .getOp ());
153
176
}
154
177
}
0 commit comments