...
Code Block |
---|
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.security.groups.GroupManager;
import com.atlassian.jira.issue.IssueInputParameters;
import com.atlassian.jira.bc.issue.IssueService;
import com.atlassian.jira.bc.issue.DefaultIssueService;
import com.atlassian.jira.bc.issue.worklog.WorklogInputParametersImpl.Builder;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.IssueInputParameters;
import com.atlassian.jira.security.*;
import org.slf4j.*;
Logger log = LoggerFactory.getLogger(com.deniz.jira.worklog.scripting.ScriptingService.class);
def issueManager = ComponentAccessor.getIssueManager();
def issueService = ComponentAccessor.getIssueService();
def authenticationContext = ComponentAccessor.getJiraAuthenticationContext();
def customFieldManager = ComponentAccessor.getCustomFieldManager();
def previousTimeSpent = 0;
if (update) {
previousTimeSpent = previousWorklog.getTimeSpent();
}
def currentUser = authenticationContext.getLoggedInUser();
def issue=worklog.getIssue();
def epicLinkCf = customFieldManager.getCustomFieldObjectByName("Epic Link");
def epicIssue = issue.getCustomFieldValue(epicLinkCf);
def parentObject=issue.getParentObject();
if(parentObject){
def epicIssueOfObject=parentObject.getCustomFieldValue(epicLinkCf);
if(epicIssueOfObject){
//In this case,epic has a child issue and child issue has a subtask.Worklog is done for this subtask.
epicIssue = epicIssueOfObject;
}
if(parentObject.issueType.name == 'Epic'){
//In this case,epic has a subtask.Worklog is done for this subtask.
epicIssue=parentObject;
}
}
def issueSpentTime=worklog.getTimeSpent();
def diff = issueSpentTime - previousTimeSpent;
if (epicIssue) {
log.debug("Subtracting {} seconds from remaining estimate of epic {}", diff, epicIssue.getKey());
def epicEstimate=epicIssue.getEstimate();
Long epicEstimateUpdated=epicEstimate-diff;
if (epicEstimateUpdated < 0) {
epicEstimateUpdated = 0;
}
IssueInputParameters issueInputParameters = issueService.newIssueInputParameters();
issueInputParameters.setRemainingEstimate((epicEstimateUpdated/60) + "m");
IssueService.UpdateValidationResult updateValidationResult = issueService.validateUpdate(currentUser, epicIssue.getId(), issueInputParameters);
if(updateValidationResult.isValid()) {
issueService.update(currentUser, updateValidationResult);
} else {
log.error("!!!Error in Worklog Update Script:{}", getErrorCollection.getErrorCollection())
}
} |
...