From 42a327f349a55fd2a2a505440d25d5f24b2786d1 Mon Sep 17 00:00:00 2001 From: Ray Lee Date: Wed, 26 Jun 2019 16:25:53 -0700 Subject: [PATCH] DRYD-497: Allow searching roles by display name. --- .../account/storage/AccountJpaFilter.java | 13 +++++---- .../authorization/storage/RoleJpaFilter.java | 29 +++++++++++++++---- .../storage/RoleStorageConstants.java | 2 ++ 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/services/account/service/src/main/java/org/collectionspace/services/account/storage/AccountJpaFilter.java b/services/account/service/src/main/java/org/collectionspace/services/account/storage/AccountJpaFilter.java index d6322daa9..78096b931 100644 --- a/services/account/service/src/main/java/org/collectionspace/services/account/storage/AccountJpaFilter.java +++ b/services/account/service/src/main/java/org/collectionspace/services/account/storage/AccountJpaFilter.java @@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory; /** * - * @author + * @author */ public class AccountJpaFilter extends JpaDocumentFilter { @@ -48,15 +48,16 @@ public class AccountJpaFilter extends JpaDocumentFilter { public List buildWhereForSearch(StringBuilder queryStrBldr) { List paramList = new ArrayList(); + boolean csAdmin = SecurityUtils.isCSpaceAdmin(); + if (!csAdmin) { + queryStrBldr.append(addTenant(false, paramList)); + } + String screenName = null; List snvals = getQueryParam(AccountStorageConstants.Q_SCREEN_NAME); if (null != snvals && snvals.size() > 0) { screenName = snvals.get(0); } - boolean csAdmin = SecurityUtils.isCSpaceAdmin(); - if (!csAdmin) { - queryStrBldr.append(addTenant(false, paramList)); - } if (null != screenName && !screenName.isEmpty()) { if (!csAdmin) { queryStrBldr.append(" AND"); @@ -128,7 +129,7 @@ public class AccountJpaFilter extends JpaDocumentFilter { paramList.add(new ParamBinding("tenantId", tenantId)); return whereClause; } - + public String replaceSpacesWithQueryWildcards(String str) { if (null == str || str.trim().isEmpty()) { return str; diff --git a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleJpaFilter.java b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleJpaFilter.java index 25ba7f316..08ac1af5f 100644 --- a/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleJpaFilter.java +++ b/services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleJpaFilter.java @@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory; /** * RoleJpaFilter is to build where clause for role queries - * @author + * @author */ public class RoleJpaFilter extends JpaDocumentFilter { @@ -49,15 +49,16 @@ public class RoleJpaFilter extends JpaDocumentFilter { public List buildWhereForSearch(StringBuilder queryStrBldr) { List paramList = new ArrayList(); + boolean csAdmin = SecurityUtils.isCSpaceAdmin(); + if (!csAdmin) { + queryStrBldr.append(addTenant(false, paramList)); + } + String roleName = null; List rn = getQueryParam(RoleStorageConstants.Q_ROLE_NAME); if (null != rn && rn.size() > 0) { roleName = rn.get(0); } - boolean csAdmin = SecurityUtils.isCSpaceAdmin(); - if (!csAdmin) { - queryStrBldr.append(addTenant(false, paramList)); - } if (null != roleName && !roleName.isEmpty()) { if (!csAdmin) { queryStrBldr.append(" AND"); @@ -72,6 +73,24 @@ public class RoleJpaFilter extends JpaDocumentFilter { queryStrBldr.append(addTenant(true, paramList)); } + String displayName = null; + List dn = getQueryParam(RoleStorageConstants.Q_DISPLAY_NAME); + if (null != dn && dn.size() > 0) { + displayName = dn.get(0); + } + if (null != displayName && !displayName.isEmpty()) { + if (!csAdmin) { + queryStrBldr.append(" AND"); + } else { + queryStrBldr.append(" WHERE"); + } + queryStrBldr.append(" UPPER(a." + RoleStorageConstants.DISPLAY_NAME+ ")"); + queryStrBldr.append(" LIKE"); + queryStrBldr.append(" :" + RoleStorageConstants.Q_DISPLAY_NAME); + paramList.add(new ParamBinding(RoleStorageConstants.Q_DISPLAY_NAME, "%" + + displayName.toUpperCase() + "%")); + queryStrBldr.append(addTenant(true, paramList)); + } if (logger.isDebugEnabled()) { String query = queryStrBldr.toString(); diff --git a/services/common/src/main/java/org/collectionspace/services/authorization/storage/RoleStorageConstants.java b/services/common/src/main/java/org/collectionspace/services/authorization/storage/RoleStorageConstants.java index 8d428063d..7db592c61 100644 --- a/services/common/src/main/java/org/collectionspace/services/authorization/storage/RoleStorageConstants.java +++ b/services/common/src/main/java/org/collectionspace/services/authorization/storage/RoleStorageConstants.java @@ -30,8 +30,10 @@ package org.collectionspace.services.authorization.storage; */ public class RoleStorageConstants { + final public static String Q_DISPLAY_NAME = "dn"; final public static String Q_ROLE_NAME = "r"; + final public static String DISPLAY_NAME = "displayName"; final public static String ROLE_NAME = "roleName"; final public static String ROLE_ID = "csid"; final public static String ROLE_TENANT_ID = "tenant_id"; -- 2.47.3