private void validateCustomRule(NewRule newRule, DbSession dbSession, RuleKey templateKey) { Errors errors = new Errors(); validateRuleKey(errors, newRule.ruleKey()); validateName(errors, newRule); validateDescription(errors, newRule); String severity = newRule.severity(); if (Strings.isNullOrEmpty(severity)) { errors.add(Message.of("coding_rules.validation.missing_severity")); } else if (!Severity.ALL.contains(severity)) { errors.add(Message.of("coding_rules.validation.invalid_severity", severity)); } if (newRule.status() == null) { errors.add(Message.of("coding_rules.validation.missing_status")); } for (RuleParamDto ruleParam : dbClient.ruleDao().findRuleParamsByRuleKey(dbSession, templateKey)) { try { validateParam(ruleParam, newRule.parameter(ruleParam.getName())); } catch (BadRequestException validationError) { errors.add(validationError.errors()); } } if (!errors.isEmpty()) { throw new BadRequestException(errors); } }
private static void validateManualRule(NewRule newRule) { Errors errors = new Errors(); validateRuleKey(errors, newRule.ruleKey()); validateName(errors, newRule); validateDescription(errors, newRule); if (!newRule.parameters().isEmpty()) { errors.add(Message.of("coding_rules.validation.manual_rule_params")); } if (!errors.isEmpty()) { throw new BadRequestException(errors); } }
private RuleKey createManualRule(NewRule newRule, DbSession dbSession) { validateManualRule(newRule); RuleKey customRuleKey = RuleKey.of(RuleDoc.MANUAL_REPOSITORY, newRule.ruleKey()); RuleDto existingRule = loadRule(customRuleKey, dbSession); if (existingRule != null) { updateExistingRule(existingRule, newRule, dbSession); } else { createManualRule(customRuleKey, newRule, dbSession); } dbSession.commit(); return customRuleKey; }
private RuleKey createCustomRule(NewRule newRule, DbSession dbSession) { RuleKey templateKey = newRule.templateKey(); if (templateKey == null) { throw new IllegalArgumentException("Rule template key should not be null"); } RuleDto templateRule = dbClient.ruleDao().getByKey(dbSession, templateKey); if (!templateRule.isTemplate()) { throw new IllegalArgumentException( "This rule is not a template rule: " + templateKey.toString()); } validateCustomRule(newRule, dbSession, templateKey); RuleKey customRuleKey = RuleKey.of(templateRule.getRepositoryKey(), newRule.ruleKey()); RuleDto existingRule = loadRule(customRuleKey, dbSession); if (existingRule != null) { updateExistingRule(existingRule, newRule, dbSession); } else { createCustomRule(customRuleKey, newRule, templateRule, dbSession); } dbSession.commit(); return customRuleKey; }