diff options
Diffstat (limited to 'sonar-server/src/main/java/org/sonar/server/issue/InternalRubyIssueService.java')
-rw-r--r-- | sonar-server/src/main/java/org/sonar/server/issue/InternalRubyIssueService.java | 122 |
1 files changed, 85 insertions, 37 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/issue/InternalRubyIssueService.java b/sonar-server/src/main/java/org/sonar/server/issue/InternalRubyIssueService.java index e944d5a325b..c8c2967d2f5 100644 --- a/sonar-server/src/main/java/org/sonar/server/issue/InternalRubyIssueService.java +++ b/sonar-server/src/main/java/org/sonar/server/issue/InternalRubyIssueService.java @@ -280,41 +280,14 @@ public class InternalRubyIssueService implements ServerComponent { String projectParam = parameters.get("project"); Date deadLine = null; - if (Strings.isNullOrEmpty(name)) { - result.addError(Result.Message.ofL10n("errors.cant_be_empty", "name")); - } else { - if (name.length() > 200) { - result.addError(Result.Message.ofL10n("errors.is_too_long", "name", 200)); - } - } - - if (!Strings.isNullOrEmpty(description) && description.length() > 1000) { - result.addError(Result.Message.ofL10n("errors.is_too_long", "description", 1000)); - } + checkMandatorySizeParameter(name, "name", 200, result); + checkOptionnalSizeParameter(description, "description", 1000, result); // Can only set project on creation if (existingActionPlan == null) { - if (Strings.isNullOrEmpty(projectParam)) { - result.addError(Result.Message.ofL10n("errors.cant_be_empty", "project")); - } else { - ResourceDto project = resourceDao.getResource(ResourceQuery.create().setKey(projectParam)); - if (project == null) { - result.addError(Result.Message.ofL10n("action_plans.errors.project_does_not_exist", projectParam)); - } - } - } - - if (!Strings.isNullOrEmpty(deadLineParam)) { - try { - deadLine = RubyUtils.toDate(deadLineParam); - Date today = new Date(); - if (deadLine != null && deadLine.before(today) && !org.apache.commons.lang.time.DateUtils.isSameDay(deadLine, today)) { - result.addError(Result.Message.ofL10n("action_plans.date_cant_be_in_past")); - } - } catch (SonarException e) { - result.addError(Result.Message.ofL10n("errors.is_not_valid", "date")); - } + checkProject(projectParam, result); } + deadLine = checkAndReturnDeadline(deadLineParam, result); if (!Strings.isNullOrEmpty(projectParam) && !Strings.isNullOrEmpty(name) && (existingActionPlan == null || !name.equals(existingActionPlan.name())) && actionPlanService.isNameAlreadyUsedForProject(name, projectParam)) { @@ -339,6 +312,33 @@ public class InternalRubyIssueService implements ServerComponent { return result; } + private void checkProject(String projectParam, Result<ActionPlan> result){ + if (Strings.isNullOrEmpty(projectParam)) { + result.addError(Result.Message.ofL10n("errors.cant_be_empty", "project")); + } else { + ResourceDto project = resourceDao.getResource(ResourceQuery.create().setKey(projectParam)); + if (project == null) { + result.addError(Result.Message.ofL10n("action_plans.errors.project_does_not_exist", projectParam)); + } + } + } + + private Date checkAndReturnDeadline(String deadLineParam, Result<ActionPlan> result){ + Date deadLine = null; + if (!Strings.isNullOrEmpty(deadLineParam)) { + try { + deadLine = RubyUtils.toDate(deadLineParam); + Date today = new Date(); + if (deadLine != null && deadLine.before(today) && !org.apache.commons.lang.time.DateUtils.isSameDay(deadLine, today)) { + result.addError(Result.Message.ofL10n("action_plans.date_cant_be_in_past")); + } + } catch (SonarException e) { + result.addError(Result.Message.ofL10n("errors.is_not_valid", "date")); + } + } + return deadLine; + } + private Result<ActionPlan> createResultForExistingActionPlan(String actionPlanKey) { Result<ActionPlan> result = Result.of(); if (findActionPlan(actionPlanKey) == null) { @@ -369,6 +369,14 @@ public class InternalRubyIssueService implements ServerComponent { return PublicRubyIssueService.toQuery(props); } + public DefaultIssueFilter findIssueFilter(Long id) { + return issueFilterService.findById(id, UserSession.get()); + } + + public DefaultIssueFilter createFilterFromMap(Map<String, Object> mapData) { + return issueFilterService.createEmptyFilter(mapData); + } + /** * Execute issue filter */ @@ -379,29 +387,69 @@ public class InternalRubyIssueService implements ServerComponent { /** * Create issue filter */ - public void createIssueFilter(Map<String, String> params) { + public Result<DefaultIssueFilter> createIssueFilter(Map<String, String> params) { Result<DefaultIssueFilter> result = Result.of(); try { // mandatory parameters String name = params.get("name"); String description = params.get("description"); String data = params.get("data"); + Boolean shared = RubyUtils.toBoolean(params.get("shared")); if (result.ok()) { - DefaultIssueFilter defaultIssueFilter = new DefaultIssueFilter() - .setName(name) + DefaultIssueFilter defaultIssueFilter = DefaultIssueFilter.create(name) .setDescription(description) - .setData(data) - ; - defaultIssueFilter = issueFilterService.create(defaultIssueFilter, UserSession.get()); + .setShared(shared) + .setData(data); + defaultIssueFilter = issueFilterService.save(defaultIssueFilter, UserSession.get()); result.set(defaultIssueFilter); } } catch (Exception e) { result.addError(e.getMessage()); } + return result; + } + @VisibleForTesting + Result<DefaultIssueFilter> createIssueFilterResult(Map<String, String> params) { + Result<DefaultIssueFilter> result = Result.of(); + + // mandatory parameters + String name = params.get("name"); + String description = params.get("description"); + String data = params.get("data"); + Boolean shared = RubyUtils.toBoolean(params.get("shared")); + + checkMandatorySizeParameter(name, "name", 100, result); + checkOptionnalSizeParameter(description, "description", 4000, result); + + // TODO check name uniquness + + if (result.ok()) { + DefaultIssueFilter defaultIssueFilter = DefaultIssueFilter.create(name) + .setDescription(description) + .setShared(shared) + .setData(data); + result.set(defaultIssueFilter); + } + return result; } + private void checkMandatorySizeParameter(String value, String paramName, Integer size, Result result){ + if (Strings.isNullOrEmpty(value)) { + result.addError(Result.Message.ofL10n("errors.cant_be_empty", paramName)); + } else { + if (value.length() > size) { + result.addError(Result.Message.ofL10n("errors.is_too_long", paramName, size)); + } + } + } + + private void checkOptionnalSizeParameter(String value, String paramName, Integer size, Result result){ + if (!Strings.isNullOrEmpty(value) && value.length() > size) { + result.addError(Result.Message.ofL10n("errors.is_too_long", paramName, size)); + } + } }
\ No newline at end of file |