Skip to content

Commit 596c350

Browse files
committed
continue writing Translator
1 parent 64e73ce commit 596c350

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

lightblue-ldap-crud/src/main/java/com/redhat/lightblue/crud/ldap/FilterTranslator.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,19 @@
3333
import com.redhat.lightblue.query.ValueComparisonExpression;
3434
import com.unboundid.ldap.sdk.Filter;
3535

36+
/**
37+
* Translates a Lightblue {@link QueryExpression} into a UnboundID {@link Filter}.
38+
*
39+
* @author dcrissman
40+
*/
3641
public class FilterTranslator {
3742

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.
3849
public Filter translate(QueryExpression query){
3950
Filter filter;
4051
if (query instanceof ArrayContainsExpression) {
@@ -88,10 +99,12 @@ private Filter translate(ArrayContainsExpression query){
8899
}
89100

90101
private Filter translate(ArrayMatchExpression query){
102+
//TODO: Support
91103
throw new UnsupportedOperationException("Operation not yet supported");
92104
}
93105

94106
private Filter translate(FieldComparisonExpression query){
107+
//TODO: Support
95108
throw new UnsupportedOperationException("Operation not yet supported");
96109
}
97110

@@ -128,11 +141,17 @@ private Filter translate(NaryRelationalExpression query){
128141
}
129142

130143
private Filter translate(RegexMatchExpression query){
144+
//TODO: Support
131145
throw new UnsupportedOperationException("Operation not yet supported");
132146
}
133147

134148
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+
}
136155
}
137156

138157
private Filter translate(ValueComparisonExpression query){
@@ -148,7 +167,11 @@ private Filter translate(ValueComparisonExpression query){
148167
return Filter.createGreaterOrEqualFilter(field, rValue);
149168
case _lte:
150169
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:
152175
throw new UnsupportedOperationException("Unsupported operation: " + query.getOp());
153176
}
154177
}

0 commit comments

Comments
 (0)