Better error handling of null values in faceted search

This commit is contained in:
Francesco 2023-09-30 10:33:48 +02:00
parent bb3f9e7bcb
commit 83e9766eb0

View File

@ -153,11 +153,14 @@ public class CustomJpaRepository extends SimpleJpaRepository {
String fieldName = dbField.getJavaName(); String fieldName = dbField.getJavaName();
String v = filter.getValue(); String v = filter.getValue();
Object value; Object value = null;
try {
value = dbField.getType().parseValue(v); if (!v.isBlank()) {
} catch (Exception e) { try {
throw new DbAdminException("Invalid value `" + v + "` specified for field `" + dbField.getName() + "`"); value = dbField.getType().parseValue(v);
} catch (Exception e) {
throw new DbAdminException("Invalid value `" + v + "` specified for field `" + dbField.getName() + "`");
}
} }
if (op == CompareOperator.STRING_EQ) { if (op == CompareOperator.STRING_EQ) {
@ -166,21 +169,24 @@ public class CustomJpaRepository extends SimpleJpaRepository {
else else
finalPredicates.add(cb.equal(cb.lower(cb.toString(root.get(fieldName))), value.toString().toLowerCase())); finalPredicates.add(cb.equal(cb.lower(cb.toString(root.get(fieldName))), value.toString().toLowerCase()));
} else if (op == CompareOperator.CONTAINS) { } else if (op == CompareOperator.CONTAINS) {
finalPredicates.add( if (value != null)
cb.like(cb.lower(cb.toString(root.get(fieldName))), "%" + value.toString().toLowerCase() + "%") finalPredicates.add(
); cb.like(cb.lower(cb.toString(root.get(fieldName))), "%" + value.toString().toLowerCase() + "%")
);
} else if (op == CompareOperator.EQ) { } else if (op == CompareOperator.EQ) {
finalPredicates.add( finalPredicates.add(
cb.equal(root.get(fieldName), value) cb.equal(root.get(fieldName), value)
); );
} else if (op == CompareOperator.GT) { } else if (op == CompareOperator.GT) {
finalPredicates.add( if (value != null)
cb.greaterThan(root.get(fieldName), value.toString()) finalPredicates.add(
); cb.greaterThan(root.get(fieldName), value.toString())
);
} else if (op == CompareOperator.LT) { } else if (op == CompareOperator.LT) {
finalPredicates.add( if (value != null)
cb.lessThan(root.get(fieldName), value.toString()) finalPredicates.add(
); cb.lessThan(root.get(fieldName), value.toString())
);
} else if (op == CompareOperator.AFTER) { } else if (op == CompareOperator.AFTER) {
if (value instanceof LocalDate) if (value instanceof LocalDate)
finalPredicates.add( finalPredicates.add(