From 5e87ef770b0195d7abfbcf071232940ae14588b5 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Mon, 23 Dec 2013 22:36:03 +0100 Subject: [PATCH] SONAR-4535 Add some check when creating new rule --- .../resources/org/sonar/l10n/core.properties | 1 + .../java/org/sonar/core/rule/RuleDao.java | 10 +++- .../java/org/sonar/core/rule/RuleMapper.java | 2 + .../org/sonar/core/rule/RuleMapper.xml | 4 ++ .../java/org/sonar/core/rule/RuleDaoTest.java | 12 +++++ .../core/rule/RuleDaoTest/select_by_name.xml | 6 +++ .../exceptions/BadRequestException.java | 3 +- .../issue/InternalRubyIssueService.java | 11 ++-- .../server/qualityprofile/QProfiles.java | 52 ++++++++++++++----- .../org/sonar/server/util/Validation.java | 11 ++-- .../app/controllers/application_controller.rb | 9 ++-- .../server/qualityprofile/QProfilesTest.java | 46 ++++++++++++++++ 12 files changed, 136 insertions(+), 31 deletions(-) create mode 100644 sonar-core/src/test/resources/org/sonar/core/rule/RuleDaoTest/select_by_name.xml diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties b/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties index e9f259b70c4..a384edfb355 100644 --- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties +++ b/plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties @@ -2486,6 +2486,7 @@ permission_template.default_for=Default for {0} #------------------------------------------------------------------------------ errors.is_too_short={0} is too short (minimum is {1} characters) errors.is_too_long={0} is too long (maximum is {1} characters) +errors.is_already_used={0} has already been taken errors.cant_be_empty={0} can't be empty errors.is_not_valid={0} is not valid diff --git a/sonar-core/src/main/java/org/sonar/core/rule/RuleDao.java b/sonar-core/src/main/java/org/sonar/core/rule/RuleDao.java index c768b85e0ad..482835a57b6 100644 --- a/sonar-core/src/main/java/org/sonar/core/rule/RuleDao.java +++ b/sonar-core/src/main/java/org/sonar/core/rule/RuleDao.java @@ -25,7 +25,6 @@ import org.sonar.api.ServerComponent; import org.sonar.core.persistence.MyBatis; import javax.annotation.CheckForNull; - import java.util.Collection; import java.util.List; @@ -64,6 +63,15 @@ public class RuleDao implements BatchComponent, ServerComponent { } } + public RuleDto selectByName(String name) { + SqlSession session = mybatis.openSession(); + try { + return getMapper(session).selectByName(name); + } finally { + MyBatis.closeQuietly(session); + } + } + public void update(RuleDto rule) { SqlSession session = mybatis.openSession(); try { diff --git a/sonar-core/src/main/java/org/sonar/core/rule/RuleMapper.java b/sonar-core/src/main/java/org/sonar/core/rule/RuleMapper.java index 405220f7fab..9b2698d9453 100644 --- a/sonar-core/src/main/java/org/sonar/core/rule/RuleMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/rule/RuleMapper.java @@ -30,6 +30,8 @@ public interface RuleMapper { RuleDto selectById(Integer id); + RuleDto selectByName(String name); + void update(RuleDto rule); void batchInsert(RuleDto rule); diff --git a/sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml b/sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml index 96243fe2028..efa9a1f7290 100644 --- a/sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml @@ -31,6 +31,10 @@ select from rules WHERE id=#{id} + +