Hi guys,
I am trying to update the due date with a groovy script. I have found different solutions on the community but it doesn't work for me.
I have the following error : groovy.lang.MissingMethodException: No signature of method: com.atlassian.jira.issue.DocumentIssueImpl.setDueDate() is applicable for argument types: (java.sql.Timestamp) values: [2017-09-20 13:54:25.408] Possible solutions: getDueDate()
I don't find the method setDueDate in the last Jira Api, is it depreciated ?
And when I try to directly modify the value
it.dueDate = mydueDate
, I have an error message which says that the value is read only.
Any idea ? Here is my code ?
import com.atlassian.jira.ComponentManager import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.user.ApplicationUser import com.atlassian.jira.user.UserUtils import com.atlassian.jira.user.util.UserUtil import com.atlassian.jira.issue.util.DefaultIssueChangeHolder import com.atlassian.jira.web.bean.PagerFilter import com.opensymphony.workflow.WorkflowContext import com.atlassian.jira.workflow.WorkflowTransitionUtil import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl import com.atlassian.jira.util.JiraUtils import com.atlassian.jira.issue.MutableIssue import java.sql.Timestamp ComponentManager componentManager = ComponentManager.getInstance() IssueManager issueManager = ComponentAccessor.getIssueManager() SearchService searchService = ComponentAccessor.getComponent(SearchService.class) UserUtil userUtil = ComponentAccessor.getUserUtil() ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager() def changeHolder = new DefaultIssueChangeHolder() WorkflowTransitionUtil workflowTransitionUtil = ( WorkflowTransitionUtil ) JiraUtils.loadComponent( WorkflowTransitionUtilImpl.class ); String userString = UserUtils.getUser('admin').name def jqlSearch = "project = 'RPD'" List<Issue> issues = null def newRPDDate = customFieldManager.getCustomFieldObject((long) 27800) SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlSearch) if (parseResult.isValid()) { def searchResult = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter()) issues = searchResult.getIssues() for(Issue it : issues){ /*workflowTransitionUtil.setIssue(it); workflowTransitionUtil.setUsername(user); workflowTransitionUtil.setAction (51)*/ Calendar myCalendar = Calendar.getInstance() myCalendar.setTime(it.getDueDate()) myCalendar.add(Calendar.MONTH,3) //String[] splited = it.getDueDate().toString().split("\\s+"); Timestamp mydueDate = new Timestamp(myCalendar.getTimeInMillis()+ 90*1000*24*60*60) //it.setDueDate(new Timestamp(myCalendar.getTime().time)) it.setDueDate(mydueDate) //it.dueDate = mydueDate return it.dueDate return it.key return splited[0] } }
I have change my request to get IssueImpl and it works well now.
I put my code here if it can help someone :
import com.atlassian.jira.ComponentManager import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.user.ApplicationUser import com.atlassian.jira.user.UserUtils import com.atlassian.jira.user.util.UserUtil import com.atlassian.jira.issue.util.DefaultIssueChangeHolder import com.atlassian.jira.web.bean.PagerFilter import com.opensymphony.workflow.WorkflowContext import com.atlassian.jira.workflow.WorkflowTransitionUtil import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl import com.atlassian.jira.util.JiraUtils import com.atlassian.jira.issue.MutableIssue import java.sql.Timestamp ComponentManager componentManager = ComponentManager.getInstance() IssueManager issueManager = ComponentAccessor.getIssueManager() SearchService searchService = ComponentAccessor.getComponent(SearchService.class) UserUtil userUtil = ComponentAccessor.getUserUtil() ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager() def changeHolder = new DefaultIssueChangeHolder() WorkflowTransitionUtil workflowTransitionUtil = ( WorkflowTransitionUtil ) JiraUtils.loadComponent( WorkflowTransitionUtilImpl.class ); String userString = UserUtils.getUser('admin').name def jqlSearch = "project = 'RPD' AND issuetype = Task" List<Issue> issues = null def newRPDDate = customFieldManager.getCustomFieldObject((long) 27800) SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlSearch) if (parseResult.isValid()) { def searchResult = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter()) issues = searchResult.issues.collect { issueManager.getIssueObject(it.id) } for(Issue it : issues){ workflowTransitionUtil.setIssue(it); workflowTransitionUtil.setUsername(user); workflowTransitionUtil.setAction (51) Calendar myCalendar = Calendar.getInstance() myCalendar.setTime(it.getDueDate()) myCalendar.add(Calendar.MONTH,3) it.setDueDate(new Timestamp(myCalendar.getTime().time)) it.store() // return it.key } }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.