PageRenderTime 42ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/java/com/atlassian/jira/collector/plugin/components/CollectorServiceImpl.java

https://bitbucket.org/knecht_andreas/jira-issue-collector-plugin/
Java | 190 lines | 156 code | 27 blank | 7 comment | 17 complexity | 198c7b2d2049e29bf8e0262478e13f87 MD5 | raw file
  1. package com.atlassian.jira.collector.plugin.components;
  2. import com.atlassian.crowd.embedded.api.User;
  3. import com.atlassian.jira.bc.ServiceOutcome;
  4. import com.atlassian.jira.bc.ServiceOutcomeImpl;
  5. import com.atlassian.jira.project.Project;
  6. import com.atlassian.jira.project.ProjectManager;
  7. import com.atlassian.jira.security.PermissionManager;
  8. import com.atlassian.jira.security.Permissions;
  9. import com.atlassian.jira.user.util.UserUtil;
  10. import com.atlassian.jira.util.ErrorCollection;
  11. import com.atlassian.jira.util.I18nHelper;
  12. import com.atlassian.jira.util.SimpleErrorCollection;
  13. import org.apache.commons.lang.StringUtils;
  14. import java.util.List;
  15. /**
  16. * TODO: Document this class / interface here
  17. */
  18. public class CollectorServiceImpl implements CollectorService
  19. {
  20. private final PermissionManager permissionManager;
  21. private final I18nHelper.BeanFactory beanFactory;
  22. private final CollectorStore collectorStore;
  23. private final ProjectManager projectManager;
  24. private final UserUtil userUtil;
  25. private final TemplateStore templateStore;
  26. public CollectorServiceImpl(final PermissionManager permissionManager,
  27. final I18nHelper.BeanFactory beanFactory, final CollectorStore collectorStore, final ProjectManager projectManager,
  28. final UserUtil userUtil, final TemplateStore templateStore)
  29. {
  30. this.permissionManager = permissionManager;
  31. this.beanFactory = beanFactory;
  32. this.collectorStore = collectorStore;
  33. this.projectManager = projectManager;
  34. this.userUtil = userUtil;
  35. this.templateStore = templateStore;
  36. }
  37. @Override
  38. public ServiceOutcome<Collector> getCollector(final String collectorId)
  39. {
  40. final ErrorCollection errors = new SimpleErrorCollection();
  41. //no permission checks here since anonymous users may be requesting a collector!
  42. return new ServiceOutcomeImpl<Collector>(errors, collectorStore.getCollector(collectorId));
  43. }
  44. @Override
  45. public ServiceOutcome<List<Collector>> getCollectors(final User remoteUser)
  46. {
  47. final ErrorCollection errors = new SimpleErrorCollection();
  48. final I18nHelper i18n = beanFactory.getInstance(remoteUser);
  49. if (!permissionManager.hasPermission(Permissions.ADMINISTER, remoteUser))
  50. {
  51. errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
  52. return new ServiceOutcomeImpl<List<Collector>>(errors);
  53. }
  54. return new ServiceOutcomeImpl<List<Collector>>(errors, collectorStore.getCollectors());
  55. }
  56. @Override
  57. public ServiceOutcome<Collector> validateCreateCollector(final User remoteUser, final String name, final Long projectId,
  58. final Long issueTypeId, final String reporter, final String description, final String templateId,
  59. final boolean recordWebInfo, final boolean useCredentials, final Trigger trigger)
  60. {
  61. final ErrorCollection errors = new SimpleErrorCollection();
  62. final I18nHelper i18n = beanFactory.getInstance(remoteUser);
  63. if (!permissionManager.hasPermission(Permissions.ADMINISTER, remoteUser))
  64. {
  65. errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
  66. return new ServiceOutcomeImpl<Collector>(errors);
  67. }
  68. if(StringUtils.isBlank(name))
  69. {
  70. errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.no.name"));
  71. }
  72. final Project project = projectManager.getProjectObj(projectId);
  73. if (project == null)
  74. {
  75. errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.no.project"));
  76. }
  77. User reporterUser = userUtil.getUserObject(reporter);
  78. if (reporterUser == null)
  79. {
  80. errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.no.reporter", reporter));
  81. }
  82. final Template template = templateStore.getTemplate(templateId);
  83. if (template == null)
  84. {
  85. errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.no.template", templateId));
  86. }
  87. if (errors.hasAnyErrors())
  88. {
  89. return new ServiceOutcomeImpl<Collector>(errors);
  90. }
  91. final Collector collector = new Collector.Builder().
  92. name(name).
  93. projectId(projectId).
  94. issueTypeId(issueTypeId).
  95. reporter(reporter).
  96. description(description).
  97. template(template).
  98. enabled(true).
  99. recoredWebInfo(recordWebInfo).
  100. useCredentials(useCredentials).
  101. trigger(trigger).
  102. build();
  103. return new ServiceOutcomeImpl<Collector>(errors, collector);
  104. }
  105. @Override
  106. public ServiceOutcome<Collector> createCollector(final User remoteUser, final ServiceOutcome<Collector> outcome)
  107. {
  108. final ErrorCollection errors = new SimpleErrorCollection();
  109. if (outcome.getReturnedValue() == null)
  110. {
  111. throw new IllegalArgumentException("Validation result contained no value!");
  112. }
  113. return new ServiceOutcomeImpl<Collector>(errors, collectorStore.addCollector(outcome.getReturnedValue()));
  114. }
  115. @Override
  116. public ServiceOutcome<Boolean> enableCollector(final User remoteUser, final String collectorId)
  117. {
  118. final ErrorCollection errors = new SimpleErrorCollection();
  119. final I18nHelper i18n = beanFactory.getInstance(remoteUser);
  120. if (!permissionManager.hasPermission(Permissions.ADMINISTER, remoteUser))
  121. {
  122. errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
  123. return new ServiceOutcomeImpl<Boolean>(errors);
  124. }
  125. //TODO: Should check if collector exists!
  126. return new ServiceOutcomeImpl<Boolean>(errors, collectorStore.enableCollector(collectorId));
  127. }
  128. @Override
  129. public ServiceOutcome<Boolean> disableCollector(final User remoteUser, final String collectorId)
  130. {
  131. final ErrorCollection errors = new SimpleErrorCollection();
  132. final I18nHelper i18n = beanFactory.getInstance(remoteUser);
  133. if (!permissionManager.hasPermission(Permissions.ADMINISTER, remoteUser))
  134. {
  135. errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
  136. return new ServiceOutcomeImpl<Boolean>(errors);
  137. }
  138. //TODO: Should check if collector exists!
  139. return new ServiceOutcomeImpl<Boolean>(errors, collectorStore.disableCollector(collectorId));
  140. }
  141. @Override
  142. public ServiceOutcome<String> validateDeleteCollector(final User loggedInUser, final String collectorId)
  143. {
  144. final ErrorCollection errors = new SimpleErrorCollection();
  145. final I18nHelper i18n = beanFactory.getInstance(loggedInUser);
  146. if (!permissionManager.hasPermission(Permissions.ADMINISTER, loggedInUser))
  147. {
  148. errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
  149. return new ServiceOutcomeImpl<String>(errors);
  150. }
  151. //TODO: Should check if collector exists!
  152. return new ServiceOutcomeImpl<String>(errors, collectorId);
  153. }
  154. @Override
  155. public void deleteCollector(final User loggedInUser, final ServiceOutcome<String> validationResult)
  156. {
  157. if(validationResult.getReturnedValue() == null)
  158. {
  159. throw new IllegalArgumentException("Got emtpy validation result!");
  160. }
  161. collectorStore.deleteCollector(validationResult.getReturnedValue());
  162. }
  163. }