Advertisement
Guest User

Untitled

a guest
Jun 29th, 2018
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 2.58 KB | None | 0 0
  1. package com.onresolve.jira.groovy.jql
  2.  
  3. import com.atlassian.jira.component.ComponentAccessor
  4. import com.atlassian.jira.issue.link.IssueLinkManager
  5. import com.atlassian.jira.issue.link.IssueLink
  6. import com.atlassian.jira.issue.Issue
  7.  
  8. import com.atlassian.jira.JiraDataType
  9. import com.atlassian.jira.JiraDataTypes
  10. import com.atlassian.jira.component.ComponentAccessor
  11. import com.atlassian.jira.jql.operand.QueryLiteral
  12. import com.atlassian.jira.jql.query.QueryCreationContext
  13. import com.atlassian.jira.permission.ProjectPermissions
  14. import com.atlassian.jira.project.version.VersionManager
  15. import com.atlassian.query.clause.TerminalClause
  16. import com.atlassian.query.operand.FunctionOperand
  17. import com.atlassian.jira.issue.link.IssueLink
  18.  
  19. class EpicOutLink extends AbstractScriptedJqlFunction implements JqlFunction {
  20.  
  21.     @Override
  22.     String getDescription() {
  23.         "Получаем связанные исходящие задачи к эпику "
  24.     }
  25.    
  26.  
  27.     @Override
  28.     List<Map> getArguments() {
  29.         [
  30.             [
  31.                 description: "Epic Key",
  32.                 optional: false,
  33.             ]
  34.         ]
  35.     }
  36.    
  37.  
  38.     @Override
  39.     String getFunctionName() {
  40.         "epicOutLink"
  41.     }
  42.    
  43.  
  44.     @Override
  45.     JiraDataType getDataType() {
  46.         JiraDataTypes.ISSUE
  47.     }
  48.    
  49.  
  50.     @Override
  51.     List<QueryLiteral> getValues( QueryCreationContext queryCreationContext, FunctionOperand operand, TerminalClause terminalClause) {
  52.  
  53.         List<QueryLiteral> out = []
  54.         Issue issue = ComponentAccessor.getIssueManager().getIssueObject(operand.args.first().toUpperCase())
  55.         if (issue == null) {
  56.             retrun out
  57.         }
  58.  
  59.         def issueLinkManager = ComponentAccessor.getIssueLinkManager()
  60.          
  61.         // Получаем связанные задачи у линка
  62.         //def inwardLinks = issueLinkManager.getInwardLinks(issue.getId())
  63.         def outwardLinks = issueLinkManager.getOutwardLinks(issue.getId())
  64.         // для исходящих
  65.         for (IssueLink link: outwardLinks) {
  66.             if (link.getIssueLinkType().getName() == "Blocks") { // Фильтруем линки по типу
  67.                 out.add(new QueryLiteral(operand, link.getDestinationObject().getKey()))
  68.             }
  69.         }
  70.         // для входящих
  71.         //for (IssueLink link: inwardLinks) {
  72.         //  if (link.getIssueLinkType().getName() == "Blocks") {
  73.         //      out.add(new QueryLiteral(operand, link.getSourceObject().getKey()))
  74.         //  }
  75.         //}
  76.  
  77.  
  78.     return out
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement