From d90dd910bccd6790fccd748eb57048956e2fece8 Mon Sep 17 00:00:00 2001 From: Daniel Schwarz Date: Fri, 3 Mar 2017 15:34:43 +0100 Subject: [PATCH] SONAR-8857 allow qprofiles with same lang and name in different orgs --- .../db/qualityprofile/QualityProfileDao.java | 17 +++++++++++++++++ .../db/qualityprofile/QualityProfileMapper.java | 13 +++++++++++++ .../server/qualityprofile/QProfileFactory.java | 4 ++-- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/QualityProfileDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/QualityProfileDao.java index 055a84f83d5..41540f58662 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/QualityProfileDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/QualityProfileDao.java @@ -149,15 +149,32 @@ public class QualityProfileDao implements Dao { return descendants; } + /** + * @deprecated provide organization + */ + @Deprecated @CheckForNull public QualityProfileDto selectByNameAndLanguage(String name, String language, DbSession session) { return mapper(session).selectByNameAndLanguage(name, language); } + @CheckForNull + public QualityProfileDto selectByNameAndLanguage(String organizationUuid, String name, String language, DbSession session) { + return mapper(session).selectByNameAndLanguage(organizationUuid, name, language); + } + + /** + * @deprecated provide organization + */ + @Deprecated public List selectByNameAndLanguages(String name, Collection languageKeys, DbSession session) { return executeLargeInputs(languageKeys, input -> mapper(session).selectByNameAndLanguages(name, input)); } + public List selectByNameAndLanguages(String organizationUuid, String name, Collection languageKeys, DbSession session) { + return executeLargeInputs(languageKeys, input -> mapper(session).selectByNameAndLanguages(organizationUuid, name, input)); + } + public List selectProjects(String profileName, String language, DbSession session) { return mapper(session).selectProjects(profileName, language); } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/QualityProfileMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/QualityProfileMapper.java index a44f43ce468..3a939ec57d0 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/QualityProfileMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/qualityprofile/QualityProfileMapper.java @@ -39,11 +39,24 @@ public interface QualityProfileMapper { List selectDefaultProfiles(@Param("languages") List languages); + /** + * @deprecated provide organization + */ + @Deprecated @CheckForNull QualityProfileDto selectByNameAndLanguage(@Param("name") String name, @Param("language") String language); + @CheckForNull + QualityProfileDto selectByNameAndLanguage(@Param("organizationUuid") String organizationUuid, @Param("name") String name, @Param("language") String language); + + /** + * @deprecated provide organization + */ + @Deprecated List selectByNameAndLanguages(@Param("name") String name, @Param("languages") List languages); + List selectByNameAndLanguages(@Param("organizationUuid") String organizationUuid, @Param("name") String name, @Param("languages") List languages); + @CheckForNull QualityProfileDto selectById(@Param("id") Integer id); diff --git a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileFactory.java b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileFactory.java index b6bcee7cc12..891440a56c6 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileFactory.java +++ b/server/sonar-server/src/main/java/org/sonar/server/qualityprofile/QProfileFactory.java @@ -56,7 +56,7 @@ public class QProfileFactory { QualityProfileDto getOrCreate(DbSession dbSession, String organizationUuid, QProfileName name) { Preconditions.checkArgument(StringUtils.isNotEmpty(organizationUuid), "Organization is required, when creating a quality profile."); - QualityProfileDto profile = db.qualityProfileDao().selectByNameAndLanguage(name.getName(), name.getLanguage(), dbSession); + QualityProfileDto profile = db.qualityProfileDao().selectByNameAndLanguage(organizationUuid, name.getName(), name.getLanguage(), dbSession); if (profile == null) { profile = doCreate(dbSession, organizationUuid, name); } @@ -65,7 +65,7 @@ public class QProfileFactory { public QualityProfileDto create(DbSession dbSession, String organizationUuid, QProfileName name) { Preconditions.checkArgument(StringUtils.isNotEmpty(organizationUuid), "Organization is required, when creating a quality profile."); - QualityProfileDto dto = db.qualityProfileDao().selectByNameAndLanguage(name.getName(), name.getLanguage(), dbSession); + QualityProfileDto dto = db.qualityProfileDao().selectByNameAndLanguage(organizationUuid, name.getName(), name.getLanguage(), dbSession); checkRequest(dto == null, "Quality profile already exists: %s", name); return doCreate(dbSession, organizationUuid, name); } -- 2.39.5