public SelectionModel<T> filter(String pattern) {
return filter(s -> {
if (s.isEmpty())
return false;
char firstChar = pattern.charAt(0);
switch (firstChar) {
case 'R':
return SelectPredicates.REGEX.test(s, pattern.substring(1));
case 'S':
return SelectPredicates.STARTS.test(s, pattern.substring(1));
case 'E':
return SelectPredicates.ENDS.test(s, pattern.substring(1));
case 'Q':
return SelectPredicates.EQUAL.test(s, pattern.substring(1));
case 'C':
return SelectPredicates.CONTAINS.test(s, pattern.substring(1));
default:
return SelectPredicates.EQUAL.test(s, pattern);
}
});
}