From 9e9d2926c62d9d8c08f56f02e42e08b1020684eb Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 25 Sep 2023 14:54:11 -0500 Subject: [PATCH] Nicer user-facting exceptions for throwUnsupportedCriteriaOperator and throwUnsupportedCriteriaField --- .../module/api/actions/BaseAPIActionUtil.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java index 7dd9f6ca..75ef68fe 100644 --- a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java +++ b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java @@ -1307,7 +1307,7 @@ public class BaseAPIActionUtil *******************************************************************************/ protected void throwUnsupportedCriteriaField(QFilterCriteria criteria) throws QUserFacingException { - throw new QUserFacingException("Unsupported query field [" + criteria.getFieldName() + "]"); + throw new QUserFacingException("Unsupported query field: " + getFieldLabelFromCriteria(criteria)); } @@ -1317,7 +1317,30 @@ public class BaseAPIActionUtil *******************************************************************************/ protected void throwUnsupportedCriteriaOperator(QFilterCriteria criteria) throws QUserFacingException { - throw new QUserFacingException("Unsupported operator [" + criteria.getOperator() + "] for query field [" + criteria.getFieldName() + "]"); + throw new QUserFacingException("Unsupported operator (" + criteria.getOperator() + ") for query field: " + getFieldLabelFromCriteria(criteria)); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + private String getFieldLabelFromCriteria(QFilterCriteria criteria) + { + String fieldLabel = criteria.getFieldName(); + try + { + String label = actionInput.getTable().getField(criteria.getFieldName()).getLabel(); + if(StringUtils.hasContent(label)) + { + fieldLabel = label; + } + } + catch(Exception e) + { + LOG.debug("Error getting field label", e); + } + return fieldLabel; }