diff options
author | Jacek <jacek.poreda@sonarsource.com> | 2020-12-16 10:54:20 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2020-12-22 20:09:37 +0000 |
commit | e88bf5b78cf19d5fd42bf12189499d5743d19367 (patch) | |
tree | eaf4bf07eeaf06ec5046732c219111ed74e1a481 /server/sonar-db-dao | |
parent | d32d574c7ef425dd95ac15414347f9f546fc8263 (diff) | |
download | sonarqube-e88bf5b78cf19d5fd42bf12189499d5743d19367.tar.gz sonarqube-e88bf5b78cf19d5fd42bf12189499d5743d19367.zip |
SONAR-13999 drop completely usage of association between QualityGate and Organization
Diffstat (limited to 'server/sonar-db-dao')
6 files changed, 42 insertions, 269 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QGateWithOrgDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QGateWithOrgDto.java deleted file mode 100644 index 0289a88ca77..00000000000 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QGateWithOrgDto.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2020 SonarSource SA - * mailto:info AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.db.qualitygate; - -import java.util.Date; - -/** - * This Dto is a join between QualityGates and Organizations. - * - * Tables : QUALITY_GATES joined with ORG_QUALITY_GATES - */ -public class QGateWithOrgDto extends QualityGateDto { - private String organizationUuid; - - public String getOrganizationUuid() { - return organizationUuid; - } - - public void setOrganizationUuid(String organizationUuid) { - this.organizationUuid = organizationUuid; - } - - @Override - public QGateWithOrgDto setUuid(String uuid) { - super.setUuid(uuid); - return this; - } - - @Override - public QGateWithOrgDto setName(String name) { - super.setName(name); - return this; - } - - @Override - public QGateWithOrgDto setBuiltIn(boolean builtIn) { - super.setBuiltIn(builtIn); - return this; - } - - @Override - public QGateWithOrgDto setCreatedAt(Date createdAt) { - super.setCreatedAt(createdAt); - return this; - } - - @Override - public QGateWithOrgDto setUpdatedAt(Date updatedAt) { - super.setUpdatedAt(updatedAt); - return this; - } -} diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateDao.java index b0d65fe64b7..18307a0b973 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateDao.java @@ -26,18 +26,13 @@ import org.sonar.core.util.UuidFactory; import org.sonar.db.Dao; import org.sonar.db.DatabaseUtils; import org.sonar.db.DbSession; -import org.sonar.db.organization.OrganizationDto; -import org.sonar.db.property.InternalPropertiesDao; public class QualityGateDao implements Dao { - private static final String DEFAULT_ORGANIZATION_PROPERTY_KEY = "organization.default"; private final UuidFactory uuidFactory; - private final InternalPropertiesDao internalPropertiesDao; - public QualityGateDao(UuidFactory uuidFactory, InternalPropertiesDao internalPropertiesDao) { + public QualityGateDao(UuidFactory uuidFactory) { this.uuidFactory = uuidFactory; - this.internalPropertiesDao = internalPropertiesDao; } public QualityGateDto insert(DbSession session, QualityGateDto newQualityGate) { @@ -47,30 +42,8 @@ public class QualityGateDao implements Dao { return newQualityGate; } - /** - * @deprecated drop when org are dropped - */ - @Deprecated - public void associate(DbSession dbSession, String uuid, OrganizationDto organization, QualityGateDto qualityGate) { - mapper(dbSession).insertOrgQualityGate(uuid, organization.getUuid(), qualityGate.getUuid()); - } - - public void associate(DbSession dbSession, String uuid, QualityGateDto qualityGate) { - String defaultOrganizationUuid = getDefaultOrganizationUuid(dbSession); - mapper(dbSession).insertOrgQualityGate(uuid, defaultOrganizationUuid, qualityGate.getUuid()); - } - public Collection<QualityGateDto> selectAll(DbSession session) { - String defaultOrganizationUuid = getDefaultOrganizationUuid(session); - return selectAll(session, defaultOrganizationUuid); - } - - /** - * @deprecated drop when org are dropped - */ - @Deprecated - public Collection<QualityGateDto> selectAll(DbSession session, String organizationUuid) { - return mapper(session).selectAll(organizationUuid); + return mapper(session).selectAll(); } @CheckForNull @@ -83,30 +56,8 @@ public class QualityGateDao implements Dao { return mapper(session).selectByUuid(uuid); } - @CheckForNull - public QGateWithOrgDto selectByDefaultOrganizationAndUuid(DbSession dbSession, String qualityGateUuid) { - String defaultOrganizationUuid = getDefaultOrganizationUuid(dbSession); - return mapper(dbSession).selectByUuidAndOrganization(qualityGateUuid, defaultOrganizationUuid); - } - - /** - * @deprecated drop when org are dropped - */ - @CheckForNull - @Deprecated - public QGateWithOrgDto selectByOrganizationAndUuid(DbSession dbSession, OrganizationDto organization, String qualityGateUuid) { - return mapper(dbSession).selectByUuidAndOrganization(qualityGateUuid, organization.getUuid()); - } - - @CheckForNull - public QGateWithOrgDto selectByDefaultOrganizationAndName(DbSession session, String name) { - String defaultOrganizationUuid = getDefaultOrganizationUuid(session); - return mapper(session).selectByNameAndOrganization(name, defaultOrganizationUuid); - } - public void delete(QualityGateDto qGate, DbSession session) { mapper(session).delete(qGate.getUuid()); - mapper(session).deleteOrgQualityGatesByQualityGateUuid(qGate.getUuid()); } public void deleteByUuids(DbSession session, Collection<String> uuids) { @@ -114,10 +65,6 @@ public class QualityGateDao implements Dao { DatabaseUtils.executeLargeUpdates(uuids, mapper::deleteByUuids); } - public void deleteOrgQualityGatesByOrganization(DbSession session, OrganizationDto organization) { - mapper(session).deleteOrgQualityGatesByOrganization(organization.getUuid()); - } - public void update(QualityGateDto qGate, DbSession session) { mapper(session).update(qGate.setUpdatedAt(new Date())); } @@ -137,9 +84,4 @@ public class QualityGateDao implements Dao { public QualityGateDto selectByProjectUuid(DbSession dbSession, String projectUuid) { return mapper(dbSession).selectByProjectUuid(projectUuid); } - - private String getDefaultOrganizationUuid(DbSession dbSession) { - return internalPropertiesDao.selectByKey(dbSession, DEFAULT_ORGANIZATION_PROPERTY_KEY) - .orElseThrow(() -> new IllegalStateException("Default organization does not exist.")); - } } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateMapper.java index b30c4c86cc9..12c8657f25d 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualitygate/QualityGateMapper.java @@ -27,28 +27,16 @@ public interface QualityGateMapper { void insertQualityGate(QualityGateDto qualityGate); - void insertOrgQualityGate(@Param("uuid") String uuid, @Param("organizationUuid") String organizationUuid, @Param("qualityGateUuid") String qualityGateUuuid); - - List<QualityGateDto> selectAll(@Param("organizationUuid") String organizationUuid); + List<QualityGateDto> selectAll(); QualityGateDto selectByName(String name); - QGateWithOrgDto selectByUuidAndOrganization(@Param("qualityGateUuid") String qualityGateUuid, @Param("organizationUuid") String organizationUuid); - - QGateWithOrgDto selectByNameAndOrganization(@Param("name") String name, @Param("organizationUuid") String organizationUuid); - - QGateWithOrgDto selectDefault(@Param("organizationUuid") String organizationUuid); - QualityGateDto selectBuiltIn(); void delete(String uuid); void deleteByUuids(@Param("uuids") Collection<String> uuids); - void deleteOrgQualityGatesByQualityGateUuid(String uuid); - - void deleteOrgQualityGatesByOrganization(@Param("organizationUuid") String organizationUuid); - void update(QualityGateDto qGate); void ensureOneBuiltInQualityGate(String builtInQualityName); diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateMapper.xml index 3668da9ca75..494bccb3f6d 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateMapper.xml @@ -7,31 +7,15 @@ uuid, name, is_built_in as isBuiltIn, created_at as createdAt, updated_at as updatedAt </sql> - <sql id="qateWithOrgColumns"> - qg.uuid as uuid, - qg.name as name, - qg.is_built_in as isBuiltIn, - oqg.organization_uuid as organizationUuid, - qg.created_at as createdAt, - qg.updated_at as updatedAd - </sql> - <insert id="insertQualityGate" parameterType="QualityGate" useGeneratedKeys="false"> insert into quality_gates (uuid, name, is_built_in, created_at, updated_at) values (#{uuid, jdbcType=VARCHAR}, #{name, jdbcType=VARCHAR}, #{isBuiltIn, jdbcType=BOOLEAN}, #{createdAt, jdbcType=TIMESTAMP}, #{updatedAt, jdbcType=TIMESTAMP}) </insert> - <insert id="insertOrgQualityGate" parameterType="Map"> - INSERT INTO org_quality_gates (uuid, organization_uuid, quality_gate_uuid) - VALUES (#{uuid, jdbcType=VARCHAR}, #{organizationUuid, jdbcType=VARCHAR}, #{qualityGateUuid, jdbcType=VARCHAR}) - </insert> - - <select id="selectAll" resultType="org.sonar.db.qualitygate.QGateWithOrgDto"> + <select id="selectAll" resultType="QualityGate"> SELECT - <include refid="qateWithOrgColumns"/> + <include refid="gateColumns"/> FROM quality_gates qg - INNER JOIN - org_quality_gates oqg ON oqg.quality_gate_uuid = qg.uuid AND oqg.organization_uuid = #{organizationUuid, jdbcType=VARCHAR} ORDER BY qg.name ASC </select> @@ -49,28 +33,6 @@ where uuid=#{uuid, jdbcType=VARCHAR} </select> - <select id="selectByUuidAndOrganization" parameterType="Map" resultType="org.sonar.db.qualitygate.QGateWithOrgDto"> - SELECT - <include refid="qateWithOrgColumns"/> - FROM - quality_gates qg - INNER JOIN - org_quality_gates oqg ON oqg.quality_gate_uuid = qg.uuid AND oqg.organization_uuid = #{organizationUuid, jdbcType=VARCHAR} - WHERE - qg.uuid = #{qualityGateUuid, jdbcType=VARCHAR} - </select> - - <select id="selectByNameAndOrganization" parameterType="Map" resultType="org.sonar.db.qualitygate.QGateWithOrgDto"> - SELECT - <include refid="qateWithOrgColumns"/> - FROM - quality_gates qg - INNER JOIN - org_quality_gates oqg ON oqg.quality_gate_uuid = qg.uuid AND oqg.organization_uuid = #{organizationUuid, jdbcType=VARCHAR} - WHERE - qg.name = #{name, jdbcType=VARCHAR} - </select> - <select id="selectByProjectUuid" parameterType="Map" resultType="org.sonar.db.qualitygate.QualityGateDto"> SELECT <include refid="gateColumns"/> @@ -98,15 +60,6 @@ <foreach collection="uuids" open="(" close=")" item="uuid" separator=",">#{uuid, jdbcType=VARCHAR}</foreach> </update> - <update id="deleteOrgQualityGatesByQualityGateUuid" parameterType="String"> - delete from org_quality_gates where quality_gate_uuid=#{uuid} - </update> - - <update id="deleteOrgQualityGatesByOrganization" parameterType="String"> - delete from org_quality_gates - where organization_uuid = #{organizationUuid, jdbcType=VARCHAR} - </update> - <update id="update" parameterType="QualityGate"> update quality_gates set name=#{name}, diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateDaoTest.java index 814adc717e2..086f29f039a 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/qualitygate/QualityGateDaoTest.java @@ -29,18 +29,17 @@ import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.project.ProjectDto; -import static java.lang.String.format; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; public class QualityGateDaoTest { @Rule - public DbTester db = DbTester.create(System2.INSTANCE); + public final DbTester db = DbTester.create(System2.INSTANCE); - private QualityGateDbTester qualityGateDbTester = new QualityGateDbTester(db); - private DbSession dbSession = db.getSession(); - private QualityGateDao underTest = db.getDbClient().qualityGateDao(); + private final QualityGateDbTester qualityGateDbTester = new QualityGateDbTester(db); + private final DbSession dbSession = db.getSession(); + private final QualityGateDao underTest = db.getDbClient().qualityGateDao(); @Test public void insert() { @@ -61,20 +60,6 @@ public class QualityGateDaoTest { assertThat(reloaded.getUpdatedAt()).isNotNull(); } - // TODO:: - // @Test - // public void associate() { - // QualityGateDto qgate = db.qualityGates().(db.getDefaultOrganization()); - // OrganizationDto org = db.organizations().insert(); - // - // underTest.associate(dbSession, Uuids.createFast(), org, qgate); - // - // assertThat(underTest.selectByOrganizationAndUuid(dbSession, org, qgate.getUuid())).isNotNull(); - // assertThat(underTest.selectByOrganizationAndUuid(dbSession, org, qgate.getUuid())) - // .extracting(QualityGateDto::getUuid, QualityGateDto::getUuid, QualityGateDto::getOrganizationUuid, QualityGateDto::getName) - // .containsExactly(qgate.getUuid(), qgate.getUuid(), org.getUuid(), qgate.getName()); - // } - @Test public void insert_built_in() { underTest.insert(db.getSession(), new QualityGateDto().setName("test").setBuiltIn(true).setUuid(Uuids.createFast())); @@ -117,28 +102,6 @@ public class QualityGateDaoTest { } @Test - public void select_by_organization_and_name() { - QualityGateDto qualityGate1 = db.qualityGates().insertQualityGate(); - QualityGateDto qualityGate2 = db.qualityGates().insertQualityGate(); - QualityGateDto qualityGate3 = db.qualityGates().insertQualityGate(); - - assertThat(underTest.selectByDefaultOrganizationAndName(dbSession, qualityGate1.getName()).getUuid()).isEqualTo(qualityGate1.getUuid()); - assertThat(underTest.selectByDefaultOrganizationAndName(dbSession, qualityGate3.getName()).getUuid()).isEqualTo(qualityGate3.getUuid()); - assertThat(underTest.selectByDefaultOrganizationAndName(dbSession, "Unknown")).isNull(); - } - - @Test - public void select_by_organization_and_id() { - QualityGateDto qualityGate1 = db.qualityGates().insertQualityGate(); - QualityGateDto qualityGate2 = db.qualityGates().insertQualityGate(); - QualityGateDto qualityGate3 = db.qualityGates().insertQualityGate(); - - assertThat(underTest.selectByDefaultOrganizationAndUuid(dbSession, qualityGate1.getUuid()).getUuid()).isEqualTo(qualityGate1.getUuid()); - assertThat(underTest.selectByDefaultOrganizationAndUuid(dbSession, qualityGate3.getUuid()).getUuid()).isEqualTo(qualityGate3.getUuid()); - assertThat(underTest.selectByDefaultOrganizationAndUuid(dbSession, "123")).isNull(); - } - - @Test public void select_by_project_uuid() { ProjectDto project = db.components().insertPrivateProjectDto(); @@ -161,10 +124,8 @@ public class QualityGateDaoTest { underTest.delete(qualityGate, dbSession); dbSession.commit(); - assertThat(underTest.selectByDefaultOrganizationAndUuid(dbSession, qualityGate.getUuid())).isNull(); - assertThat(db.countSql(dbSession, format("select count(*) from org_quality_gates where quality_gate_uuid='%s'", qualityGate.getUuid()))).isZero(); - assertThat(underTest.selectByDefaultOrganizationAndUuid(dbSession, otherQualityGate.getUuid())).isNotNull(); - assertThat(db.countSql(dbSession, format("select count(*) from org_quality_gates where quality_gate_uuid='%s'", otherQualityGate.getUuid()))).isEqualTo(1); + assertThat(underTest.selectByUuid(dbSession, qualityGate.getUuid())).isNull(); + assertThat(underTest.selectByUuid(dbSession, otherQualityGate.getUuid())).isNotNull(); } @Test @@ -189,22 +150,6 @@ public class QualityGateDaoTest { assertThat(db.countRowsOfTable(dbSession, "quality_gates")).isEqualTo(nbOfQualityGates); } - // TODO:: - // @Test - // public void deleteOrgQualityGatesByOrganization() { - // OrganizationDto organization = db.organizations().insert(); - // qualityGateDbTester.insertQualityGate(organization); - // OrganizationDto otherOrganization = db.organizations().insert(); - // qualityGateDbTester.insertQualityGate(otherOrganization); - // - // underTest.deleteOrgQualityGatesByOrganization(dbSession, organization); - // dbSession.commit(); - // - // assertThat(db.select("select organization_uuid as \"organizationUuid\" from org_quality_gates")) - // .extracting(row -> (String) row.get("organizationUuid")) - // .containsOnly(otherOrganization.getUuid()); - // } - @Test public void update() { QualityGateDto qualityGate = qualityGateDbTester.insertQualityGate(qg -> qg.setName("old name")); @@ -212,10 +157,38 @@ public class QualityGateDaoTest { underTest.update(qualityGate.setName("Not so strict"), dbSession); dbSession.commit(); - QualityGateDto reloaded = underTest.selectByDefaultOrganizationAndUuid(dbSession, qualityGate.getUuid()); + QualityGateDto reloaded = underTest.selectByUuid(dbSession, qualityGate.getUuid()); assertThat(reloaded.getName()).isEqualTo("Not so strict"); } + @Test + public void selectBuiltIn() { + QualityGateDto builtInQualityGate = qualityGateDbTester.insertQualityGate(qg -> qg.setName("Built in").setBuiltIn(true)); + QualityGateDto qualityGate = qualityGateDbTester.insertQualityGate(qg -> qg.setName("Random quality gate").setBuiltIn(false)); + dbSession.commit(); + + QualityGateDto result = underTest.selectBuiltIn(dbSession); + + assertThat(result.getUuid()).isEqualTo(builtInQualityGate.getUuid()); + assertThat(result.getName()).isEqualTo(builtInQualityGate.getName()); + } + + @Test + public void ensureOneBuiltInQualityGate() { + String builtInQgName = "Sonar Way"; + QualityGateDto builtInQualityGate = qualityGateDbTester.insertQualityGate(qg -> qg.setName(builtInQgName).setBuiltIn(true)); + QualityGateDto qualityGate1 = qualityGateDbTester.insertQualityGate(qg -> qg.setName("QG1").setBuiltIn(true)); + QualityGateDto qualityGate2 = qualityGateDbTester.insertQualityGate(qg -> qg.setName("QG2")); + + underTest.ensureOneBuiltInQualityGate(dbSession, builtInQgName); + dbSession.commit(); + + QualityGateDto reloaded = underTest.selectByName(dbSession, builtInQgName); + assertThat(reloaded.getUuid()).isEqualTo(builtInQualityGate.getUuid()); + assertThat(reloaded.getName()).isEqualTo(builtInQualityGate.getName()); + assertThat(reloaded.isBuiltIn()).isTrue(); + } + private void insertQualityGates() { qualityGateDbTester.insertQualityGate(g -> g.setName("Very strict").setBuiltIn(false)); qualityGateDbTester.insertQualityGate(g -> g.setName("Balanced").setBuiltIn(false)); diff --git a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/qualitygate/QualityGateDbTester.java b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/qualitygate/QualityGateDbTester.java index 7717df2cda6..e33bf030aca 100644 --- a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/qualitygate/QualityGateDbTester.java +++ b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/qualitygate/QualityGateDbTester.java @@ -28,7 +28,6 @@ import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.DbTester; import org.sonar.db.metric.MetricDto; -import org.sonar.db.organization.OrganizationDto; import org.sonar.db.project.ProjectDto; import org.sonar.db.property.PropertyDto; @@ -59,22 +58,15 @@ public class QualityGateDbTester { } @SafeVarargs - public final QGateWithOrgDto insertQualityGate(Consumer<QualityGateDto>... dtoPopulators) { - return insertQualityGate(db.getDefaultOrganization(), dtoPopulators); - } - - @Deprecated - @SafeVarargs - public final QGateWithOrgDto insertQualityGate(OrganizationDto organization, Consumer<QualityGateDto>... dtoPopulators) { + public final QualityGateDto insertQualityGate(Consumer<QualityGateDto>... dtoPopulators) { QualityGateDto qualityGate = new QualityGateDto() .setName(randomAlphanumeric(30)) .setUuid(Uuids.createFast()) .setBuiltIn(false); Arrays.stream(dtoPopulators).forEach(dtoPopulator -> dtoPopulator.accept(qualityGate)); dbClient.qualityGateDao().insert(dbSession, qualityGate); - dbClient.qualityGateDao().associate(dbSession, Uuids.createFast(), organization, qualityGate); db.commit(); - return dbClient.qualityGateDao().selectByOrganizationAndUuid(dbSession, organization, qualityGate.getUuid()); + return dbClient.qualityGateDao().selectByUuid(dbSession, qualityGate.getUuid()); } public void associateProjectToQualityGate(ProjectDto project, QualityGateDto qualityGate) { @@ -82,12 +74,6 @@ public class QualityGateDbTester { db.commit(); } - @Deprecated - public void associateQualityGateToOrganization(QualityGateDto qualityGate, OrganizationDto organization) { - dbClient.qualityGateDao().associate(dbSession, Uuids.createFast(), organization, qualityGate); - db.commit(); - } - @SafeVarargs public final QualityGateDto createDefaultQualityGate(Consumer<QualityGateDto>... dtoPopulators) { QualityGateDto defaultQGate = insertQualityGate(dtoPopulators); |