Added Support for IN Query and Added more test cases

This commit is contained in:
Mohsin Husen
2013-01-28 15:34:13 +00:00
parent 1520b4deac
commit 8970785ab8
4 changed files with 177 additions and 184 deletions

View File

@@ -94,7 +94,13 @@ class CriteriaQueryProcessor {
query = rangeQuery(fieldName).from(ranges[0]).to(ranges[1]); break;
case FUZZY:
query = fuzzyQuery(fieldName, (String) value); break;
case IN:
query = boolQuery();
Iterable<Object> collection = (Iterable<Object>) value;
for(Object item : collection){
((BoolQueryBuilder) query).should(fieldQuery(fieldName, item));
}
break;
}
return query;

View File

@@ -340,13 +340,7 @@ public class Criteria {
*/
public Criteria in(Iterable<?> values) {
Assert.notNull(values, "Collection of 'in' values must not be null");
for (Object value : values) {
if (value instanceof Collection) {
in((Collection<?>) value);
} else {
is(value);
}
}
criteria.add(new CriteriaEntry(OperationKey.IN, values));
return this;
}
@@ -430,7 +424,7 @@ public class Criteria {
}
public enum OperationKey {
EQUALS, CONTAINS, STARTS_WITH, ENDS_WITH, EXPRESSION, BETWEEN, FUZZY;
EQUALS, CONTAINS, STARTS_WITH, ENDS_WITH, EXPRESSION, BETWEEN, FUZZY, IN;
}
public static class CriteriaEntry {