aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db/src/main
diff options
context:
space:
mode:
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>2016-10-18 18:08:00 +0200
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>2016-10-20 17:17:54 +0200
commitc51c4e9b3ebfbfd6a526c58291bd50ef95faa914 (patch)
tree81dd474b86b13fb044996159b2f504909622b812 /sonar-db/src/main
parent9b3ef5c13da5ce90f5fd8697d89aa50dfc0d3807 (diff)
downloadsonarqube-c51c4e9b3ebfbfd6a526c58291bd50ef95faa914.tar.gz
sonarqube-c51c4e9b3ebfbfd6a526c58291bd50ef95faa914.zip
SONAR-8100 add PermissionTemplateDao#deleteByOrganization
Diffstat (limited to 'sonar-db/src/main')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java2
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java19
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/template/PermissionTemplateMapper.java15
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml10
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml82
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>