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,12 +153,15 @@ 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;
if (!v.isBlank()) {
try { try {
value = dbField.getType().parseValue(v); value = dbField.getType().parseValue(v);
} catch (Exception e) { } catch (Exception e) {
throw new DbAdminException("Invalid value `" + v + "` specified for field `" + dbField.getName() + "`"); throw new DbAdminException("Invalid value `" + v + "` specified for field `" + dbField.getName() + "`");
} }
}
if (op == CompareOperator.STRING_EQ) { if (op == CompareOperator.STRING_EQ) {
if (value == null) if (value == null)
@ -166,6 +169,7 @@ 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) {
if (value != null)
finalPredicates.add( finalPredicates.add(
cb.like(cb.lower(cb.toString(root.get(fieldName))), "%" + value.toString().toLowerCase() + "%") cb.like(cb.lower(cb.toString(root.get(fieldName))), "%" + value.toString().toLowerCase() + "%")
); );
@ -174,10 +178,12 @@ public class CustomJpaRepository extends SimpleJpaRepository {
cb.equal(root.get(fieldName), value) cb.equal(root.get(fieldName), value)
); );
} else if (op == CompareOperator.GT) { } else if (op == CompareOperator.GT) {
if (value != null)
finalPredicates.add( finalPredicates.add(
cb.greaterThan(root.get(fieldName), value.toString()) cb.greaterThan(root.get(fieldName), value.toString())
); );
} else if (op == CompareOperator.LT) { } else if (op == CompareOperator.LT) {
if (value != null)
finalPredicates.add( finalPredicates.add(
cb.lessThan(root.get(fieldName), value.toString()) cb.lessThan(root.get(fieldName), value.toString())
); );