PageRenderTime 44ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/src/main/resources/com/onresolve/jira/groovy/canned/workflow/postfunctions/FireEventWhen.groovy

https://bitbucket.org/sorin/jira-plugin-intellij
Groovy | 101 lines | 75 code | 19 blank | 7 comment | 3 complexity | d44d095b220f1da66583278e7420025d MD5 | raw file
  1. package com.onresolve.jira.groovy.canned.workflow.postfunctions
  2. import com.onresolve.jira.groovy.canned.CannedScript
  3. import com.atlassian.jira.util.ErrorCollection
  4. import com.onresolve.jira.groovy.canned.utils.CannedScriptUtils
  5. import com.atlassian.jira.issue.Issue
  6. import com.atlassian.jira.issue.comments.Comment
  7. import org.ofbiz.core.entity.GenericValue
  8. import com.atlassian.jira.event.issue.IssueEventSource
  9. import com.atlassian.jira.event.issue.IssueEventDispatcher
  10. import com.atlassian.jira.ManagerFactory
  11. import org.apache.log4j.Category
  12. import com.onresolve.jira.groovy.canned.utils.ConditionUtils
  13. import com.atlassian.jira.issue.MutableIssue
  14. import com.onresolve.jira.groovy.canned.utils.WorkflowUtils
  15. import com.atlassian.core.ofbiz.CoreFactory
  16. /**
  17. * User: jechlin2
  18. * Date: 20/12/10
  19. * Time: 14:57
  20. */
  21. class FireEventWhen implements CannedScript {
  22. Category log = Category.getInstance(FireEventWhen.class)
  23. public static String FIELD_EVENT_ID = "FIELD_EVENT_ID"
  24. String getName() {
  25. "Fires an event when condition is true"
  26. }
  27. public String getHelpUrl() {
  28. "https://studio.plugins.atlassian.com/wiki/display/GRV/Built-In+Scripts#Built-InScripts-Firesaneventwhenconditionistrue"
  29. }
  30. String getDescription() {
  31. "Fires an event that can be picked up by a notification scheme, in order to send mail only under certain conditions, eg Priority is Blocker"
  32. }
  33. List getCategories() {
  34. ["Function", "Listener"]
  35. }
  36. List getParameters(Map params) {
  37. [
  38. ConditionUtils.getConditionParameter(),
  39. [
  40. Name:FIELD_EVENT_ID,
  41. Label:"Event",
  42. Type: "list",
  43. Description:"Name of event to fire",
  44. Values: CannedScriptUtils.getEvents(true),
  45. ],
  46. ]
  47. }
  48. ErrorCollection doValidate(Map params, boolean forPreview) {
  49. return null
  50. }
  51. Map doScript(Map params) {
  52. Map transientVars = params['transientVars'] as Map
  53. MutableIssue issue = params['issue'] as MutableIssue
  54. Boolean doIt = ConditionUtils.processCondition(params[ConditionUtils.FIELD_CONDITION] as String, issue, false, params)
  55. if (! doIt) {
  56. return [:]
  57. }
  58. log.debug ("Raising event: " + params[FIELD_EVENT_ID])
  59. Comment comment = null
  60. GenericValue changeGroup = null
  61. if (transientVars) {
  62. comment = (Comment) transientVars.get("commentValue");
  63. changeGroup = (GenericValue) transientVars.get("changeGroup");
  64. Map eventParams = new HashMap(4);
  65. eventParams.put("eventsource", IssueEventSource.WORKFLOW);
  66. }
  67. else {
  68. Collection<GenericValue> changeGroups = CoreFactory.getGenericDelegator().findByAnd("ChangeGroup", ["issue": issue.getId()]);
  69. // todo: possible bug
  70. // https://answers.atlassian.com/questions/47303/how-to-fire-an-event-when-custom-field-gets-updated-to-from-a-specific-value-using-script-listeners
  71. changeGroup = changeGroups ? changeGroups.last() : null
  72. }
  73. IssueEventDispatcher.dispatchEvent(params[FIELD_EVENT_ID] as Long, issue, WorkflowUtils.getUser(params), comment, null, changeGroup, params, true);
  74. params
  75. }
  76. String getDescription(Map params, boolean forPreview) {
  77. return getDescription()
  78. }
  79. public Boolean isFinalParamsPage(Map params) {
  80. true
  81. }
  82. }