PageRenderTime 50ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/src/test/resources/examples/Scratch.groovy

https://bitbucket.org/sorin/scriptrunner-public-sorin
Groovy | 183 lines | 128 code | 45 blank | 10 comment | 3 complexity | 46eb6eb3d4d495a7ea9df4777c2d67e6 MD5 | raw file
  1. package examples
  2. import com.atlassian.jira.ComponentManager
  3. import com.atlassian.jira.ManagerFactory
  4. import com.atlassian.jira.config.properties.ApplicationProperties
  5. import com.atlassian.jira.issue.fields.config.manager.FieldConfigSchemeManager
  6. import com.atlassian.velocity.VelocityManager
  7. import org.apache.log4j.Logger
  8. import com.atlassian.jira.issue.fields.config.FieldConfigScheme
  9. import com.atlassian.jira.issue.context.manager.JiraContextTreeManager
  10. import com.atlassian.jira.issue.customfields.CustomFieldUtils
  11. import com.atlassian.jira.jql.builder.JqlQueryBuilder
  12. import com.atlassian.jira.issue.search.SearchProvider
  13. import com.atlassian.jira.issue.search.SearchRequest
  14. import com.atlassian.jira.issue.search.SearchResults
  15. import com.atlassian.jira.web.bean.PagerFilter
  16. import com.atlassian.jira.issue.customfields.option.Option
  17. import com.atlassian.jira.component.ComponentAccessor
  18. import com.atlassian.jira.issue.fields.option.OptionSetManager
  19. import com.atlassian.jira.issue.ModifiedValue
  20. import com.atlassian.jira.issue.util.IssueChangeHolder
  21. import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
  22. import com.atlassian.jira.util.ImportUtils
  23. import com.atlassian.jira.issue.index.IssueIndexManager
  24. import com.atlassian.jira.issue.customfields.view.CustomFieldParamsImpl
  25. import com.atlassian.jira.issue.customfields.view.CustomFieldParams
  26. import com.atlassian.jira.issue.customfields.impl.TextCFType
  27. import com.atlassian.jira.issue.changehistory.ChangeHistoryManager
  28. import org.apache.log4j.Category
  29. import org.apache.log4j.Level
  30. Logger log = Logger.getLogger(this.class);
  31. log.setLevel(Level.DEBUG)
  32. log.debug("=====================================================================================================")
  33. ComponentManager componentManager = ComponentManager.getInstance()
  34. //def issueManager = componentManager.getIssueManager()
  35. //def issue = issueManager.getIssueObject("JRA-1358")
  36. //issue.setSecurityLevelId(null)
  37. //issue.store()
  38. final ApplicationProperties applicationProperties = ComponentManager.getInstance().getApplicationProperties();
  39. def applicationLinkService = ComponentManager.getComponentInstanceOfType(ApplicationLinkService.class)
  40. applicationLinkService
  41. VelocityManager velocityManager = ManagerFactory.getVelocityManager();
  42. def jiraAuthenticationContext = componentManager.getJiraAuthenticationContext()
  43. def issueManager = componentManager.getIssueManager()
  44. def issue = issueManager.getIssueObject("JRTWO-137")
  45. def fieldLayoutManager = componentManager.getFieldLayoutManager()
  46. def customFieldManager = componentManager.getCustomFieldManager()
  47. def fieldConfigSchemeManager = ComponentManager.getComponentInstanceOfType(FieldConfigSchemeManager.class)
  48. def optionSetManager = ComponentManager.getComponentInstanceOfType(OptionSetManager.class)
  49. def projectManager = componentManager.getProjectManager()
  50. def targetProj = projectManager.getProjectObjByKey("JRTWO")
  51. SearchProvider searchProvider = componentManager.getSearchProvider()
  52. def optionsManager = ComponentAccessor.getOptionsManager()
  53. IssueIndexManager indexManager = ComponentManager.getInstance().getIndexManager()
  54. import org.apache.log4j.Category
  55. import org.apache.log4j.Level
  56. import com.atlassian.applinks.api.EntityLinkService
  57. import com.atlassian.applinks.api.ApplicationLinkService
  58. Category.getInstance("com.onresolve.jira.groovy").setLevel(Level.DEBUG)
  59. def changeHistoryManager = ComponentManager.getComponentInstanceOfType(ChangeHistoryManager.class)
  60. changeHistoryManager.getAllChangeItems()
  61. [].getAt(1)
  62. def cf = customFieldManager.getCustomFieldObjectByName("testTextField")
  63. // cf.getCustomFieldType().class.isAssignableFrom(GenericTextCFType.class)
  64. def assignableFrm = ["com.atlassian.jira.issue.customfields.impl.TextCFType",
  65. "com.atlassian.jira.issue.customfields.impl.GenericTextCFType"].any {
  66. try {
  67. return Class.forName(it).isAssignableFrom(cf.getCustomFieldType().class)
  68. }
  69. catch (Exception e) {
  70. return false
  71. }
  72. }
  73. log.debug(assignableFrm)
  74. // log.debug TextCFType.class.isAssignableFrom(cf.getCustomFieldType().class)
  75. return
  76. fieldConfigSchemeManager.getConfigSchemesForField(cf).each {fcs ->
  77. log.debug(fcs.name)
  78. log.debug(fcs.getConfigs())
  79. }
  80. def value = issue.getCustomFieldValue(cf) as CustomFieldParams
  81. log.debug value
  82. log.debug value.getFirstValueForKey(null).class
  83. log.debug(value.getKeysAndValues().values()*.first()*.optionId)
  84. log.debug optionsManager.findByParentId(10665).find {it.value == "A1"}.optionId
  85. return
  86. def cfValue = issue.getCustomFieldValue(cf) as Option
  87. log.debug cfValue.genericValue
  88. def fieldConfig = fieldConfigSchemeManager.getFieldConfigScheme(11591L).getOneAndOnlyConfig()
  89. fieldConfigSchemeManager.getConfigSchemesForField(cf).each {fcs ->
  90. if (! fcs.name.startsWith("Default")) {
  91. fieldConfigSchemeManager.removeFieldConfigScheme(fcs.id)
  92. }
  93. }
  94. log.debug(fieldConfig.name)
  95. def originalOptions = optionsManager.getOptions(fieldConfig)
  96. log.debug(originalOptions)
  97. JiraContextTreeManager jiraContextTreeManager = new JiraContextTreeManager(projectManager, ComponentManager.getInstance().getConstantsManager())
  98. List contexts = CustomFieldUtils.buildJiraIssueContexts(false,
  99. null,
  100. [targetProj.id] as Long[],
  101. jiraContextTreeManager);
  102. // todo: update original FCS to remove the items selected
  103. def targetFCS = fieldConfigSchemeManager.createFieldConfigScheme(
  104. new FieldConfigScheme.Builder().setName("my arse").setDescription("description").toFieldConfigScheme(),
  105. contexts,
  106. FieldConfigSchemeManager.ALL_ISSUE_TYPES,
  107. cf
  108. )
  109. log.debug(targetFCS.name)
  110. def targetFieldConfig = targetFCS.getOneAndOnlyConfig()
  111. componentManager.getFieldManager().refresh()
  112. originalOptions.each {Option opt ->
  113. log.debug(opt.class)
  114. // todo: enabled,disabled, child options
  115. optionsManager.createOption(targetFieldConfig, null, null, opt.getValue())
  116. }
  117. // add third opt C
  118. optionsManager.createOption(targetFieldConfig, null, null, "C")
  119. // set default value
  120. cf.getCustomFieldType().setDefaultValue(targetFieldConfig, cf.getCustomFieldType().getDefaultValue(fieldConfig))
  121. def query = JqlQueryBuilder.newBuilder().where().project(targetProj.id).and().issueType("1").and().customField(cf.idAsLong).isNotEmpty().buildQuery()
  122. log.debug(query)
  123. SearchRequest sr = new SearchRequest(query)
  124. SearchResults results = searchProvider.search(sr.getQuery(), componentManager.getJiraAuthenticationContext().getUser(), PagerFilter.getUnlimitedFilter())
  125. log.debug(results.total)
  126. results.issues.each {
  127. def iss = issueManager.getIssueObject(it.id)
  128. def oldFieldValue = iss.getCustomFieldValue(cf)
  129. def targetOption = optionsManager.getOptions(targetFieldConfig).find {it.value == oldFieldValue.value}
  130. log.debug("targetOption: ${targetOption.genericValue}")
  131. IssueChangeHolder changeHolder = new DefaultIssueChangeHolder()
  132. cf.updateValue(null, iss, new ModifiedValue(oldFieldValue, targetOption), changeHolder)
  133. iss.setCustomFieldValue(cf, targetOption)
  134. iss.store()
  135. boolean wasIndexing = ImportUtils.isIndexIssues();
  136. indexManager.reIndex(issue);
  137. ImportUtils.setIndexIssues(wasIndexing);
  138. }