Ori Liel has uploaded a new change for review.

Change subject: restapi: User Search Sort-By Problem - #999812
......................................................................

restapi: User Search Sort-By Problem - #999812

Bug-Url: http://bugzilla.redhat.com/999812
Change-Id: I6d3e35e48e1b5a892519f66070f29bf1e5fd9903
Signed-off-by: Ori Liel <ol...@redhat.com>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceBase.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java
2 files changed, 28 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/18593/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceBase.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceBase.java
index b98a9d5..a202294 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceBase.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceBase.java
@@ -27,10 +27,11 @@
 
 public class BackendUsersResourceBase extends 
AbstractBackendCollectionResource<User, DbUser> {
 
+    private static final String SORT_BY_SEARCH_PATTERN = "sortby";
     static final String[] SUB_COLLECTIONS = { "permissions", "roles", "tags" };
     protected static final String AD_SEARCH_TEMPLATE = "ADUSER@{0}: ";
     private static final String USERS_SEARCH_PATTERN = "usrname != \"\"";
-    private static final String AND_SEARCH_PATTERN = " and ";
+    private static final String AND_SEARCH_PATTERN = "and ";
 
     private BackendDomainResource parent;
 
@@ -49,10 +50,31 @@
 
     protected String getSearchPattern() {
         String user_defined_pattern = QueryHelper.getConstraint(getUriInfo(), 
"",  modelType);
-        return user_defined_pattern.equals("Users : ") ?
-               user_defined_pattern + USERS_SEARCH_PATTERN
-               :
-               user_defined_pattern + AND_SEARCH_PATTERN + 
USERS_SEARCH_PATTERN;
+        return filterOutGroups(user_defined_pattern);
+    }
+
+    /**
+     * Insert [usrname!=""] into the existing pattern, which prevens groups 
from being returned.
+     * Existing pattern might have different forms, e.g:
+     * "Users : "
+     * "Users : name=admin"
+     * "Users : sortby name asc page 1"
+     * "Users : name=admin sortby name asc page 1"
+     * [usrname!=""] will always be inserted right after "Users : "
+     * TODO: in the future move logic of differentiating groups from users to 
the engine
+     */
+    private String filterOutGroups(String user_defined_pattern) {
+
+        int splitPoint = user_defined_pattern.indexOf(":") + 1;
+        String prefix = user_defined_pattern.substring(0, splitPoint);
+        String suffix = user_defined_pattern.substring(splitPoint+1, 
user_defined_pattern.length());
+        String searchPattern = prefix + " " + USERS_SEARCH_PATTERN;
+        if (suffix.startsWith(SORT_BY_SEARCH_PATTERN)) {
+            searchPattern = searchPattern + " " + suffix;
+        } else if (!suffix.isEmpty()) {
+            searchPattern = searchPattern + " " + AND_SEARCH_PATTERN + suffix;
+        }
+        return searchPattern;
     }
 
     protected String getDomain(User user) {
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java
index 8fc209b..0ca4317 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendUsersResourceTest.java
@@ -38,7 +38,7 @@
     static final String[] PARSED_GROUPS =
         { "Schema Admins@Maghreb/Users", "Group Policy Creator 
Owners@Maghreb/Users", "Enterprise Admins@Maghreb/Users" };
 
-    protected static final String SEARCH_QUERY = "Users : name=s* AND id=*0 
and usrname != \"\"";
+    protected static final String SEARCH_QUERY = "Users : usrname != \"\" and 
name=s* AND id=*0";
     protected static final String QUERY = "Users : usrname != \"\"";
 
     public BackendUsersResourceTest() {


-- 
To view, visit http://gerrit.ovirt.org/18593
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6d3e35e48e1b5a892519f66070f29bf1e5fd9903
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ori Liel <ol...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to