У меня есть кусок кода в весеннем проекте данных jpa, который мне нужно реорганизовать. На самом деле я хочу уменьшить, если еще лестница этого метода.
private static void buildEntitlementFilterQuery(Root<Entitlement> entitlement, CriteriaBuilder cb,
List<Predicate> predicates, Entry<String, String> entry) {
if (StringUtils.isNotBlank(entry.getValue())) {
if (entry.getKey().equalsIgnoreCase(Constants.START_DATE)) {
predicates.add(cb.and(cb.greaterThanOrEqualTo(entitlement.get(entry.getKey()),
DateUtil.convertString(entry.getValue()))));
} else if (entry.getKey().equalsIgnoreCase(Constants.END_DATE)) {
predicates.add(cb.and(cb.lessThanOrEqualTo(entitlement.get(entry.getKey()),
DateUtil.convertString(entry.getValue()))));
} else if (entry.getKey().equalsIgnoreCase(Constants.QNT_GRANTED)) {
predicates.add(cb.and(cb.greaterThan(entitlement.get(entry.getKey()), entry.getValue())));
} else if (entry.getKey().equalsIgnoreCase(Constants.VALUE_GRANTED)) {
predicates.add(cb.and(cb.greaterThan(entitlement.get(entry.getKey()), entry.getValue())));
} else if (StringUtils.contains(entry.getValue(), Constants.COMMA)) {
predicates.add(
cb.and(entitlement.get(entry.getKey()).in(Arrays.asList(StringUtils.split(entry.getValue())))));
} else {
predicates.add(cb.and(cb.equal(entitlement.get(entry.getKey()), entry.getValue())));
}
}
}
Или я должен сделать каждый метод для каждой операции?Есть предложения?