/src/test/resources/examples/Scratch.groovy
Groovy | 183 lines | 128 code | 45 blank | 10 comment | 3 complexity | 46eb6eb3d4d495a7ea9df4777c2d67e6 MD5 | raw file
- package examples
- import com.atlassian.jira.ComponentManager
- import com.atlassian.jira.ManagerFactory
- import com.atlassian.jira.config.properties.ApplicationProperties
- import com.atlassian.jira.issue.fields.config.manager.FieldConfigSchemeManager
- import com.atlassian.velocity.VelocityManager
- import org.apache.log4j.Logger
- import com.atlassian.jira.issue.fields.config.FieldConfigScheme
- import com.atlassian.jira.issue.context.manager.JiraContextTreeManager
- import com.atlassian.jira.issue.customfields.CustomFieldUtils
- import com.atlassian.jira.jql.builder.JqlQueryBuilder
- 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.web.bean.PagerFilter
- import com.atlassian.jira.issue.customfields.option.Option
- import com.atlassian.jira.component.ComponentAccessor
- import com.atlassian.jira.issue.fields.option.OptionSetManager
- import com.atlassian.jira.issue.ModifiedValue
- import com.atlassian.jira.issue.util.IssueChangeHolder
- import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
- import com.atlassian.jira.util.ImportUtils
- import com.atlassian.jira.issue.index.IssueIndexManager
- import com.atlassian.jira.issue.customfields.view.CustomFieldParamsImpl
- import com.atlassian.jira.issue.customfields.view.CustomFieldParams
- import com.atlassian.jira.issue.customfields.impl.TextCFType
- import com.atlassian.jira.issue.changehistory.ChangeHistoryManager
- import org.apache.log4j.Category
- import org.apache.log4j.Level
- Logger log = Logger.getLogger(this.class);
- log.setLevel(Level.DEBUG)
- log.debug("=====================================================================================================")
- ComponentManager componentManager = ComponentManager.getInstance()
- //def issueManager = componentManager.getIssueManager()
- //def issue = issueManager.getIssueObject("JRA-1358")
- //issue.setSecurityLevelId(null)
- //issue.store()
- final ApplicationProperties applicationProperties = ComponentManager.getInstance().getApplicationProperties();
- def applicationLinkService = ComponentManager.getComponentInstanceOfType(ApplicationLinkService.class)
- applicationLinkService
- VelocityManager velocityManager = ManagerFactory.getVelocityManager();
- def jiraAuthenticationContext = componentManager.getJiraAuthenticationContext()
- def issueManager = componentManager.getIssueManager()
- def issue = issueManager.getIssueObject("JRTWO-137")
- def fieldLayoutManager = componentManager.getFieldLayoutManager()
- def customFieldManager = componentManager.getCustomFieldManager()
- def fieldConfigSchemeManager = ComponentManager.getComponentInstanceOfType(FieldConfigSchemeManager.class)
- def optionSetManager = ComponentManager.getComponentInstanceOfType(OptionSetManager.class)
- def projectManager = componentManager.getProjectManager()
- def targetProj = projectManager.getProjectObjByKey("JRTWO")
- SearchProvider searchProvider = componentManager.getSearchProvider()
- def optionsManager = ComponentAccessor.getOptionsManager()
- IssueIndexManager indexManager = ComponentManager.getInstance().getIndexManager()
- import org.apache.log4j.Category
- import org.apache.log4j.Level
- import com.atlassian.applinks.api.EntityLinkService
- import com.atlassian.applinks.api.ApplicationLinkService
- Category.getInstance("com.onresolve.jira.groovy").setLevel(Level.DEBUG)
- def changeHistoryManager = ComponentManager.getComponentInstanceOfType(ChangeHistoryManager.class)
- changeHistoryManager.getAllChangeItems()
- [].getAt(1)
- def cf = customFieldManager.getCustomFieldObjectByName("testTextField")
- // cf.getCustomFieldType().class.isAssignableFrom(GenericTextCFType.class)
- def assignableFrm = ["com.atlassian.jira.issue.customfields.impl.TextCFType",
- "com.atlassian.jira.issue.customfields.impl.GenericTextCFType"].any {
- try {
- return Class.forName(it).isAssignableFrom(cf.getCustomFieldType().class)
- }
- catch (Exception e) {
- return false
- }
- }
- log.debug(assignableFrm)
- // log.debug TextCFType.class.isAssignableFrom(cf.getCustomFieldType().class)
- return
- fieldConfigSchemeManager.getConfigSchemesForField(cf).each {fcs ->
- log.debug(fcs.name)
- log.debug(fcs.getConfigs())
- }
- def value = issue.getCustomFieldValue(cf) as CustomFieldParams
- log.debug value
- log.debug value.getFirstValueForKey(null).class
- log.debug(value.getKeysAndValues().values()*.first()*.optionId)
- log.debug optionsManager.findByParentId(10665).find {it.value == "A1"}.optionId
- return
- def cfValue = issue.getCustomFieldValue(cf) as Option
- log.debug cfValue.genericValue
- def fieldConfig = fieldConfigSchemeManager.getFieldConfigScheme(11591L).getOneAndOnlyConfig()
- fieldConfigSchemeManager.getConfigSchemesForField(cf).each {fcs ->
- if (! fcs.name.startsWith("Default")) {
- fieldConfigSchemeManager.removeFieldConfigScheme(fcs.id)
- }
- }
- log.debug(fieldConfig.name)
- def originalOptions = optionsManager.getOptions(fieldConfig)
- log.debug(originalOptions)
- JiraContextTreeManager jiraContextTreeManager = new JiraContextTreeManager(projectManager, ComponentManager.getInstance().getConstantsManager())
- List contexts = CustomFieldUtils.buildJiraIssueContexts(false,
- null,
- [targetProj.id] as Long[],
- jiraContextTreeManager);
- // todo: update original FCS to remove the items selected
- def targetFCS = fieldConfigSchemeManager.createFieldConfigScheme(
- new FieldConfigScheme.Builder().setName("my arse").setDescription("description").toFieldConfigScheme(),
- contexts,
- FieldConfigSchemeManager.ALL_ISSUE_TYPES,
- cf
- )
- log.debug(targetFCS.name)
- def targetFieldConfig = targetFCS.getOneAndOnlyConfig()
- componentManager.getFieldManager().refresh()
- originalOptions.each {Option opt ->
- log.debug(opt.class)
- // todo: enabled,disabled, child options
- optionsManager.createOption(targetFieldConfig, null, null, opt.getValue())
- }
- // add third opt C
- optionsManager.createOption(targetFieldConfig, null, null, "C")
- // set default value
- cf.getCustomFieldType().setDefaultValue(targetFieldConfig, cf.getCustomFieldType().getDefaultValue(fieldConfig))
- def query = JqlQueryBuilder.newBuilder().where().project(targetProj.id).and().issueType("1").and().customField(cf.idAsLong).isNotEmpty().buildQuery()
- log.debug(query)
- SearchRequest sr = new SearchRequest(query)
- SearchResults results = searchProvider.search(sr.getQuery(), componentManager.getJiraAuthenticationContext().getUser(), PagerFilter.getUnlimitedFilter())
- log.debug(results.total)
- results.issues.each {
- def iss = issueManager.getIssueObject(it.id)
- def oldFieldValue = iss.getCustomFieldValue(cf)
- def targetOption = optionsManager.getOptions(targetFieldConfig).find {it.value == oldFieldValue.value}
- log.debug("targetOption: ${targetOption.genericValue}")
- IssueChangeHolder changeHolder = new DefaultIssueChangeHolder()
- cf.updateValue(null, iss, new ModifiedValue(oldFieldValue, targetOption), changeHolder)
- iss.setCustomFieldValue(cf, targetOption)
- iss.store()
- boolean wasIndexing = ImportUtils.isIndexIssues();
- indexManager.reIndex(issue);
- ImportUtils.setIndexIssues(wasIndexing);
- }