Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package scriptConsole
- import com.atlassian.jira.bc.issue.search.SearchService
- import com.atlassian.jira.component.ComponentAccessor
- import com.atlassian.jira.event.type.EventDispatchOption
- import com.atlassian.jira.issue.CustomFieldManager
- import com.atlassian.jira.issue.Issue
- import com.atlassian.jira.issue.IssueManager
- import com.atlassian.jira.issue.ModifiedValue
- import com.atlassian.jira.issue.MutableIssue
- import com.atlassian.jira.issue.fields.CustomField
- import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem
- import com.atlassian.jira.issue.search.SearchResults
- import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
- import com.atlassian.jira.security.JiraAuthenticationContext
- import com.atlassian.jira.user.ApplicationUser
- import com.atlassian.jira.web.bean.PagerFilter
- import groovy.transform.Field
- import org.apache.log4j.Level
- import org.apache.log4j.Logger
- /**
- * Skript erstellt für Agile Hive
- * Ticket:
- * Falls bei der Migration Deutsch und Englisch vorliegen. Gibt es die Epic-Felder in beiden sprachen. Das Skript kopiert die deuteschen Feldwerte zu den englischen Feldwerten.
- *
- */
- @Field Logger logger = (Logger) log;
- logger.setLevel(Level.DEBUG);
- @Field String EPIC_JQL = "issuetype = Epos and key = WUAS-56"
- @Field String CF_EPIC_NAME = "Epic Name"
- @Field String CF_EPIC_NAME_DE = "Epos-Name"
- @Field String CF_EPIC_COLOR = "Epic Color"
- @Field String CF_EPIC_COLOR_DE = "Epos-Farbe"
- @Field String CF_EPIC_STATUS = "Epic Status"
- @Field String CF_EPIC_STATUS_DE = "Epos-Status"
- @Field String CF_EPIC_LINK = "Epic Link"
- @Field String CF_EPIC_LINK_DE = "Epos-Verknüpfung"
- @Field List<Issue> epics = getAllEpics();
- IssueManager issueManager = (IssueManager) ComponentAccessor.getComponent(IssueManager.class);
- for (Issue docIssue : epics) {
- MutableIssue epic = issueManager.getIssueObject(docIssue.getKey());
- handleIssue(epic);
- updateIssue(epic);
- }
- logger.debug("Ich habe Fertig");
- void handleIssue(Issue epic) {
- logger.debug("epic ${epic.key}");
- def epicNameDe = getCustomFieldValue(epic, CF_EPIC_NAME_DE)
- updateCustomField(CF_EPIC_NAME, epicNameDe, epic);
- }
- List<Issue> getAllEpics() {
- return getIssuesByJQL(EPIC_JQL)
- }
- List<Issue> getIssuesByJQL(String jqlSearch) {
- SearchService searchService = ComponentAccessor.getComponent(SearchService.class);
- ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();
- logger.info("Searching JQL: ${jqlSearch}");
- SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlSearch);
- if (parseResult.isValid()) {
- SearchResults searchResult = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter());
- return searchResult.getIssues();
- }
- logger.error("JQL '${jqlSearch}' is invalid. ${parseResult.getErrors()}");
- return Collections.emptyList();
- }
- def getCustomFieldValue(Issue issue, String cf_Name) {
- CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
- List<CustomField> customFields = customFieldManager.getCustomFieldObjects(issue);
- return customFields.find { it.name == cf_Name }?.getValue(issue);
- }
- void updateCustomField(String cfName, Object newValue, Issue issue) {
- CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
- CustomField customField = customFieldManager.getCustomFieldObjects(issue).find { it.name == cfName };
- if (!customField) {
- logger.warn("Did not find any CustomField with name ${cfName}");
- return;
- }
- logger.debug("### setCustomFieldValue: ${newValue} to custom field ${customField.getName()}(${customField.getId()})");
- FieldLayoutItem fieldLayoutItem = ComponentAccessor.getFieldLayoutManager().getFieldLayout(issue).getFieldLayoutItem(customField);
- Object oldValue = issue.getCustomFieldValue(customField);
- customField.updateValue(fieldLayoutItem, issue, new ModifiedValue(oldValue, newValue), new DefaultIssueChangeHolder());
- }
- void updateIssue(Issue issue) {
- JiraAuthenticationContext authenticationContext = ComponentAccessor.getJiraAuthenticationContext();
- ApplicationUser user = authenticationContext.getLoggedInUser();
- IssueManager issueManager = (IssueManager) ComponentAccessor.getComponent(IssueManager.class);
- logger.debug("throw Issue Updated Event for issue ${issue.key}")
- issueManager.updateIssue(user, (MutableIssue) issue, EventDispatchOption.ISSUE_UPDATED, false);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement