View Javadoc

1   package com.atlassian.jira.issue.operations;
2   
3   import com.atlassian.jira.ManagerFactory;
4   import com.atlassian.jira.issue.Issue;
5   import com.atlassian.jira.security.JiraAuthenticationContext;
6   import com.atlassian.jira.security.PermissionManager;
7   import com.atlassian.jira.security.Permissions;
8   import com.atlassian.jira.workflow.ExtendedWorkflowManager;
9   import com.atlassian.jira.workflow.WorkflowManager;
10  import com.atlassian.plugin.PluginController;
11  import com.atlassian.plugin.PluginManager;
12  
13  /**
14   * @FQCN com.atlassian.jira.issue.operations.ExtendedDeleteIssueOperation
15   * @description :
16   * @author Kaamelot
17   * @since 3.x.1.34
18   * @version 3.x.1.34
19   *
20   */
21  public class ExtendedDeleteIssueOperation extends DeleteIssueOperation {
22  
23  	protected WorkflowManager workflowManager;
24  	protected JiraAuthenticationContext authenticationContext;
25  	protected PermissionManager permissionManager;
26  	
27  	public ExtendedDeleteIssueOperation(JiraAuthenticationContext authenticationContext, PermissionManager permissionManager, PluginController _pluginController) {
28  		super(authenticationContext, permissionManager);
29  		this.authenticationContext = authenticationContext;
30  		this.permissionManager = permissionManager;
31  		workflowManager = ManagerFactory.getWorkflowManager();
32  		_pluginController.disablePluginModule("com.atlassian.jira.plugin.system.issueoperations:delete-issue");
33  	}
34  
35  
36  	/**
37  	 * showOperation
38  	 * @param Issue
39  	 * @return boolean
40  	 */
41  	public boolean showOperation(final Issue _issue) {
42  		return (permissionManager.hasPermission(Permissions.DELETE_ISSUE, _issue, authenticationContext.getUser()) && isDeletable(_issue));
43  	}
44  
45  	/**
46  	 * isDeletable
47  	 * @param Issue
48  	 * @return boolean
49  	 */
50  	protected boolean isDeletable(final Issue _issue) {
51  		boolean isDeletable = true;
52  		if (workflowManager instanceof ExtendedWorkflowManager) {
53  			isDeletable = ((ExtendedWorkflowManager)workflowManager).isDeletable(_issue);
54  		}
55  		return isDeletable;
56  	}
57  	
58  }