Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.onresolve.jira.groovy.jql
- import com.atlassian.jira.component.ComponentAccessor
- import com.atlassian.jira.issue.link.IssueLinkManager
- import com.atlassian.jira.issue.link.IssueLink
- import com.atlassian.jira.issue.Issue
- import com.atlassian.jira.JiraDataType
- import com.atlassian.jira.JiraDataTypes
- import com.atlassian.jira.component.ComponentAccessor
- import com.atlassian.jira.jql.operand.QueryLiteral
- import com.atlassian.jira.jql.query.QueryCreationContext
- import com.atlassian.jira.permission.ProjectPermissions
- import com.atlassian.jira.project.version.VersionManager
- import com.atlassian.query.clause.TerminalClause
- import com.atlassian.query.operand.FunctionOperand
- import com.atlassian.jira.issue.link.IssueLink
- class EpicOutLink extends AbstractScriptedJqlFunction implements JqlFunction {
- @Override
- String getDescription() {
- "Получаем связанные исходящие задачи к эпику "
- }
- @Override
- List<Map> getArguments() {
- [
- [
- description: "Epic Key",
- optional: false,
- ]
- ]
- }
- @Override
- String getFunctionName() {
- "epicOutLink"
- }
- @Override
- JiraDataType getDataType() {
- JiraDataTypes.ISSUE
- }
- @Override
- List<QueryLiteral> getValues( QueryCreationContext queryCreationContext, FunctionOperand operand, TerminalClause terminalClause) {
- List<QueryLiteral> out = []
- Issue issue = ComponentAccessor.getIssueManager().getIssueObject(operand.args.first().toUpperCase())
- if (issue == null) {
- retrun out
- }
- def issueLinkManager = ComponentAccessor.getIssueLinkManager()
- // Получаем связанные задачи у линка
- //def inwardLinks = issueLinkManager.getInwardLinks(issue.getId())
- def outwardLinks = issueLinkManager.getOutwardLinks(issue.getId())
- // для исходящих
- for (IssueLink link: outwardLinks) {
- if (link.getIssueLinkType().getName() == "Blocks") { // Фильтруем линки по типу
- out.add(new QueryLiteral(operand, link.getDestinationObject().getKey()))
- }
- }
- // для входящих
- //for (IssueLink link: inwardLinks) {
- // if (link.getIssueLinkType().getName() == "Blocks") {
- // out.add(new QueryLiteral(operand, link.getSourceObject().getKey()))
- // }
- //}
- return out
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement