11
11
import com .redhat .lightblue .query .QueryExpression ;
12
12
import com .redhat .lightblue .query .RegexMatchExpression ;
13
13
import com .redhat .lightblue .query .UnaryLogicalExpression ;
14
+ import com .redhat .lightblue .query .Value ;
14
15
import com .redhat .lightblue .query .ValueComparisonExpression ;
15
16
import com .unboundid .ldap .sdk .Filter ;
16
17
@@ -43,35 +44,37 @@ else if (query instanceof ValueComparisonExpression){
43
44
filter = translate ((ValueComparisonExpression ) query );
44
45
}
45
46
else {
46
- throw new IllegalArgumentException ("Unsupported QueryExpression type: " + query .getClass ());
47
+ throw new UnsupportedOperationException ("Unsupported QueryExpression type: " + query .getClass ());
47
48
}
48
49
return filter ;
49
50
}
50
51
51
52
private Filter translate (ArrayContainsExpression query ){
52
- return null ;
53
+ String field = query .getArray ().toString ();
54
+
55
+ List <Filter > filters = new ArrayList <Filter >();
56
+ for (Value value : query .getValues ()){
57
+ filters .add (Filter .createEqualityFilter (field , value .getValue ().toString ()));
58
+ }
59
+
60
+ switch (query .getOp ()){
61
+ case _all :
62
+ return Filter .createANDFilter (filters );
63
+ case _any :
64
+ return Filter .createORFilter (filters );
65
+ case _none :
66
+ return Filter .createNOTFilter (Filter .createANDFilter (filters ));
67
+ default :
68
+ throw new UnsupportedOperationException ("Unsupported operation: " + query .getOp ());
69
+ }
53
70
}
54
71
55
72
private Filter translate (ArrayMatchExpression query ){
56
- return null ;
73
+ throw new UnsupportedOperationException ( "Operation not yet supported" ) ;
57
74
}
58
75
59
76
private Filter translate (FieldComparisonExpression query ){
60
- String field = query .getField ().toString ();
61
- String rfield = query .getRfield ().toString ();
62
-
63
- switch (query .getOp ()){
64
- case _eq :
65
- return Filter .createEqualityFilter (field , rfield );
66
- case _neq :
67
- return Filter .createNOTFilter (Filter .createEqualityFilter (field , rfield ));
68
- case _gte :
69
- return Filter .createGreaterOrEqualFilter (field , rfield );
70
- case _lte :
71
- return Filter .createLessOrEqualFilter (field , rfield );
72
- default : //TODO gt, lt
73
- throw new IllegalArgumentException ("Unsupported operation: " + query .getOp ());
74
- }
77
+ throw new UnsupportedOperationException ("Operation not yet supported" );
75
78
}
76
79
77
80
private Filter translate (NaryLogicalExpression query ){
@@ -85,28 +88,50 @@ private Filter translate(NaryLogicalExpression query){
85
88
case _or :
86
89
return Filter .createORFilter (filters );
87
90
default :
88
- throw new IllegalArgumentException ("Unsupported operation: " + query .getOp ());
91
+ throw new UnsupportedOperationException ("Unsupported operation: " + query .getOp ());
89
92
}
90
93
}
91
94
92
95
private Filter translate (NaryRelationalExpression query ){
93
- return null ;
96
+ String field = query .getField ().toString ();
97
+ List <Filter > filters = new ArrayList <Filter >();
98
+ for (Value value : query .getValues ()){
99
+ filters .add (Filter .createEqualityFilter (field , value .getValue ().toString ()));
100
+ }
101
+
102
+ switch (query .getOp ()){
103
+ case _in :
104
+ return Filter .createORFilter (filters );
105
+ case _not_in :
106
+ return Filter .createNOTFilter (Filter .createORFilter (filters ));
107
+ default :
108
+ throw new UnsupportedOperationException ("Unsupported operation: " + query .getOp ());
109
+ }
94
110
}
95
111
96
112
private Filter translate (RegexMatchExpression query ){
97
- return null ;
113
+ throw new UnsupportedOperationException ( "Operation not yet supported" ) ;
98
114
}
99
115
100
116
private Filter translate (UnaryLogicalExpression query ){
101
117
return null ;
102
118
}
103
119
104
120
private Filter translate (ValueComparisonExpression query ){
121
+ String field = query .getField ().toString ();
122
+ String rValue = query .getRvalue ().getValue ().toString ();
123
+
105
124
switch (query .getOp ()){
106
125
case _eq :
107
- return Filter .createEqualityFilter (query .getField ().toString (), query .getRvalue ().toString ());
108
- default :
109
- throw new IllegalArgumentException ("Unsupported operation: " + query .getOp ());
126
+ return Filter .createEqualityFilter (field , rValue );
127
+ case _neq :
128
+ return Filter .createNOTFilter (Filter .createEqualityFilter (field , rValue ));
129
+ case _gte :
130
+ return Filter .createGreaterOrEqualFilter (field , rValue );
131
+ case _lte :
132
+ return Filter .createLessOrEqualFilter (field , rValue );
133
+ default : //TODO gt, lt
134
+ throw new UnsupportedOperationException ("Unsupported operation: " + query .getOp ());
110
135
}
111
136
}
112
137
0 commit comments