propertiesDao.setProperty(new PropertyDto().setKey(PROPERTY_PREFIX + qualityProfile.getLanguage()).setValue(qualityProfile.getName()));
}
- public RuleActivationResult activateRule(QualityProfileDto qualityProfile, Rule rule, String severity, UserSession userSession) {
+ public RuleActivationResult createActiveRule(QualityProfileDto qualityProfile, Rule rule, String severity, UserSession userSession) {
checkPermission(userSession);
-
SqlSession session = myBatis.openSession();
try {
- ActiveRuleDto activeRule = findActiveRule(qualityProfile, rule);
- if (activeRule == null) {
- activeRule = newActiveRule(qualityProfile, rule, severity, userSession, session);
- } else {
- updateSeverity(activeRule, severity, userSession, session);
+ ActiveRuleDto activeRule = new ActiveRuleDto()
+ .setProfileId(qualityProfile.getId())
+ .setRuleId(rule.getId())
+ .setSeverity(Severity.ordinal(severity));
+ activeRuleDao.insert(activeRule, session);
+
+ List<RuleParamDto> ruleParams = ruleDao.selectParameters(rule.getId(), session);
+ List<ActiveRuleParamDto> activeRuleParams = Lists.newArrayList();
+ for (RuleParamDto ruleParam : ruleParams) {
+ ActiveRuleParamDto activeRuleParam = new ActiveRuleParamDto()
+ .setActiveRuleId(activeRule.getId())
+ .setRulesParameterId(ruleParam.getId())
+ .setKey(ruleParam.getName())
+ .setValue(ruleParam.getDefaultValue());
+ activeRuleParams.add(activeRuleParam);
+ activeRuleDao.insert(activeRuleParam, session);
}
+ session.commit();
+
+ ruleRegistry.save(activeRule, activeRuleParams);
+
+ profilesManager.activated(qualityProfile.getId(), activeRule.getId(), userSession.name());
return new RuleActivationResult(QProfile.from(qualityProfile), profileRules.getFromActiveRuleId(activeRule.getId()));
} finally {
MyBatis.closeQuietly(session);
}
}
- private ActiveRuleDto newActiveRule(QualityProfileDto qualityProfile, Rule rule, String severity, UserSession userSession, SqlSession session) {
- ActiveRuleDto activeRuleDto = new ActiveRuleDto()
- .setProfileId(qualityProfile.getId())
- .setRuleId(rule.getId())
- .setSeverity(Severity.ordinal(severity));
- activeRuleDao.insert(activeRuleDto, session);
-
- List<RuleParamDto> ruleParams = ruleDao.selectParameters(rule.getId(), session);
- List<ActiveRuleParamDto> activeRuleParams = Lists.newArrayList();
- for (RuleParamDto ruleParam : ruleParams) {
- ActiveRuleParamDto activeRuleParam = new ActiveRuleParamDto()
- .setActiveRuleId(activeRuleDto.getId())
- .setRulesParameterId(ruleParam.getId())
- .setKey(ruleParam.getName())
- .setValue(ruleParam.getDefaultValue());
- activeRuleParams.add(activeRuleParam);
- activeRuleDao.insert(activeRuleParam, session);
- }
- session.commit();
-
- ruleRegistry.save(activeRuleDto, activeRuleParams);
-
- profilesManager.activated(qualityProfile.getId(), activeRuleDto.getId(), userSession.name());
- return activeRuleDto;
- }
-
- private void updateSeverity(ActiveRuleDto activeRule, String newSeverity, UserSession userSession, SqlSession session) {
- Integer oldSeverity = activeRule.getSeverity();
- activeRule.setSeverity(Severity.ordinal(newSeverity));
- activeRuleDao.update(activeRule, session);
- session.commit();
+ public RuleActivationResult updateSeverity(QualityProfileDto qualityProfile, ActiveRuleDto activeRule, String newSeverity, UserSession userSession) {
+ checkPermission(userSession);
+ SqlSession session = myBatis.openSession();
+ try {
+ Integer oldSeverity = activeRule.getSeverity();
+ activeRule.setSeverity(Severity.ordinal(newSeverity));
+ activeRuleDao.update(activeRule, session);
+ session.commit();
- profilesManager.ruleSeverityChanged(activeRule.getProfileId(), activeRule.getId(), RulePriority.valueOfInt(oldSeverity), RulePriority.valueOf(newSeverity),
- userSession.name());
+ profilesManager.ruleSeverityChanged(activeRule.getProfileId(), activeRule.getId(), RulePriority.valueOfInt(oldSeverity), RulePriority.valueOf(newSeverity),
+ userSession.name());
+ return new RuleActivationResult(QProfile.from(qualityProfile), profileRules.getFromActiveRuleId(activeRule.getId()));
+ } finally {
+ MyBatis.closeQuietly(session);
+ }
}
public RuleActivationResult deactivateRule(QualityProfileDto qualityProfile, Rule rule, UserSession userSession) {
public void createActiveRuleParam(ActiveRuleDto activeRule, String key, String value, UserSession userSession) {
checkPermission(userSession);
- // TODO inheritance
-
SqlSession session = myBatis.openSession();
try {
createActiveRuleParam(activeRule, key, value, session);
public void deleteActiveRuleParam(ActiveRuleDto activeRule, ActiveRuleParamDto activeRuleParam, UserSession userSession) {
checkPermission(userSession);
- // TODO inheritance
-
SqlSession session = myBatis.openSession();
try {
activeRuleDao.deleteParameter(activeRuleParam.getId(), session);
public void updateActiveRuleParam(ActiveRuleDto activeRule, ActiveRuleParamDto activeRuleParam, String value, UserSession userSession) {
checkPermission(userSession);
- // TODO inheritance
-
SqlSession session = myBatis.openSession();
try {
String sanitizedValue = Strings.emptyToNull(value);
when(ruleDao.selectParameters(eq(10), eq(session))).thenReturn(newArrayList(new RuleParamDto().setId(20).setName("max").setDefaultValue("10")));
when(profileRules.getFromActiveRuleId(anyInt())).thenReturn(mock(QProfileRule.class));
- RuleActivationResult result = operations.activateRule(qualityProfile, rule, Severity.CRITICAL, MockUserSession.create().setName("nicolas").setGlobalPermissions(GlobalPermissions.QUALITY_PROFILE_ADMIN));
+ RuleActivationResult result = operations.createActiveRule(qualityProfile, rule, Severity.CRITICAL, MockUserSession.create().setName("nicolas").setGlobalPermissions(GlobalPermissions.QUALITY_PROFILE_ADMIN));
assertThat(result.profile()).isNotNull();
assertThat(result.rule()).isNotNull();
assertThat(result.rule().activeRuleId()).isNotNull();
Rule rule = Rule.create().setRepositoryKey("squid").setKey("AvoidCycle");
rule.setId(10);
ActiveRuleDto activeRule = new ActiveRuleDto().setId(5).setProfileId(1).setRuleId(10).setSeverity(1);
- when(activeRuleDao.selectByProfileAndRule(1, 10)).thenReturn(activeRule);
when(profileRules.getFromActiveRuleId(anyInt())).thenReturn(mock(QProfileRule.class));
- RuleActivationResult result = operations.activateRule(qualityProfile, rule, Severity.MAJOR, MockUserSession.create().setName("nicolas").setGlobalPermissions(GlobalPermissions.QUALITY_PROFILE_ADMIN));
+ RuleActivationResult result = operations.updateSeverity(qualityProfile, activeRule, Severity.MAJOR, MockUserSession.create().setName("nicolas").setGlobalPermissions(GlobalPermissions.QUALITY_PROFILE_ADMIN));
assertThat(result.profile()).isNotNull();
assertThat(result.rule()).isNotNull();
assertThat(result.rule().activeRuleId()).isNotNull();
qProfiles.activateRule(1, 10, Severity.BLOCKER);
- verify(service).activateRule(eq(qualityProfile), eq(rule), eq(Severity.BLOCKER), any(UserSession.class));
+ verify(service).createActiveRule(eq(qualityProfile), eq(rule), eq(Severity.BLOCKER), any(UserSession.class));
}
@Test
verifyZeroInteractions(service);
}
+ @Test
+ public void update_severity() throws Exception {
+ QualityProfileDto qualityProfile = new QualityProfileDto().setId(1).setName("My profile").setLanguage("java");
+ when(qualityProfileDao.selectById(1)).thenReturn(qualityProfile);
+
+ ActiveRuleDto activeRule = new ActiveRuleDto().setId(5).setProfileId(1).setRuleId(10).setSeverity(1);
+ when(activeRuleDao.selectByProfileAndRule(1, 10)).thenReturn(activeRule);
+
+ Rule rule = Rule.create().setRepositoryKey("squid").setKey("AvoidCycle");
+ rule.setId(10);
+ when(ruleFinder.findById(10)).thenReturn(rule);
+
+ qProfiles.activateRule(1, 10, Severity.BLOCKER);
+
+ verify(service).updateSeverity(eq(qualityProfile), eq(activeRule), eq(Severity.BLOCKER), any(UserSession.class));
+ }
+
@Test
public void deactivate_rule() throws Exception {
QualityProfileDto qualityProfile = new QualityProfileDto().setId(1).setName("My profile").setLanguage("java");