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