Advertisement
Guest User

Untitled

a guest
Jun 27th, 2018
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 2.99 KB | None | 0 0
  1. package com.onresolve.jira.groovy.jql
  2.  
  3. import com.atlassian.jira.bc.issue.search.SearchService
  4. import com.atlassian.jira.component.ComponentAccessor
  5. import com.atlassian.jira.jql.parser.JqlQueryParser
  6. import com.atlassian.jira.jql.query.LuceneQueryBuilder
  7. import com.atlassian.jira.jql.query.QueryCreationContext
  8. import com.atlassian.jira.jql.validator.NumberOfArgumentsValidator
  9. import com.atlassian.jira.user.ApplicationUser
  10. import com.atlassian.jira.util.MessageSet
  11. import com.atlassian.query.clause.TerminalClause
  12. import com.atlassian.query.operand.FunctionOperand
  13. import groovy.util.logging.Log4j
  14. import org.apache.lucene.search.Query
  15. import org.apache.commons.lang.StringUtils;
  16.  
  17. import java.text.MessageFormat
  18.  
  19. @Log4j
  20. class JqlAliasFunction extends AbstractScriptedJqlFunction implements JqlQueryFunction {
  21.  
  22.     /**
  23.      * Modify this query as appropriate.
  24.      *
  25.      * See {@link java.text.MessageFormat} for details
  26.      */
  27.     public static final String TEMPLATE_QUERY =
  28.         "issue in {0}"
  29.  
  30.     def queryParser = ComponentAccessor.getComponent(JqlQueryParser)
  31.     def luceneQueryBuilder = ComponentAccessor.getComponent(LuceneQueryBuilder)
  32.     def searchService = ComponentAccessor.getComponent(SearchService)
  33.  
  34.     @Override
  35.     String getDescription() {
  36.         "Create release notes" // Поменять описакние
  37.     }
  38.  
  39.     @Override
  40.     MessageSet validate(ApplicationUser user, FunctionOperand operand, TerminalClause terminalClause) {
  41.         def messageSet = new NumberOfArgumentsValidator(1, 1, getI18n()).validate(operand) // Проверка на кол-во
  42.  
  43.         if (messageSet.hasAnyErrors()) {
  44.             return messageSet
  45.         }
  46.  
  47.         def query = mergeQuery(operand)
  48.         messageSet = searchService.validateQuery(user, query)
  49.         messageSet
  50.     }
  51.  
  52.     @Override
  53.     List<Map> getArguments() {
  54.         [
  55.             [
  56.                 description: "Version to generate release notes for", // Тут поменять описание
  57.                 optional: false,
  58.             ]
  59.         ]
  60.     }
  61.  
  62.     @Override
  63.     String getFunctionName() {
  64.         "getLinkedIssueForEpic"
  65.     }
  66.  
  67.     @Override
  68.     Query getQuery(QueryCreationContext queryCreationContext, FunctionOperand operand, TerminalClause terminalClause) {
  69.  
  70.         def query = mergeQuery(operand)
  71.         luceneQueryBuilder.createLuceneQuery(queryCreationContext, query.whereClause)
  72.     }
  73.  
  74.     private com.atlassian.query.Query mergeQuery(FunctionOperand operand) {
  75.         def epicLey = operand.args.first()
  76.        
  77.         // твой код который присвоит linked список связанных сущностей или [] если их нет
  78.        
  79.         def linked = ["issue-1", "issue-2", "issue-3"] // для примера
  80.        
  81.         def linkedStr = "(" + StringUtils.join(linked, ",") + ")"
  82.        
  83.        
  84.         def queryStr = MessageFormat.format(TEMPLATE_QUERY, linkedStr)
  85.         queryParser.parseQuery(queryStr)
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement