/src/main/resources/com/onresolve/jira/groovy/canned/admin/ReindexIssues.groovy
Groovy | 135 lines | 114 code | 21 blank | 0 comment | 5 complexity | b93dd21500d66d759a31684cd3ac9825 MD5 | raw file
- package com.onresolve.jira.groovy.canned.admin
-
- import com.atlassian.jira.ComponentManager
- import com.atlassian.jira.bc.JiraServiceContext
- import com.atlassian.jira.bc.JiraServiceContextImpl
- import com.atlassian.jira.bc.filter.SearchRequestService
- import com.atlassian.jira.event.issue.IssueEvent
- import com.atlassian.jira.event.issue.IssueEventDispatcher
- import com.atlassian.jira.event.type.EventType
- import com.atlassian.jira.issue.Issue
- import com.atlassian.jira.issue.search.SearchProvider
- import com.atlassian.jira.issue.search.SearchRequest
- import com.atlassian.jira.issue.search.SearchResults
- import com.atlassian.jira.project.ProjectManager
- import com.atlassian.jira.security.JiraAuthenticationContext
- import com.atlassian.jira.util.ErrorCollection
- import com.atlassian.jira.util.SimpleErrorCollection
- import com.onresolve.jira.groovy.canned.CannedScript
- import com.onresolve.jira.groovy.canned.utils.CannedScriptUtils
- import com.onresolve.jira.groovy.canned.utils.FilterUtils
- import org.apache.log4j.Category
- import com.atlassian.jira.util.ImportUtils
- import com.atlassian.jira.ManagerFactory
- import com.atlassian.jira.issue.index.IssueIndexManager
- import com.atlassian.jira.util.BuildUtils
- import com.atlassian.jira.issue.IssueManager
-
- public class ReindexIssues implements CannedScript {
-
- public static String FIELD_FILTER_ID = "FIELD_FILTER_ID"
- public static String FIELD_PROJECT_ID = "FIELD_PROJECT_ID"
-
- ComponentManager componentManager = ComponentManager.getInstance()
- JiraAuthenticationContext authenticationContext = componentManager.getJiraAuthenticationContext()
- JiraServiceContext ctx = new JiraServiceContextImpl(authenticationContext.getUser());
- def searchRequestService = componentManager.getSearchRequestService()
- IssueIndexManager indexManager = ComponentManager.getInstance().getIndexManager()
- IssueManager issueManager = ComponentManager.getInstance().getIssueManager()
-
- Category log = Category.getInstance(ReindexIssues.class)
-
- public String getName() {
- "Reindex issues"
- }
-
- List getCategories() {
- ["ADMIN"]
- }
-
- public String getDescription() {
- """Reindex issues for a project or corresponding to a filter, perhaps after an indexing problem or editing the database.
- """
- }
-
- public List getParameters(Map params) {
- [
- [
- Name:FIELD_FILTER_ID,
- Label:"Filter ID",
- Description:"""All issues returned by this filter will have an event generated.""",
- Type:"list",
- Values: CannedScriptUtils.getAllOwnedFilters(true),
- ],
- [
- Name:FIELD_PROJECT_ID,
- Label:"Project Key",
- Description:"""All issues for this project will have an event generated.""",
- Type:"list",
- Values: CannedScriptUtils.getProjectOptions(true),
- ],
- ]
- }
-
- public ErrorCollection doValidate(Map params, boolean forPreview) {
- ErrorCollection errorCollection = new SimpleErrorCollection()
- if (! (params[FIELD_FILTER_ID] as Boolean ^ (params[FIELD_PROJECT_ID]) as Boolean)) {
- errorCollection.addErrorMessage("Please enter a project OR filter ID")
- return errorCollection
- }
-
- if (params[FIELD_FILTER_ID]) {
- long filterId = params[FIELD_FILTER_ID] as Long
- SearchRequest sr = searchRequestService.getFilter(ctx, filterId)
- if (! sr) {
- errorCollection.addError(FIELD_FILTER_ID, "Invalid filter ID... do you own this?")
- }
- }
-
- return errorCollection
- }
-
- Map doScript(Map params) {
- SearchRequest sr = getOrCreateSearchRequest(params)
- SearchResults results = getSearchResults(sr)
- List issues = results.getIssues();
-
- for (Issue issue in issues)
- {
- boolean wasIndexing = ImportUtils.isIndexIssues();
- ImportUtils.setIndexIssues(true);
- if ((BuildUtils.getCurrentBuildNumber() as Long) < 614) {
- ManagerFactory.getCacheManager().flush(com.atlassian.jira.issue.cache.CacheManager.ISSUE_CACHE, issue)
- }
- log.debug("Reindex issue ${issue.key}")
- indexManager.reIndex(issueManager.getIssue(issue.id));
- ImportUtils.setIndexIssues(wasIndexing);
- }
-
- ["output":"${issues.size()} issues were reindexed."]
- }
-
- SearchRequest getOrCreateSearchRequest(Map params) {
- FilterUtils.getOrCreateSearchRequest(params)
- }
-
- String getDescription(Map params, boolean forPreview) {
- SearchRequest sr = getOrCreateSearchRequest(params)
- String projectId = params[FIELD_PROJECT_ID]
-
- SearchResults results = getSearchResults(sr)
- """Will operate on ${results.getTotal()} issue(s) from the \"${sr.getName() ?: projectId}\" filter... """
- }
-
- private SearchResults getSearchResults(SearchRequest sr) {
- return FilterUtils.getSearchResults(sr)
- }
-
- public Boolean isFinalParamsPage(Map params) {
- true
- }
-
- public String getHelpUrl() {
- "https://studio.plugins.atlassian.com/wiki/display/GRV/Built-In+Scripts#Built-InScripts-ConditionTester"
- }
- }