diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2016-10-18 18:08:00 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2016-10-20 17:17:54 +0200 |
commit | c51c4e9b3ebfbfd6a526c58291bd50ef95faa914 (patch) | |
tree | 81dd474b86b13fb044996159b2f504909622b812 /sonar-db/src/main | |
parent | 9b3ef5c13da5ce90f5fd8697d89aa50dfc0d3807 (diff) | |
download | sonarqube-c51c4e9b3ebfbfd6a526c58291bd50ef95faa914.tar.gz sonarqube-c51c4e9b3ebfbfd6a526c58291bd50ef95faa914.zip |
SONAR-8100 add PermissionTemplateDao#deleteByOrganization
Diffstat (limited to 'sonar-db/src/main')
5 files changed, 101 insertions, 27 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java index d8e648487e3..c4b777f9bfa 100644 --- a/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java +++ b/sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java @@ -36,4 +36,6 @@ public interface PermissionTemplateCharacteristicMapper { void update(PermissionTemplateCharacteristicDto templatePermissionDto); void deleteByTemplateId(long id); + + void deleteByTemplateIds(@Param("templateIds") List<Long> subList); } 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 49d96caaf25..9beeb044d2c 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 @@ -162,10 +162,10 @@ public class PermissionTemplateDao implements Dao { public void deleteById(DbSession session, long templateId) { PermissionTemplateMapper mapper = mapper(session); - mapper.deleteUserPermissions(templateId); - mapper.deleteGroupPermissions(templateId); + mapper.deleteUserPermissionsByTemplateId(templateId); + mapper.deleteGroupPermissionsByTemplateId(templateId); session.getMapper(PermissionTemplateCharacteristicMapper.class).deleteByTemplateId(templateId); - mapper.delete(templateId); + mapper.deleteById(templateId); } public PermissionTemplateDto update(DbSession session, PermissionTemplateDto permissionTemplate) { @@ -239,4 +239,17 @@ public class PermissionTemplateDao implements Dao { private static PermissionTemplateMapper mapper(DbSession session) { return session.getMapper(PermissionTemplateMapper.class); } + + public void deleteByOrganization(DbSession dbSession, String organizationUuid) { + PermissionTemplateMapper templateMapper = mapper(dbSession); + PermissionTemplateCharacteristicMapper templateCharacteristicMapper = dbSession.getMapper(PermissionTemplateCharacteristicMapper.class); + List<Long> templateIds = templateMapper.selectTemplateIdsByOrganization(organizationUuid); + executeLargeInputsWithoutOutput(templateIds, subList -> { + templateCharacteristicMapper.deleteByTemplateIds(subList); + templateMapper.deleteGroupPermissionsByTemplateIds(subList); + templateMapper.deleteUserPermissionsByTemplateIds(subList); + templateMapper.deleteByIds(subList); + return null; + }); + } } 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 7cd947b94f4..64d4626e7b3 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 @@ -36,13 +36,19 @@ public interface PermissionTemplateMapper { void update(PermissionTemplateDto permissionTemplate); - void delete(long templateId); + void deleteById(long templateId); - void deleteUserPermissions(long templateId); + void deleteByIds(@Param("templateIds") List<Long> templateIds); + + void deleteUserPermissionsByTemplateId(long templateId); + + void deleteUserPermissionsByTemplateIds(@Param("templateIds") List<Long> templateIds); void deleteUserPermission(PermissionTemplateUserDto permissionTemplateUser); - void deleteGroupPermissions(long templateId); + void deleteGroupPermissionsByTemplateId(long templateId); + + void deleteGroupPermissionsByTemplateIds(@Param("templateIds") List<Long> templateIds); void deleteGroupPermission(PermissionTemplateGroupDto permissionTemplateGroup); @@ -77,4 +83,7 @@ public interface PermissionTemplateMapper { List<String> selectPotentialPermissionsByUserIdAndTemplateId(@Param("userId") @Nullable Long currentUserId, @Param("templateId") long templateId); int countGroupsWithPermission(@Param("templateId") long templateId, @Param("permission") String permission, @Nullable @Param("groupId") Long groupId); + + List<Long> selectTemplateIdsByOrganization(@Param("organizationUuid") String organizationUuid); + } diff --git a/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml b/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml index cd60828514f..c065eeb92bd 100644 --- a/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml +++ b/sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml @@ -54,4 +54,14 @@ DELETE FROM perm_tpl_characteristics WHERE template_id = #{permissionTemplateId} </delete> + + <delete id="deleteByTemplateIds" parameterType="long"> + delete from + perm_tpl_characteristics + where + template_id in + <foreach collection="templateIds" open="(" close=")" item="templateId" separator=","> + #{templateId} + </foreach> + </delete> </mapper> 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 a930b0bb31b..e60f18a5a82 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 @@ -21,25 +21,35 @@ WHERE id = #{id} </update> - <delete id="delete" parameterType="long"> + <delete id="deleteById" parameterType="long"> DELETE FROM permission_templates WHERE id = #{templateId} </delete> - <delete id="deleteUserPermissions" parameterType="long"> - DELETE FROM perm_templates_users - WHERE template_id = #{templateId} + <delete id="deleteByIds" parameterType="long"> + delete from + permission_templates + where + id in <foreach collection="templateIds" open="(" close=")" item="templateId" separator=","> + #{templateId,jdbcType=BIGINT} + </foreach> </delete> - <delete id="deleteGroupPermissions" parameterType="long"> - DELETE FROM perm_templates_groups - WHERE template_id = #{templateId} + <delete id="deleteUserPermissionsByTemplateId" parameterType="long"> + delete from + perm_templates_users + where + template_id = #{templateId,jdbcType=BIGINT} </delete> - <insert id="insertUserPermission" parameterType="PermissionTemplateUser"> - INSERT INTO perm_templates_users (template_id, user_id, permission_reference, created_at, updated_at) - VALUES (#{templateId}, #{userId}, #{permission}, #{createdAt}, #{updatedAt}) - </insert> + <delete id="deleteUserPermissionsByTemplateIds"> + delete from + perm_templates_users + where + template_id in <foreach collection="templateIds" open="(" close=")" item="templateId" separator=","> + #{templateId,jdbcType=BIGINT} + </foreach> + </delete> <delete id="deleteUserPermission" parameterType="PermissionTemplateUser"> DELETE FROM perm_templates_users @@ -48,16 +58,21 @@ AND permission_reference = #{permission} </delete> - <insert id="insertGroupPermission" parameterType="PermissionTemplateGroup"> - INSERT INTO perm_templates_groups (template_id, group_id, permission_reference, created_at, updated_at) - VALUES ( - #{templateId,jdbcType=BIGINT}, - #{groupId,jdbcType=BIGINT}, - #{permission,jdbcType=VARCHAR}, - #{createdAt,jdbcType=TIMESTAMP}, - #{updatedAt,jdbcType=TIMESTAMP} - ) - </insert> + <delete id="deleteGroupPermissionsByTemplateId" parameterType="long"> + delete from + perm_templates_groups + where + template_id = #{templateId,jdbcType=BIGINT} + </delete> + + <delete id="deleteGroupPermissionsByTemplateIds"> + delete from + perm_templates_groups + where + template_id in <foreach collection="templateIds" open="(" close=")" item="templateId" separator=","> + #{templateId,jdbcType=BIGINT} + </foreach> + </delete> <delete id="deleteGroupPermission" parameterType="PermissionTemplateGroup"> DELETE FROM perm_templates_groups @@ -74,6 +89,22 @@ </choose> </delete> + <insert id="insertUserPermission" parameterType="PermissionTemplateUser"> + INSERT INTO perm_templates_users (template_id, user_id, permission_reference, created_at, updated_at) + VALUES (#{templateId}, #{userId}, #{permission}, #{createdAt}, #{updatedAt}) + </insert> + + <insert id="insertGroupPermission" parameterType="PermissionTemplateGroup"> + INSERT INTO perm_templates_groups (template_id, group_id, permission_reference, created_at, updated_at) + VALUES ( + #{templateId,jdbcType=BIGINT}, + #{groupId,jdbcType=BIGINT}, + #{permission,jdbcType=VARCHAR}, + #{createdAt,jdbcType=TIMESTAMP}, + #{updatedAt,jdbcType=TIMESTAMP} + ) + </insert> + <delete id="deleteByGroupId" parameterType="long"> delete from perm_templates_groups where group_id = #{groupId,jdbcType=BIGINT} @@ -339,4 +370,13 @@ ptg.group_id = #{groupId} </if> </select> + + <select id="selectTemplateIdsByOrganization" resultType="Long"> + select + id + from + permission_templates + where + organization_uuid = #{organizationUuid,jdbcType=VARCHAR} + </select> </mapper> |