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

/src/main/resources/com/onresolve/jira/groovy/canned/admin/ReindexIssues.groovy

https://bitbucket.org/sorin/jira-plugin-intellij
Groovy | 135 lines | 114 code | 21 blank | 0 comment | 5 complexity | b93dd21500d66d759a31684cd3ac9825 MD5 | raw file
  1. package com.onresolve.jira.groovy.canned.admin
  2. import com.atlassian.jira.ComponentManager
  3. import com.atlassian.jira.bc.JiraServiceContext
  4. import com.atlassian.jira.bc.JiraServiceContextImpl
  5. import com.atlassian.jira.bc.filter.SearchRequestService
  6. import com.atlassian.jira.event.issue.IssueEvent
  7. import com.atlassian.jira.event.issue.IssueEventDispatcher
  8. import com.atlassian.jira.event.type.EventType
  9. import com.atlassian.jira.issue.Issue
  10. import com.atlassian.jira.issue.search.SearchProvider
  11. import com.atlassian.jira.issue.search.SearchRequest
  12. import com.atlassian.jira.issue.search.SearchResults
  13. import com.atlassian.jira.project.ProjectManager
  14. import com.atlassian.jira.security.JiraAuthenticationContext
  15. import com.atlassian.jira.util.ErrorCollection
  16. import com.atlassian.jira.util.SimpleErrorCollection
  17. import com.onresolve.jira.groovy.canned.CannedScript
  18. import com.onresolve.jira.groovy.canned.utils.CannedScriptUtils
  19. import com.onresolve.jira.groovy.canned.utils.FilterUtils
  20. import org.apache.log4j.Category
  21. import com.atlassian.jira.util.ImportUtils
  22. import com.atlassian.jira.ManagerFactory
  23. import com.atlassian.jira.issue.index.IssueIndexManager
  24. import com.atlassian.jira.util.BuildUtils
  25. import com.atlassian.jira.issue.IssueManager
  26. public class ReindexIssues implements CannedScript {
  27. public static String FIELD_FILTER_ID = "FIELD_FILTER_ID"
  28. public static String FIELD_PROJECT_ID = "FIELD_PROJECT_ID"
  29. ComponentManager componentManager = ComponentManager.getInstance()
  30. JiraAuthenticationContext authenticationContext = componentManager.getJiraAuthenticationContext()
  31. JiraServiceContext ctx = new JiraServiceContextImpl(authenticationContext.getUser());
  32. def searchRequestService = componentManager.getSearchRequestService()
  33. IssueIndexManager indexManager = ComponentManager.getInstance().getIndexManager()
  34. IssueManager issueManager = ComponentManager.getInstance().getIssueManager()
  35. Category log = Category.getInstance(ReindexIssues.class)
  36. public String getName() {
  37. "Reindex issues"
  38. }
  39. List getCategories() {
  40. ["ADMIN"]
  41. }
  42. public String getDescription() {
  43. """Reindex issues for a project or corresponding to a filter, perhaps after an indexing problem or editing the database.
  44. """
  45. }
  46. public List getParameters(Map params) {
  47. [
  48. [
  49. Name:FIELD_FILTER_ID,
  50. Label:"Filter ID",
  51. Description:"""All issues returned by this filter will have an event generated.""",
  52. Type:"list",
  53. Values: CannedScriptUtils.getAllOwnedFilters(true),
  54. ],
  55. [
  56. Name:FIELD_PROJECT_ID,
  57. Label:"Project Key",
  58. Description:"""All issues for this project will have an event generated.""",
  59. Type:"list",
  60. Values: CannedScriptUtils.getProjectOptions(true),
  61. ],
  62. ]
  63. }
  64. public ErrorCollection doValidate(Map params, boolean forPreview) {
  65. ErrorCollection errorCollection = new SimpleErrorCollection()
  66. if (! (params[FIELD_FILTER_ID] as Boolean ^ (params[FIELD_PROJECT_ID]) as Boolean)) {
  67. errorCollection.addErrorMessage("Please enter a project OR filter ID")
  68. return errorCollection
  69. }
  70. if (params[FIELD_FILTER_ID]) {
  71. long filterId = params[FIELD_FILTER_ID] as Long
  72. SearchRequest sr = searchRequestService.getFilter(ctx, filterId)
  73. if (! sr) {
  74. errorCollection.addError(FIELD_FILTER_ID, "Invalid filter ID... do you own this?")
  75. }
  76. }
  77. return errorCollection
  78. }
  79. Map doScript(Map params) {
  80. SearchRequest sr = getOrCreateSearchRequest(params)
  81. SearchResults results = getSearchResults(sr)
  82. List issues = results.getIssues();
  83. for (Issue issue in issues)
  84. {
  85. boolean wasIndexing = ImportUtils.isIndexIssues();
  86. ImportUtils.setIndexIssues(true);
  87. if ((BuildUtils.getCurrentBuildNumber() as Long) < 614) {
  88. ManagerFactory.getCacheManager().flush(com.atlassian.jira.issue.cache.CacheManager.ISSUE_CACHE, issue)
  89. }
  90. log.debug("Reindex issue ${issue.key}")
  91. indexManager.reIndex(issueManager.getIssue(issue.id));
  92. ImportUtils.setIndexIssues(wasIndexing);
  93. }
  94. ["output":"${issues.size()} issues were reindexed."]
  95. }
  96. SearchRequest getOrCreateSearchRequest(Map params) {
  97. FilterUtils.getOrCreateSearchRequest(params)
  98. }
  99. String getDescription(Map params, boolean forPreview) {
  100. SearchRequest sr = getOrCreateSearchRequest(params)
  101. String projectId = params[FIELD_PROJECT_ID]
  102. SearchResults results = getSearchResults(sr)
  103. """Will operate on ${results.getTotal()} issue(s) from the \"${sr.getName() ?: projectId}\" filter... """
  104. }
  105. private SearchResults getSearchResults(SearchRequest sr) {
  106. return FilterUtils.getSearchResults(sr)
  107. }
  108. public Boolean isFinalParamsPage(Map params) {
  109. true
  110. }
  111. public String getHelpUrl() {
  112. "https://studio.plugins.atlassian.com/wiki/display/GRV/Built-In+Scripts#Built-InScripts-ConditionTester"
  113. }
  114. }