]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
DRYD-497: Allow searching roles by display name.
authorRay Lee <ray.lee@lyrasis.org>
Wed, 26 Jun 2019 23:25:53 +0000 (16:25 -0700)
committerRay Lee <ray.lee@lyrasis.org>
Wed, 26 Jun 2019 23:25:53 +0000 (16:25 -0700)
services/account/service/src/main/java/org/collectionspace/services/account/storage/AccountJpaFilter.java
services/authorization-mgt/service/src/main/java/org/collectionspace/services/authorization/storage/RoleJpaFilter.java
services/common/src/main/java/org/collectionspace/services/authorization/storage/RoleStorageConstants.java

index d6322daa9766ff69276cd1b2188da6576fafe4a0..78096b93107d668bd22fc4775c06a50d8f85989d 100644 (file)
@@ -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<ParamBinding> buildWhereForSearch(StringBuilder queryStrBldr) {
 
         List<ParamBinding> paramList = new ArrayList<ParamBinding>();
+        boolean csAdmin = SecurityUtils.isCSpaceAdmin();
+        if (!csAdmin) {
+            queryStrBldr.append(addTenant(false, paramList));
+        }
+
         String screenName = null;
         List<String> 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;
index 25ba7f316c11d9c034fb685cc8c5dc8cc5ac6c66..08ac1af5f8c5786ec8c53fc8709f69c97d40af5d 100644 (file)
@@ -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<ParamBinding> buildWhereForSearch(StringBuilder queryStrBldr) {
 
         List<ParamBinding> paramList = new ArrayList<ParamBinding>();
+        boolean csAdmin = SecurityUtils.isCSpaceAdmin();
+        if (!csAdmin) {
+            queryStrBldr.append(addTenant(false, paramList));
+        }
+
         String roleName = null;
         List<String> 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<String> 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();
index 8d428063d4ab54692780bbae5dd683fcedec1629..7db592c6139bc3eae5e9581d16103c177a035ad0 100644 (file)
@@ -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";