Based on above code , Yes it will work. Below is the example code snippet, you can have a look as well.where ConditionType
is enum... like this you can also prepare your own enum(not mandatory if condition is also fine)
private Filter buildSimpleQuery(ConditionType ct, String name, Object value) {
name = super.getRealPropertyName(name);
validatePropertyValue(name, value);
Class<?> clazz = getPrimitiveFieldClass(name, value.getClass());
CompareOp compareOp = null;
boolean regexCompRequired = false;
switch (ct) {
case EQUALS:
compareOp = CompareOp.EQUAL;
regexCompRequired = String.class == clazz && value.toString().endsWith("*");
break;
case NOT_EQUALS:
compareOp = CompareOp.NOT_EQUAL;
regexCompRequired = String.class == clazz && value.toString().endsWith("*");
break;
case GREATER_THAN:
compareOp = CompareOp.GREATER;
break;
case GREATER_OR_EQUALS:
compareOp = CompareOp.GREATER_OR_EQUAL;
break;
case LESS_THAN:
compareOp = CompareOp.LESS;
break;
case LESS_OR_EQUALS:
compareOp = CompareOp.LESS_OR_EQUAL;
break;
default:
break;
}
String qualifier = name;
String theFamily = family != null ? family : familyMap.get(qualifier);
ByteArrayComparable byteArrayComparable = regexCompRequired
? new RegexStringComparator(value.toString().replace("*", "."))
: new BinaryComparator(value.toString().getBytes(StandardCharsets.UTF_8));
Filter query = new SingleColumnValueFilter(theFamily.getBytes(StandardCharsets.UTF_8),
qualifier.getBytes(StandardCharsets.UTF_8),
compareOp,
byteArrayComparable);
return query;
}