Skip to content

Instantly share code, notes, and snippets.

@jamieechlin
Created March 21, 2013 14:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamieechlin/5213550 to your computer and use it in GitHub Desktop.
Save jamieechlin/5213550 to your computer and use it in GitHub Desktop.
package com.onresolve.jira.groovy.listeners
import com.atlassian.jira.event.issue.AbstractIssueEventListener
import com.atlassian.jira.event.issue.IssueEvent
import com.atlassian.jira.ComponentManager
import org.apache.log4j.Category
import com.atlassian.jira.event.type.EventTypeManager
import com.atlassian.jira.event.type.EventType
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.fields.CustomField
import org.apache.log4j.Category
import org.apache.log4j.Level
import com.atlassian.jira.web.bean.MoveIssueBean
import com.atlassian.jira.web.action.issue.MoveIssueUpdateFields
import com.atlassian.jira.issue.IssueFieldConstants
import com.atlassian.jira.bc.issue.comment.CommentService
import com.atlassian.jira.issue.security.IssueSecurityHelper
import webwork.action.ActionContext
import com.atlassian.jira.web.SessionKeys
import com.atlassian.jira.web.action.issue.MoveIssueConfirm
import com.atlassian.jira.issue.AttachmentManager
import com.atlassian.jira.project.ProjectManager
import com.atlassian.jira.project.Project
import com.atlassian.jira.issue.IssueManager
import com.atlassian.core.ofbiz.util.CoreTransactionUtil
class MoveIssueListener extends AbstractIssueEventListener {
Category log = Category.getInstance(ExampleListener.class)
@Override
void workflowEvent(IssueEvent event) {
Map eventTypes = ComponentManager.getInstance().getEventTypeManager().getEventTypesMap()
log.debug "Event: \"${eventTypes[event.getEventTypeId()].name}\" fired for ${event.issue}"
final EventTypeManager eventTypeManager = ComponentManager.getInstance().getEventTypeManager();
final Long eventTypeId = event.getEventTypeId();
final EventType eventType = eventTypeManager.getEventType(eventTypeId);
if (eventTypeId.equals(EventType.ISSUE_WORKSTARTED_ID))
{
issueStarted(event);
}
}
@Override
void issueStarted(IssueEvent event) {
CoreTransactionUtil.begin()
log.debug("issueStarted, move me now.")
ComponentManager componentManager = ComponentManager.getInstance()
ProjectManager projectManager = componentManager.getProjectManager()
Project targetProject = projectManager.getProjectObjByKey("JRA")
IssueManager issueManager = componentManager.getIssueManager()
// MutableIssue targetIssue = issueManager.getIssueObject('JRTWO-7')
MutableIssue targetIssue = event.getIssue() as MutableIssue
MoveIssueBean moveIssueBean = new MoveIssueBean(componentManager.getConstantsManager(), projectManager);
moveIssueBean.getFieldValuesHolder().put(IssueFieldConstants.PROJECT, targetProject.id)
moveIssueBean.getFieldValuesHolder().put(IssueFieldConstants.ISSUE_TYPE, "1")
moveIssueBean.setIssueId(targetIssue.id)
moveIssueBean.setTargetStatusId("1")
log.debug(moveIssueBean)
//MoveIssueUpdateFields moveIssueUpdateFields = ComponentManager.getComponentInstanceOfType(MoveIssueUpdateFields.class)
//log.debug moveIssueUpdateFields
ActionContext.getSession().put(SessionKeys.MOVEISSUEBEAN, moveIssueBean)
MoveIssueUpdateFields moveIssueUpdateFields = new MoveIssueUpdateFields(
componentManager.getIssueLinkManager(),
componentManager.getSubTaskManager(),
componentManager.getConstantsManager(),
componentManager.getWorkflowManager(),
componentManager.getFieldManager(),
componentManager.getFieldLayoutManager(),
componentManager.getIssueFactory(),
componentManager.getFieldScreenRendererFactory(),
ComponentManager.getComponentInstanceOfType(CommentService),
ComponentManager.getComponentInstanceOfType(IssueSecurityHelper.class)
)
MoveIssueConfirm moveIssueConfirm = new MoveIssueConfirm(
componentManager.getIssueLinkManager(),
componentManager.getSubTaskManager(),
ComponentManager.getComponentInstanceOfType(AttachmentManager.class),
componentManager.getConstantsManager(),
componentManager.getWorkflowManager(),
componentManager.getFieldManager(),
componentManager.getFieldLayoutManager(),
componentManager.getIssueFactory(),
componentManager.getFieldScreenRendererFactory(),
ComponentManager.getComponentInstanceOfType(CommentService),
ComponentManager.getComponentInstanceOfType(IssueSecurityHelper.class),
issueManager,
componentManager.getAttachmentPathManager())
log.debug(moveIssueConfirm)
moveIssueUpdateFields.setId(targetIssue.id)
moveIssueUpdateFields.setIssue(issueManager.getIssue(targetIssue.id))
moveIssueUpdateFields.doExecute()
moveIssueConfirm.setId(targetIssue.id)
moveIssueConfirm.setIssue(issueManager.getIssue(targetIssue.id))
String execute = moveIssueConfirm.doExecute()
log.debug(moveIssueConfirm.errors)
CoreTransactionUtil.commit(true)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment