PageRenderTime 39ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/resources/com/onresolve/jira/groovy/listeners/MoveIssueListener.groovy

https://bitbucket.org/sorin/jira-plugin-intellij
Groovy | 118 lines | 93 code | 22 blank | 3 comment | 1 complexity | 85736f6e0a3ae291122005bef6bbca96 MD5 | raw file
  1. package com.onresolve.jira.groovy.listeners
  2. import com.atlassian.jira.event.issue.AbstractIssueEventListener
  3. import com.atlassian.jira.event.issue.IssueEvent
  4. import com.atlassian.jira.ComponentManager
  5. import org.apache.log4j.Category
  6. import com.atlassian.jira.event.type.EventTypeManager
  7. import com.atlassian.jira.event.type.EventType
  8. import com.atlassian.jira.ComponentManager
  9. import com.atlassian.jira.issue.CustomFieldManager
  10. import com.atlassian.jira.issue.MutableIssue
  11. import com.atlassian.jira.issue.fields.CustomField
  12. import org.apache.log4j.Category
  13. import org.apache.log4j.Level
  14. import com.atlassian.jira.web.bean.MoveIssueBean
  15. import com.atlassian.jira.web.action.issue.MoveIssueUpdateFields
  16. import com.atlassian.jira.issue.IssueFieldConstants
  17. import com.atlassian.jira.bc.issue.comment.CommentService
  18. import com.atlassian.jira.issue.security.IssueSecurityHelper
  19. import webwork.action.ActionContext
  20. import com.atlassian.jira.web.SessionKeys
  21. import com.atlassian.jira.web.action.issue.MoveIssueConfirm
  22. import com.atlassian.jira.issue.AttachmentManager
  23. import com.atlassian.jira.project.ProjectManager
  24. import com.atlassian.jira.project.Project
  25. import com.atlassian.jira.issue.IssueManager
  26. import com.atlassian.core.ofbiz.util.CoreTransactionUtil
  27. class MoveIssueListener extends AbstractIssueEventListener {
  28. Category log = Category.getInstance(ExampleListener.class)
  29. @Override
  30. void workflowEvent(IssueEvent event) {
  31. Map eventTypes = ComponentManager.getInstance().getEventTypeManager().getEventTypesMap()
  32. log.debug "Event: \"${eventTypes[event.getEventTypeId()].name}\" fired for ${event.issue}"
  33. final EventTypeManager eventTypeManager = ComponentManager.getInstance().getEventTypeManager();
  34. final Long eventTypeId = event.getEventTypeId();
  35. final EventType eventType = eventTypeManager.getEventType(eventTypeId);
  36. if (eventTypeId.equals(EventType.ISSUE_WORKSTARTED_ID))
  37. {
  38. issueStarted(event);
  39. }
  40. }
  41. @Override
  42. void issueStarted(IssueEvent event) {
  43. CoreTransactionUtil.begin()
  44. log.debug("issueStarted, move me now.")
  45. ComponentManager componentManager = ComponentManager.getInstance()
  46. ProjectManager projectManager = componentManager.getProjectManager()
  47. Project targetProject = projectManager.getProjectObjByKey("JRA")
  48. IssueManager issueManager = componentManager.getIssueManager()
  49. // MutableIssue targetIssue = issueManager.getIssueObject('JRTWO-7')
  50. MutableIssue targetIssue = event.getIssue() as MutableIssue
  51. MoveIssueBean moveIssueBean = new MoveIssueBean(componentManager.getConstantsManager(), projectManager);
  52. moveIssueBean.getFieldValuesHolder().put(IssueFieldConstants.PROJECT, targetProject.id)
  53. moveIssueBean.getFieldValuesHolder().put(IssueFieldConstants.ISSUE_TYPE, "1")
  54. moveIssueBean.setIssueId(targetIssue.id)
  55. moveIssueBean.setTargetStatusId("1")
  56. log.debug(moveIssueBean)
  57. //MoveIssueUpdateFields moveIssueUpdateFields = ComponentManager.getComponentInstanceOfType(MoveIssueUpdateFields.class)
  58. //log.debug moveIssueUpdateFields
  59. ActionContext.getSession().put(SessionKeys.MOVEISSUEBEAN, moveIssueBean)
  60. MoveIssueUpdateFields moveIssueUpdateFields = new MoveIssueUpdateFields(
  61. componentManager.getIssueLinkManager(),
  62. componentManager.getSubTaskManager(),
  63. componentManager.getConstantsManager(),
  64. componentManager.getWorkflowManager(),
  65. componentManager.getFieldManager(),
  66. componentManager.getFieldLayoutManager(),
  67. componentManager.getIssueFactory(),
  68. componentManager.getFieldScreenRendererFactory(),
  69. ComponentManager.getComponentInstanceOfType(CommentService),
  70. ComponentManager.getComponentInstanceOfType(IssueSecurityHelper.class)
  71. )
  72. MoveIssueConfirm moveIssueConfirm = new MoveIssueConfirm(
  73. componentManager.getIssueLinkManager(),
  74. componentManager.getSubTaskManager(),
  75. ComponentManager.getComponentInstanceOfType(AttachmentManager.class),
  76. componentManager.getConstantsManager(),
  77. componentManager.getWorkflowManager(),
  78. componentManager.getFieldManager(),
  79. componentManager.getFieldLayoutManager(),
  80. componentManager.getIssueFactory(),
  81. componentManager.getFieldScreenRendererFactory(),
  82. ComponentManager.getComponentInstanceOfType(CommentService),
  83. ComponentManager.getComponentInstanceOfType(IssueSecurityHelper.class),
  84. issueManager,
  85. componentManager.getAttachmentPathManager())
  86. log.debug(moveIssueConfirm)
  87. moveIssueUpdateFields.setId(targetIssue.id)
  88. moveIssueUpdateFields.setIssue(issueManager.getIssue(targetIssue.id))
  89. moveIssueUpdateFields.doExecute()
  90. moveIssueConfirm.setId(targetIssue.id)
  91. moveIssueConfirm.setIssue(issueManager.getIssue(targetIssue.id))
  92. String execute = moveIssueConfirm.doExecute()
  93. log.debug(moveIssueConfirm.errors)
  94. CoreTransactionUtil.commit(true)
  95. }
  96. }