/src/main/java/com/atlassian/jira/collector/plugin/components/CollectorServiceImpl.java
Java | 190 lines | 156 code | 27 blank | 7 comment | 17 complexity | 198c7b2d2049e29bf8e0262478e13f87 MD5 | raw file
- package com.atlassian.jira.collector.plugin.components;
- import com.atlassian.crowd.embedded.api.User;
- import com.atlassian.jira.bc.ServiceOutcome;
- import com.atlassian.jira.bc.ServiceOutcomeImpl;
- import com.atlassian.jira.project.Project;
- import com.atlassian.jira.project.ProjectManager;
- import com.atlassian.jira.security.PermissionManager;
- import com.atlassian.jira.security.Permissions;
- import com.atlassian.jira.user.util.UserUtil;
- import com.atlassian.jira.util.ErrorCollection;
- import com.atlassian.jira.util.I18nHelper;
- import com.atlassian.jira.util.SimpleErrorCollection;
- import org.apache.commons.lang.StringUtils;
- import java.util.List;
- /**
- * TODO: Document this class / interface here
- */
- public class CollectorServiceImpl implements CollectorService
- {
- private final PermissionManager permissionManager;
- private final I18nHelper.BeanFactory beanFactory;
- private final CollectorStore collectorStore;
- private final ProjectManager projectManager;
- private final UserUtil userUtil;
- private final TemplateStore templateStore;
- public CollectorServiceImpl(final PermissionManager permissionManager,
- final I18nHelper.BeanFactory beanFactory, final CollectorStore collectorStore, final ProjectManager projectManager,
- final UserUtil userUtil, final TemplateStore templateStore)
- {
- this.permissionManager = permissionManager;
- this.beanFactory = beanFactory;
- this.collectorStore = collectorStore;
- this.projectManager = projectManager;
- this.userUtil = userUtil;
- this.templateStore = templateStore;
- }
- @Override
- public ServiceOutcome<Collector> getCollector(final String collectorId)
- {
- final ErrorCollection errors = new SimpleErrorCollection();
- //no permission checks here since anonymous users may be requesting a collector!
- return new ServiceOutcomeImpl<Collector>(errors, collectorStore.getCollector(collectorId));
- }
- @Override
- public ServiceOutcome<List<Collector>> getCollectors(final User remoteUser)
- {
- final ErrorCollection errors = new SimpleErrorCollection();
- final I18nHelper i18n = beanFactory.getInstance(remoteUser);
- if (!permissionManager.hasPermission(Permissions.ADMINISTER, remoteUser))
- {
- errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
- return new ServiceOutcomeImpl<List<Collector>>(errors);
- }
- return new ServiceOutcomeImpl<List<Collector>>(errors, collectorStore.getCollectors());
- }
- @Override
- public ServiceOutcome<Collector> validateCreateCollector(final User remoteUser, final String name, final Long projectId,
- final Long issueTypeId, final String reporter, final String description, final String templateId,
- final boolean recordWebInfo, final boolean useCredentials, final Trigger trigger)
- {
- final ErrorCollection errors = new SimpleErrorCollection();
- final I18nHelper i18n = beanFactory.getInstance(remoteUser);
- if (!permissionManager.hasPermission(Permissions.ADMINISTER, remoteUser))
- {
- errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
- return new ServiceOutcomeImpl<Collector>(errors);
- }
- if(StringUtils.isBlank(name))
- {
- errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.no.name"));
- }
- final Project project = projectManager.getProjectObj(projectId);
- if (project == null)
- {
- errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.no.project"));
- }
- User reporterUser = userUtil.getUserObject(reporter);
- if (reporterUser == null)
- {
- errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.no.reporter", reporter));
- }
- final Template template = templateStore.getTemplate(templateId);
- if (template == null)
- {
- errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.no.template", templateId));
- }
- if (errors.hasAnyErrors())
- {
- return new ServiceOutcomeImpl<Collector>(errors);
- }
- final Collector collector = new Collector.Builder().
- name(name).
- projectId(projectId).
- issueTypeId(issueTypeId).
- reporter(reporter).
- description(description).
- template(template).
- enabled(true).
- recoredWebInfo(recordWebInfo).
- useCredentials(useCredentials).
- trigger(trigger).
- build();
- return new ServiceOutcomeImpl<Collector>(errors, collector);
- }
- @Override
- public ServiceOutcome<Collector> createCollector(final User remoteUser, final ServiceOutcome<Collector> outcome)
- {
- final ErrorCollection errors = new SimpleErrorCollection();
- if (outcome.getReturnedValue() == null)
- {
- throw new IllegalArgumentException("Validation result contained no value!");
- }
- return new ServiceOutcomeImpl<Collector>(errors, collectorStore.addCollector(outcome.getReturnedValue()));
- }
- @Override
- public ServiceOutcome<Boolean> enableCollector(final User remoteUser, final String collectorId)
- {
- final ErrorCollection errors = new SimpleErrorCollection();
- final I18nHelper i18n = beanFactory.getInstance(remoteUser);
- if (!permissionManager.hasPermission(Permissions.ADMINISTER, remoteUser))
- {
- errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
- return new ServiceOutcomeImpl<Boolean>(errors);
- }
- //TODO: Should check if collector exists!
- return new ServiceOutcomeImpl<Boolean>(errors, collectorStore.enableCollector(collectorId));
- }
- @Override
- public ServiceOutcome<Boolean> disableCollector(final User remoteUser, final String collectorId)
- {
- final ErrorCollection errors = new SimpleErrorCollection();
- final I18nHelper i18n = beanFactory.getInstance(remoteUser);
- if (!permissionManager.hasPermission(Permissions.ADMINISTER, remoteUser))
- {
- errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
- return new ServiceOutcomeImpl<Boolean>(errors);
- }
- //TODO: Should check if collector exists!
- return new ServiceOutcomeImpl<Boolean>(errors, collectorStore.disableCollector(collectorId));
- }
- @Override
- public ServiceOutcome<String> validateDeleteCollector(final User loggedInUser, final String collectorId)
- {
- final ErrorCollection errors = new SimpleErrorCollection();
- final I18nHelper i18n = beanFactory.getInstance(loggedInUser);
- if (!permissionManager.hasPermission(Permissions.ADMINISTER, loggedInUser))
- {
- errors.addErrorMessage(i18n.getText("collector.plugin.admin.error.view.no.permission"));
- return new ServiceOutcomeImpl<String>(errors);
- }
- //TODO: Should check if collector exists!
- return new ServiceOutcomeImpl<String>(errors, collectorId);
- }
- @Override
- public void deleteCollector(final User loggedInUser, final ServiceOutcome<String> validationResult)
- {
- if(validationResult.getReturnedValue() == null)
- {
- throw new IllegalArgumentException("Got emtpy validation result!");
- }
- collectorStore.deleteCollector(validationResult.getReturnedValue());
- }
- }