/src/main/java/com/atlassian/jira/collector/plugin/web/admin/AddCollector.java
Java | 287 lines | 244 code | 42 blank | 1 comment | 4 complexity | 174746655fcd9f2cfe6c24fe56222b15 MD5 | raw file
- package com.atlassian.jira.collector.plugin.web.admin;
- import com.atlassian.crowd.embedded.api.User;
- import com.atlassian.jira.bc.ServiceOutcome;
- import com.atlassian.jira.bc.project.ProjectService;
- import com.atlassian.jira.bc.user.search.UserPickerSearchService;
- import com.atlassian.jira.collector.plugin.components.Collector;
- import com.atlassian.jira.collector.plugin.components.CollectorService;
- import com.atlassian.jira.collector.plugin.components.Template;
- import com.atlassian.jira.collector.plugin.components.TemplateStore;
- import com.atlassian.jira.collector.plugin.components.Trigger;
- import com.atlassian.jira.issue.Issue;
- import com.atlassian.jira.issue.IssueFactory;
- import com.atlassian.jira.issue.IssueFieldConstants;
- import com.atlassian.jira.issue.customfields.OperationContext;
- import com.atlassian.jira.issue.fields.OrderableField;
- import com.atlassian.jira.issue.operation.IssueOperation;
- import com.atlassian.jira.issue.operation.IssueOperations;
- import com.atlassian.jira.project.Project;
- import com.atlassian.jira.security.PermissionManager;
- import com.atlassian.jira.security.Permissions;
- import com.atlassian.jira.security.xsrf.RequiresXsrfCheck;
- import com.atlassian.jira.web.action.JiraWebActionSupport;
- import com.atlassian.sal.api.websudo.WebSudoRequired;
- import webwork.action.ActionContext;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @WebSudoRequired
- public class AddCollector extends JiraWebActionSupport implements OperationContext
- {
- private final CollectorService collectorService;
- private final UserPickerSearchService searchService;
- private final TemplateStore templateStore;
- private final PermissionManager permissionManager;
- private final IssueFactory issueFactory;
- private final ProjectService projectService;
- private final String CUSTOM_FUNC_EXAMPLE = "function(onclickHandler) {\n"
- + "\tvar elem = document.getElementById(\"myCustomTrigger\");\n"
- + "\telem.onclick = onclickHandler;\n"
- + "}";
- private Long pid;
- private Long issuetype;
- private String name;
- private String reporter;
- private String description;
- private String templateId;
- private boolean recordWebInfo;
- private boolean useCredentials;
- private String triggerText;
- private String triggerPosition;
- private String customFunction;
- public AddCollector(final CollectorService collectorService,
- final UserPickerSearchService searchService, final TemplateStore templateStore,
- final PermissionManager permissionManager, final IssueFactory issueFactory, final ProjectService projectService)
- {
- this.collectorService = collectorService;
- this.searchService = searchService;
- this.templateStore = templateStore;
- this.permissionManager = permissionManager;
- this.issueFactory = issueFactory;
- this.projectService = projectService;
- }
- @Override
- public String doDefault() throws Exception
- {
- //some sensible defaults
- this.triggerPosition = Trigger.Position.TOP.toString();
- this.triggerText = "Raise a Bug";
- this.recordWebInfo = true;
- this.useCredentials = false;
- this.templateId = templateStore.getTemplates().get(0).getId();
- this.customFunction = CUSTOM_FUNC_EXAMPLE;
- return INPUT;
- }
- @Override
- protected void doValidation()
- {
- updateCheckboxes();
- final Trigger trigger = new Trigger(triggerText, Trigger.Position.valueOf(triggerPosition), customFunction);
- final ServiceOutcome<Collector> outcome =
- collectorService.validateCreateCollector(getLoggedInUser(), name, pid, issuetype, reporter,
- description, templateId, recordWebInfo, useCredentials, trigger);
- if (!outcome.isValid())
- {
- this.addErrorCollection(outcome.getErrorCollection());
- }
- }
- @Override
- @RequiresXsrfCheck
- protected String doExecute() throws Exception
- {
- updateCheckboxes();
- final Trigger trigger = new Trigger(triggerText, Trigger.Position.valueOf(triggerPosition), customFunction);
- final ServiceOutcome<Collector> outcome =
- collectorService.validateCreateCollector(getLoggedInUser(), name, pid, issuetype, reporter,
- description, templateId, recordWebInfo, useCredentials, trigger);
- if (outcome.isValid())
- {
- final ServiceOutcome<Collector> collector = collectorService.createCollector(getLoggedInUser(), outcome);
- return getRedirect("/secure/admin/InsertCollectorHelp!default.jspa?collectorId=" + collector.getReturnedValue().getId());
- }
- return ERROR;
- }
- public List<Project> getProjects()
- {
- final ServiceOutcome<List<Project>> projects = projectService.getAllProjects(getLoggedInUser());
- return projects.getReturnedValue();
- }
- public String getProjectHtml()
- {
- return getFieldHtml(IssueFieldConstants.PROJECT);
- }
- public String getIssueTypeHtml()
- {
- return getFieldHtml(IssueFieldConstants.ISSUE_TYPE);
- }
- public Long getPid()
- {
- return pid;
- }
- public void setPid(final Long pid)
- {
- this.pid = pid;
- }
- public Long getIssuetype()
- {
- return issuetype;
- }
- public void setIssuetype(final Long issuetype)
- {
- this.issuetype = issuetype;
- }
- public String getName()
- {
- return name;
- }
- public void setName(final String name)
- {
- this.name = name;
- }
- public String getReporter()
- {
- return reporter;
- }
- public void setReporter(final String reporter)
- {
- this.reporter = reporter;
- }
- public String getDescription()
- {
- return description;
- }
- public void setDescription(final String description)
- {
- this.description = description;
- }
- public boolean isRecordWebInfo()
- {
- return recordWebInfo;
- }
- public void setRecordWebInfo(final boolean recordWebInfo)
- {
- this.recordWebInfo = recordWebInfo;
- }
- public boolean isUseCredentials()
- {
- return useCredentials;
- }
- public void setUseCredentials(final boolean useCredentials)
- {
- this.useCredentials = useCredentials;
- }
- public String getTriggerText()
- {
- return triggerText;
- }
- public void setTriggerText(final String triggerText)
- {
- this.triggerText = triggerText;
- }
- public String getTriggerPosition()
- {
- return triggerPosition;
- }
- public void setTriggerPosition(final String triggerPosition)
- {
- this.triggerPosition = triggerPosition;
- }
- public String getCustomFunction()
- {
- return customFunction;
- }
- public void setCustomFunction(final String customFunction)
- {
- this.customFunction = customFunction;
- }
- public String getTemplateId()
- {
- return templateId;
- }
- public void setTemplateId(final String templateId)
- {
- this.templateId = templateId;
- }
- public boolean canPerformAjaxSearch()
- {
- return searchService.canPerformAjaxSearch(getJiraServiceContext());
- }
- public List<Template> getCollectorTemplates()
- {
- return templateStore.getTemplates();
- }
- public boolean isPublicProject(final Project project)
- {
- return permissionManager.hasPermission(Permissions.BROWSE, project, (User) null);
- }
- @Override
- public Map getFieldValuesHolder()
- {
- return new HashMap();
- }
- @Override
- public IssueOperation getIssueOperation()
- {
- return IssueOperations.CREATE_ISSUE_OPERATION;
- }
- private void updateCheckboxes()
- {
- if (!ActionContext.getParameters().containsKey("recordWebInfo"))
- {
- recordWebInfo = false;
- }
- if (!ActionContext.getParameters().containsKey("useCredentials"))
- {
- useCredentials = false;
- }
- }
- private String getFieldHtml(final String fieldId)
- {
- final Map<String, Object> displayParams = new HashMap<String, Object>();
- displayParams.put("theme", "aui");
- final Issue issue = issueFactory.getIssue();
- return ((OrderableField) getField(fieldId)).getCreateHtml(null, this, this, issue, displayParams);
- }
- }