From f34266f025c3f862c5f1bdf58a0983545334c4ae Mon Sep 17 00:00:00 2001 From: Simon Brandhof <simon.brandhof@sonarsource.com> Date: Fri, 21 Oct 2016 10:50:08 +0200 Subject: SONAR-8278 Support organizations in web service api/permissions/search_templates --- .../permission/template/PermissionTemplateDao.java | 18 +++----------- .../template/PermissionTemplateMapper.java | 2 +- .../template/PermissionTemplateMapper.xml | 16 ++++++------- .../template/PermissionTemplateDaoTest.java | 28 ++++++++++++---------- 4 files changed, 27 insertions(+), 37 deletions(-) (limited to 'sonar-db/src') diff --git a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java index 9beeb044d2c..ac6bb49fefd 100644 --- a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java +++ b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java @@ -101,21 +101,9 @@ public class PermissionTemplateDao implements Dao { return mapper(session).selectByUuid(templateUuid); } - /** - * @deprecated does not support organizations. Should return group ids. - */ - @Deprecated - public List<PermissionTemplateDto> selectAll(DbSession session, String nameMatch) { - String uppercaseNameMatch = toUppercaseSqlQuery(nameMatch); - return mapper(session).selectAll(uppercaseNameMatch); - } - - /** - * @deprecated does not support organizations. Should return group ids. - */ - @Deprecated - public List<PermissionTemplateDto> selectAll(DbSession session) { - return mapper(session).selectAll(null); + public List<PermissionTemplateDto> selectAll(DbSession session, String organizationUuid, @Nullable String nameMatch) { + String upperCaseNameLikeSql = nameMatch != null ? toUppercaseSqlQuery(nameMatch) : null; + return mapper(session).selectAll(organizationUuid, upperCaseNameLikeSql); } private static String toUppercaseSqlQuery(String nameMatch) { diff --git a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java index 64d4626e7b3..55b3d2569ec 100644 --- a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java +++ b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java @@ -74,7 +74,7 @@ public interface PermissionTemplateMapper { int countGroupNamesByQueryAndTemplate(@Param("query") PermissionQuery query, @Param("templateId") long templateId); - List<PermissionTemplateDto> selectAll(@Nullable @Param("nameMatch") String nameMatch); + List<PermissionTemplateDto> selectAll(@Param("organizationUuid") String organizationUuid, @Nullable @Param("upperCaseNameLikeSql") String upperCaseNameLikeSql); void usersCountByTemplateIdAndPermission(Map<String, Object> parameters, ResultHandler resultHandler); diff --git a/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml b/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml index e60f18a5a82..0001f3e18f4 100644 --- a/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml +++ b/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml @@ -195,15 +195,15 @@ </select> <select id="selectAll" parameterType="map" resultType="PermissionTemplate"> - SELECT + select <include refid="templateColumns"/> - FROM permission_templates - <where> - <if test="nameMatch!=null"> - AND (UPPER(name) LIKE #{nameMatch} ESCAPE '/') - </if> - </where> - ORDER BY UPPER(name), name + from permission_templates + where + organization_uuid = #{organizationUuid,jdbcType=VARCHAR} + <if test="upperCaseNameLikeSql != null"> + and upper(name) like #{upperCaseNameLikeSql} escape '/' + </if> + order by upper(name), name </select> <select id="selectByName" parameterType="map" resultType="PermissionTemplate"> diff --git a/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java b/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java index b4d3ed70416..8707fcdb930 100644 --- a/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java +++ b/sonar-db/src/test/java/org/sonar/db/permission/template/PermissionTemplateDaoTest.java @@ -94,17 +94,29 @@ public class PermissionTemplateDaoTest { } @Test - public void should_select_all_permission_templates() { + public void selectAll_without_name_filtering() { db.prepareDbUnit(getClass(), "selectAllPermissionTemplates.xml"); commit(); - List<PermissionTemplateDto> permissionTemplates = underTest.selectAll(dbSession); - + List<PermissionTemplateDto> permissionTemplates = underTest.selectAll(dbSession, "org1", null); assertThat(permissionTemplates).hasSize(3); assertThat(permissionTemplates).extracting("id").containsOnly(1L, 2L, 3L); assertThat(permissionTemplates).extracting("name").containsOnly("template1", "template2", "template3"); assertThat(permissionTemplates).extracting("kee").containsOnly("template1_20130102_030405", "template2_20130102_030405", "template3_20130102_030405"); assertThat(permissionTemplates).extracting("description").containsOnly("description1", "description2", "description3"); + + assertThat(underTest.selectAll(dbSession, "missingOrg", null)).isEmpty(); + } + + @Test + public void selectAll_with_name_filtering() { + PermissionTemplateDto t1InOrg1 = templateDb.insertTemplate(newPermissionTemplateDto().setName("aBcDeF").setOrganizationUuid("org1")); + PermissionTemplateDto t2InOrg1 = templateDb.insertTemplate(newPermissionTemplateDto().setName("cdefgh").setOrganizationUuid("org1")); + PermissionTemplateDto t3InOrg1 = templateDb.insertTemplate(newPermissionTemplateDto().setName("hijkl").setOrganizationUuid("org2")); + PermissionTemplateDto t4InOrg2 = templateDb.insertTemplate(newPermissionTemplateDto().setName("cdefgh").setOrganizationUuid("org2")); + + assertThat(underTest.selectAll(dbSession, "org1", "def")).extracting(PermissionTemplateDto::getId).containsExactly(t1InOrg1.getId(), t2InOrg1.getId()); + assertThat(underTest.selectAll(dbSession, "org1", "missing")).isEmpty(); } @Test @@ -239,16 +251,6 @@ public class PermissionTemplateDaoTest { assertThat(result).extracting("count").containsOnly(3, 1); } - @Test - public void select_by_name_query_and_pagination() { - templateDb.insertTemplate(newPermissionTemplateDto().setName("aaabbb")); - templateDb.insertTemplate(newPermissionTemplateDto().setName("aaaccc")); - - List<PermissionTemplateDto> templates = underTest.selectAll(dbSession, "aaa"); - - assertThat(templates.get(0).getName()).isEqualTo("aaabbb"); - } - @Test public void selectPotentialPermissions_with_unknown_template_and_no_user() { List<String> result = underTest.selectPotentialPermissionsByUserIdAndTemplateId(dbSession, null, 42L); -- cgit v1.2.3