Advertisement
Guest User

Untitled

a guest
Jan 8th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 3.21 KB | None | 0 0
  1. import com.atlassian.jira.component.ComponentAccessor
  2. import com.atlassian.jira.issue.search.SearchProvider
  3. import com.atlassian.jira.jql.builder.JqlQueryBuilder
  4. import com.atlassian.jira.web.bean.PagerFilter
  5. import org.apache.log4j.Logger
  6. import com.atlassian.jira.issue.Issue
  7.  
  8. def cfm = ComponentAccessor.customFieldManager
  9. def sp = ComponentAccessor.getComponent(SearchProvider.class)
  10. def is = ComponentAccessor.issueService
  11. def um = ComponentAccessor.userManager
  12.  
  13. final String EMPLOYMENT_TYPE = "Employment"
  14.  
  15. final String ONBOARDING_STATUS = "Onboarding"
  16. final String FIRST_YEAR_STATUS = "1. Year"
  17. final String UNLIMITED_STATUS = "Unlimited"
  18. final String ADMINISTRATION_STATUS = "Administration"
  19.  
  20. int ONBOARDING_ACTION = 11
  21. int START_FIRST_YEAR_ACTION = 21
  22. int START_UNLIMITED = 31
  23.  
  24. def cfFirstYearDate = cfm.getCustomFieldObjectByName("Start 1. Year")
  25. def cfStartDate = cfm.getCustomFieldObjectByName("Start Trial Period")
  26. def cfUnlimitedEmployment = cfm.getCustomFieldObjectByName("Start Unlimited Employment")
  27. def user = um.getUserByKey("automation")
  28.  
  29. def log = Logger.getLogger("com.onresolve.jira.groovy.groovyrunner")//add to logging and profiling
  30.  
  31. log.info("Groovy service 'Check Employee Time Periods Jira Service' started")
  32.  
  33. def transitIssue = { Issue issue, int actionId, String newStatusName ->
  34.     def validation = is.validateTransition(user, issue.id, actionId, is.newIssueInputParameters())
  35.     if (validation.valid) {
  36.         is.transition(user, validation)
  37.         log.info(issue.key + " going to status " + newStatusName)
  38.     } else {
  39.         log.error(validation.errorCollection.errorMessages)
  40.     }
  41. }
  42.  
  43. //onboarding issues
  44. def whereClause = JqlQueryBuilder.newBuilder()
  45.         .where()
  46.         .sub()
  47.         .issueType(EMPLOYMENT_TYPE)
  48.         .and().status(ONBOARDING_STATUS)
  49.         .and().customField(cfFirstYearDate.getIdAsLong()).isNotEmpty()
  50.         .and().customField(cfFirstYearDate.getIdAsLong()).ltEq().functionNow()
  51.         .endsub()
  52.  
  53. //first year issues
  54. whereClause = whereClause.or()
  55.         .sub()
  56.         .issueType(EMPLOYMENT_TYPE)
  57.         .and().status(FIRST_YEAR_STATUS)
  58.         .and().customField(cfUnlimitedEmployment.getIdAsLong()).isNotEmpty()
  59.         .and().customField(cfUnlimitedEmployment.getIdAsLong()).ltEq().functionNow()
  60.         .endsub()
  61.  
  62. //administration issues
  63. whereClause = whereClause.or()
  64.         .sub()
  65.         .issueType(EMPLOYMENT_TYPE)
  66.         .and().status(ADMINISTRATION_STATUS)
  67.         .and().customField(cfStartDate.getIdAsLong()).isNotEmpty()
  68.         .and().customField(cfStartDate.getIdAsLong()).ltEq().functionNow()
  69.         .endsub()
  70.  
  71. def issues = sp.search(whereClause.buildQuery(), user, PagerFilter.unlimitedFilter).issues
  72.  
  73. log.info("found " + (issues?.size ?: "0") + " issues for transition")
  74.  
  75. issues?.each { issue ->
  76.     switch (issue.statusObject.name) {
  77.         case ADMINISTRATION_STATUS:
  78.             transitIssue(issue, ONBOARDING_ACTION, ONBOARDING_STATUS)
  79.             break
  80.         case ONBOARDING_STATUS:
  81.             transitIssue(issue, START_FIRST_YEAR_ACTION, FIRST_YEAR_STATUS)
  82.             break
  83.         case FIRST_YEAR_STATUS:
  84.             transitIssue(issue, START_UNLIMITED, UNLIMITED_STATUS)
  85.             break
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement