Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.onresolve.jira.groovy.jql
- import com.atlassian.jira.bc.issue.search.SearchService
- import com.atlassian.jira.component.ComponentAccessor
- import com.atlassian.jira.jql.parser.JqlQueryParser
- import com.atlassian.jira.jql.query.LuceneQueryBuilder
- import com.atlassian.jira.jql.query.QueryCreationContext
- import com.atlassian.jira.jql.validator.NumberOfArgumentsValidator
- import com.atlassian.jira.user.ApplicationUser
- import com.atlassian.jira.util.MessageSet
- import com.atlassian.query.clause.TerminalClause
- import com.atlassian.query.operand.FunctionOperand
- import groovy.util.logging.Log4j
- import org.apache.lucene.search.Query
- import org.apache.commons.lang.StringUtils;
- import java.text.MessageFormat
- @Log4j
- class JqlAliasFunction extends AbstractScriptedJqlFunction implements JqlQueryFunction {
- /**
- * Modify this query as appropriate.
- *
- * See {@link java.text.MessageFormat} for details
- */
- public static final String TEMPLATE_QUERY =
- "issue in {0}"
- def queryParser = ComponentAccessor.getComponent(JqlQueryParser)
- def luceneQueryBuilder = ComponentAccessor.getComponent(LuceneQueryBuilder)
- def searchService = ComponentAccessor.getComponent(SearchService)
- @Override
- String getDescription() {
- "Create release notes" // Поменять описакние
- }
- @Override
- MessageSet validate(ApplicationUser user, FunctionOperand operand, TerminalClause terminalClause) {
- def messageSet = new NumberOfArgumentsValidator(1, 1, getI18n()).validate(operand) // Проверка на кол-во
- if (messageSet.hasAnyErrors()) {
- return messageSet
- }
- def query = mergeQuery(operand)
- messageSet = searchService.validateQuery(user, query)
- messageSet
- }
- @Override
- List<Map> getArguments() {
- [
- [
- description: "Version to generate release notes for", // Тут поменять описание
- optional: false,
- ]
- ]
- }
- @Override
- String getFunctionName() {
- "getLinkedIssueForEpic"
- }
- @Override
- Query getQuery(QueryCreationContext queryCreationContext, FunctionOperand operand, TerminalClause terminalClause) {
- def query = mergeQuery(operand)
- luceneQueryBuilder.createLuceneQuery(queryCreationContext, query.whereClause)
- }
- private com.atlassian.query.Query mergeQuery(FunctionOperand operand) {
- def epicLey = operand.args.first()
- // твой код который присвоит linked список связанных сущностей или [] если их нет
- def linked = ["issue-1", "issue-2", "issue-3"] // для примера
- def linkedStr = "(" + StringUtils.join(linked, ",") + ")"
- def queryStr = MessageFormat.format(TEMPLATE_QUERY, linkedStr)
- queryParser.parseQuery(queryStr)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement