From 783f0c22b432058e1b171a2e7d72fa46817514b8 Mon Sep 17 00:00:00 2001 From: Eric Hartmann Date: Fri, 21 Sep 2018 16:28:10 +0200 Subject: [PATCH] SONAR-8019 Order results with one with permissions For /api/permissions/users /api/permissions/groups /api/permissions/template_users /api/permissions/template_groups --- .../sonar/db/permission/PermissionQuery.java | 2 +- .../db/permission/UserPermissionDao.java | 2 +- .../db/permission/GroupPermissionMapper.xml | 5 +-- .../db/permission/UserPermissionMapper.xml | 13 +++---- .../template/PermissionTemplateMapper.xml | 12 +++---- .../db/permission/GroupPermissionDaoTest.java | 5 +-- .../db/permission/UserPermissionDaoTest.java | 36 +++++++++++++++++++ .../GroupWithPermissionTemplateDaoTest.java | 19 +++++----- .../template/PermissionTemplateDaoTest.java | 1 + .../UserWithPermissionTemplateDaoTest.java | 21 +++++------ .../server/permission/ws/GroupsAction.java | 9 ++--- .../permission/ws/RemoveUserAction.java | 4 +-- .../server/permission/ws/UsersAction.java | 10 +++--- .../ws/template/TemplateGroupsAction.java | 3 -- .../ws/template/TemplateUsersAction.java | 3 -- .../server/permission/ws/UsersActionTest.java | 23 ------------ .../ws/template/TemplateGroupsActionTest.java | 4 +-- .../ws/template/TemplateUsersActionTest.java | 15 -------- 18 files changed, 94 insertions(+), 93 deletions(-) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/PermissionQuery.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/PermissionQuery.java index 85ee4a0c1c54..464a50834062 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/PermissionQuery.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/PermissionQuery.java @@ -152,7 +152,7 @@ public Builder setTemplate(@Nullable String template) { return this; } - public Builder setComponentUuid(@Nullable String componentUuid) { + public Builder setComponentUuid(String componentUuid) { this.componentUuid = componentUuid; return this; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java index b0f3406da514..91575537f69c 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java @@ -56,7 +56,7 @@ public List selectUserIdsByQuery(DbSession dbSession, PermissionQuery q // Pagination is done in Java because it's too complex to use SQL pagination in Oracle and MsSQL with the distinct .skip(query.getPageOffset()) .limit(query.getPageSize()) - .collect(MoreCollectors.toList()); + .collect(MoreCollectors.toArrayList()); } public int countUsersByQuery(DbSession dbSession, PermissionQuery query) { diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml index 2a27739d4c66..0c66ab4a2efa 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/GroupPermissionMapper.xml @@ -40,9 +40,10 @@ select - distinct u.id, lower(u.name) as lowerName - - - - - order by lowerName asc + u.id, lower(u.name) as lowerName + + + + + group by u.id, lowerName + order by case when (count(ur.role) > 0) then 1 else 2 end asc, lowerName asc - SELECT u.login FROM - (SELECT DISTINCT u.login AS login, u.name AS name + select u.login as login - ) u - ORDER BY u.name + group by u.login, u.name + order by case when (count(ptu.permission_reference) > 0) then 1 else 2 end asc, u.name - SELECT DISTINCT groups.name, LOWER(groups.name), groups.group_id + select groups.name, lower(groups.name), groups.group_id - ORDER BY LOWER(groups.name), groups.name, groups.group_id + group by groups.name, lower(groups.name), groups.group_id + order by case when (count(groups.permission) > 0) then 1 else 2 end asc, lower(groups.name), groups.name, groups.group_id