From: Sébastien Lesaint Date: Thu, 13 Apr 2017 07:31:35 +0000 (+0200) Subject: SONAR-9087 add ComponentDao#setPrivateForRootComponentUuid X-Git-Tag: 6.4-RC1~236 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c3db4556be6503b693d0942718180406bfcc3aec;p=sonarqube.git SONAR-9087 add ComponentDao#setPrivateForRootComponentUuid --- diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDao.java index 87678ede9b3..be316cb26e9 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentDao.java @@ -342,6 +342,10 @@ public class ComponentDao implements Dao { mapper(session).resetBChangedForRootComponentUuid(projectUuid); } + public void setPrivateForRootComponentUuid(DbSession session, String projectUuid, boolean isPrivate) { + mapper(session).setPrivateForRootComponentUuid(projectUuid, isPrivate); + } + public void delete(DbSession session, long componentId) { mapper(session).delete(componentId); } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentMapper.java index 6a609e37f26..319d594dc83 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentMapper.java @@ -142,6 +142,8 @@ public interface ComponentMapper { void resetBChangedForRootComponentUuid(@Param("projectUuid") String projectUuid); + void setPrivateForRootComponentUuid(@Param("projectUuid") String projectUuid, @Param("isPrivate") boolean isPrivate); + void delete(long componentId); void updateTags(ComponentDto component); diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml index 1a461df3c41..1c4920b51e3 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/component/ComponentMapper.xml @@ -616,6 +616,14 @@ b_changed = ${_true} + + update projects set + private = #{isPrivate,jdbcType=BOOLEAN} + where + project_uuid = #{projectUuid,jdbcType=VARCHAR} + and private <> #{isPrivate,jdbcType=BOOLEAN} + + DELETE FROM projects WHERE id=#{id,jdbcType=BIGINT} diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoTest.java index eb6e051d2fd..b82b94c10da 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentDaoTest.java @@ -1143,4 +1143,55 @@ public class ComponentDaoTest { assertThat(underTest.selectProjectsByNameQuery(dbSession, "1", true)).extracting(ComponentDto::uuid).containsOnly(project1.uuid(), module1.uuid(), subModule1.uuid()); assertThat(underTest.selectProjectsByNameQuery(dbSession, "unknown", true)).extracting(ComponentDto::uuid).isEmpty(); } + + @Test + public void setPrivateForRootComponentUuid_updates_private_column_to_specified_value_for_all_rows_with_specified_projectUuid() { + String uuid1 = "uuid1"; + String uuid2 = "uuid2"; + + OrganizationDto organizationDto = db.organizations().insert(); + String[] uuids = { + db.components().insertComponent(newProjectDto(organizationDto).setProjectUuid(uuid1).setPrivate(true)).uuid(), + db.components().insertComponent(newProjectDto(organizationDto).setProjectUuid(uuid1).setPrivate(false)).uuid(), + db.components().insertComponent(newProjectDto(organizationDto).setProjectUuid(uuid2).setPrivate(true)).uuid(), + db.components().insertComponent(newProjectDto(organizationDto).setProjectUuid(uuid2).setPrivate(false)).uuid(), + db.components().insertComponent(newProjectDto(organizationDto).setRootUuid(uuid1).setProjectUuid("foo").setPrivate(false)).uuid(), + }; + + underTest.setPrivateForRootComponentUuid(db.getSession(), uuid1, true); + + assertThat(privateFlagOfUuid(uuids[0])).isTrue(); + assertThat(privateFlagOfUuid(uuids[1])).isTrue(); + assertThat(privateFlagOfUuid(uuids[2])).isTrue(); + assertThat(privateFlagOfUuid(uuids[3])).isFalse(); + assertThat(privateFlagOfUuid(uuids[4])).isFalse(); + + underTest.setPrivateForRootComponentUuid(db.getSession(), uuid1, false); + + assertThat(privateFlagOfUuid(uuids[0])).isFalse(); + assertThat(privateFlagOfUuid(uuids[1])).isFalse(); + assertThat(privateFlagOfUuid(uuids[2])).isTrue(); + assertThat(privateFlagOfUuid(uuids[3])).isFalse(); + assertThat(privateFlagOfUuid(uuids[4])).isFalse(); + + underTest.setPrivateForRootComponentUuid(db.getSession(), uuid2, false); + + assertThat(privateFlagOfUuid(uuids[0])).isFalse(); + assertThat(privateFlagOfUuid(uuids[1])).isFalse(); + assertThat(privateFlagOfUuid(uuids[2])).isFalse(); + assertThat(privateFlagOfUuid(uuids[3])).isFalse(); + assertThat(privateFlagOfUuid(uuids[4])).isFalse(); + + underTest.setPrivateForRootComponentUuid(db.getSession(), uuid2, true); + + assertThat(privateFlagOfUuid(uuids[0])).isFalse(); + assertThat(privateFlagOfUuid(uuids[1])).isFalse(); + assertThat(privateFlagOfUuid(uuids[2])).isTrue(); + assertThat(privateFlagOfUuid(uuids[3])).isTrue(); + assertThat(privateFlagOfUuid(uuids[4])).isFalse(); + } + + private boolean privateFlagOfUuid(String uuid) { + return underTest.selectByUuid(db.getSession(), uuid).get().isPrivate(); + } }