com.atlassian.jira.bc.subtask.conversion
Class DefaultIssueToSubTaskConversionService

java.lang.Object
  extended by com.atlassian.jira.bc.subtask.conversion.DefaultIssueConversionService
      extended by com.atlassian.jira.bc.subtask.conversion.DefaultIssueToSubTaskConversionService
All Implemented Interfaces:
IssueConversionService, IssueToSubTaskConversionService

public class DefaultIssueToSubTaskConversionService
extends DefaultIssueConversionService
implements IssueToSubTaskConversionService

Default implementation of IssueToSubTaskConversionService.


Field Summary
 
Fields inherited from class com.atlassian.jira.bc.subtask.conversion.DefaultIssueConversionService
fieldLayoutManager, fieldManager, issueTypeSchemeManager, jiraAuthenticationContext
 
Constructor Summary
DefaultIssueToSubTaskConversionService(PermissionManager permissionManager, SubTaskManager subtaskManager, IssueTypeSchemeManager issueTypeSchemeManager, JiraAuthenticationContext jiraAuthenticationContext, WorkflowManager workflowManager, FieldLayoutManager fieldLayoutManager, FieldManager fieldManager)
           
 
Method Summary
 boolean canConvertIssue(JiraServiceContext context, Issue issue)
          As per the IssueToSubTaskConversionService interface.
protected  boolean canIssueSecurityFieldIgnore()
          For an issue to subtask conversion, we can safely ignore the issue security field since the subtask will always take the security level of the parent issue.
protected static String getLongToStringNullSafe(Long aLong)
          Returns a String as a result of toString() call or null if aLong was null.
protected static boolean isNotNullAndNotEqualTo(Long id1, Long id2)
          Returns true if id1 is not null and not equal to id2, false otherwise.
 void preStoreUpdates(JiraServiceContext context, IssueChangeHolder changeHolder, Issue currentIssue, MutableIssue targetIssue)
          Allows for a plugin point to extra updates specific to that sub class
protected  boolean projectHasSubTasks(Project project)
          Returns true if given project has sub-task Issue Types in its Issue Type scheme
 void validateParentIssue(JiraServiceContext context, Issue issue, Issue parentIssue, String fieldNameParentIssueKey)
          Validates the given parent issue key for issue key.
 void validateTargetIssueType(JiraServiceContext context, Issue issue, IssueType issueType, String fieldNameIssueTypeId)
          Validates that the issue can be converted to given issue type.
 
Methods inherited from class com.atlassian.jira.bc.subtask.conversion.DefaultIssueConversionService
convertIssue, getFieldLayoutItems, getPermissionNeeded, getRemovedFields, getText, getText, getText, hasPermission, isShouldCheckFieldValue, isStatusChangeRequired, isStatusInWorkflowForProjectAndIssueType, populateFields, validateFields, validateTargetStatus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.atlassian.jira.bc.subtask.conversion.IssueConversionService
convertIssue, getFieldLayoutItems, getRemovedFields, hasPermission, isStatusChangeRequired, populateFields, validateFields, validateTargetStatus
 

Constructor Detail

DefaultIssueToSubTaskConversionService

public DefaultIssueToSubTaskConversionService(PermissionManager permissionManager,
                                              SubTaskManager subtaskManager,
                                              IssueTypeSchemeManager issueTypeSchemeManager,
                                              JiraAuthenticationContext jiraAuthenticationContext,
                                              WorkflowManager workflowManager,
                                              FieldLayoutManager fieldLayoutManager,
                                              FieldManager fieldManager)
Method Detail

canConvertIssue

public boolean canConvertIssue(JiraServiceContext context,
                               Issue issue)
As per the IssueToSubTaskConversionService interface.

NOTE: We also considered a check for number of issues in the project and returning false if project has only one issue. This was not implemented as it would impair the performance of this method.

Specified by:
canConvertIssue in interface IssueConversionService
Parameters:
context - JIRA Service Context
issue - issue to convert
Returns:
true if user can convert issue to a sub-task
Throws:
IllegalArgumentException - if context or issue is null

validateTargetIssueType

public void validateTargetIssueType(JiraServiceContext context,
                                    Issue issue,
                                    IssueType issueType,
                                    String fieldNameIssueTypeId)
Description copied from interface: IssueConversionService
Validates that the issue can be converted to given issue type. Any errors are communicated back via error collection in the context.

Specified by:
validateTargetIssueType in interface IssueConversionService
Parameters:
context - jira service context
issue - issue to convert
issueType - target issue type
fieldNameIssueTypeId - form field name of the issue type id

canIssueSecurityFieldIgnore

protected boolean canIssueSecurityFieldIgnore()
For an issue to subtask conversion, we can safely ignore the issue security field since the subtask will always take the security level of the parent issue.

Specified by:
canIssueSecurityFieldIgnore in class DefaultIssueConversionService
Returns:
true if it is safe to ignore the security field.

validateParentIssue

public void validateParentIssue(JiraServiceContext context,
                                Issue issue,
                                Issue parentIssue,
                                String fieldNameParentIssueKey)
Description copied from interface: IssueToSubTaskConversionService
Validates the given parent issue key for issue key. Any errors are communicated back via error collection in the context.

Specified by:
validateParentIssue in interface IssueToSubTaskConversionService
Parameters:
context - jira service context
issue - issue to convert
parentIssue - possible parrent issue to check
fieldNameParentIssueKey - form field name of the parrent issue key

preStoreUpdates

public void preStoreUpdates(JiraServiceContext context,
                            IssueChangeHolder changeHolder,
                            Issue currentIssue,
                            MutableIssue targetIssue)
Description copied from interface: IssueConversionService
Allows for a plugin point to extra updates specific to that sub class

Specified by:
preStoreUpdates in interface IssueConversionService
Parameters:
context - jira service context
changeHolder - holds all the change items
currentIssue - original issue with no updates
targetIssue - target issue with all fields updated

isNotNullAndNotEqualTo

protected static boolean isNotNullAndNotEqualTo(Long id1,
                                                Long id2)
Returns true if id1 is not null and not equal to id2, false otherwise.

Parameters:
id1 - id1
id2 - id2
Returns:
true if id1 is not null and not equal to id2, false otherwise

getLongToStringNullSafe

protected static String getLongToStringNullSafe(Long aLong)
Returns a String as a result of toString() call or null if aLong was null.

Parameters:
aLong - long
Returns:
String as a result of toString() call or null if aLong was null

projectHasSubTasks

protected boolean projectHasSubTasks(Project project)
Returns true if given project has sub-task Issue Types in its Issue Type scheme

Parameters:
project - to to test
Returns:
true if project has sub-task Issue Types in its Issue Type Scheme


Copyright © 2002-2007 Atlassian. All Rights Reserved.