Поиск задач по дате последнего обновления в плагине Jira

120
23 февраля 2022, 06:00

Пишу плагин для Jira.

Для поиска по проекту использую IssueManager, там есть методы поиска только по id, списку id, можно получить список id задач по проекту... но нет методов поиска по атрибутам задачи.

Подскажите как можно найти все задачи которые были обновлены после заданной даты.

Answer 1

если я правильно понял суть, то можно получить запросы используя ScriptRunner и JQL

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.search.SearchProvider
import com.atlassian.jira.issue.search.SearchQuery
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.jql.query.IssueIdCollector
import com.atlassian.jira.issue.Issue;
import java.util.List;
def query = "project = \"Test\""   
List<Issue> issues = getIssuesByJQL(query)
def List getIssuesByJQL(String jql) {
    def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser)
    def searchProvider = ComponentAccessor.getComponent(SearchProvider)
    def issueManager = ComponentAccessor.getIssueManager()
    def user = ComponentAccessor.getUserManager().getUserByName("loginTest");
    def query = jqlQueryParser.parseQuery(jql)
    def iManager = ComponentAccessor.getIssueManager();
    IssueIdCollector collector = new IssueIdCollector()
    SearchQuery searchQuery = SearchQuery.create(query, user)
    searchProvider.search(searchQuery, collector)
    return collector.getIssueIds().collect { iManager.getIssueObject(it as Long) }
}

Вот пример, по сути Вам остается только подставить нужный проект, JQL и юзера

Answer 2

Нашел решение, данной задачи - привожу решение может кому-нибудь будет интересно

@Component
public class Utils{
    @ComponentImport
    private SearchProvider searchProvider;
    @ComponentImport
    private UserManager userManager;
    @ComponentImport
    private IssueManager issueManager;

    @Inject
    public Utils( IssueManager issueManager, UserManager userManager, SearchProvider searchProvider ){
        this.issueManager = issueManager;
        this.userManager = userManager;
        this.searchProvider = searchProvider;
        ...
    }
    ...
    public List<Issue> getIssuesByDateUpdateAfter( Date dTime ) throws SearchException{
        JqlQueryBuilder builder = JqlQueryBuilder.newBuilder();
        builder.where().addDateCondition( IssueFieldConstants.UPDATED, Operator.GREATER_THAN_EQUALS, dTime );
        return searchIssues( builder.buildQuery() );
    }
    public List<Issue> searchIssues( Query query ){
        ApplicationUser user = userManager.getUserByName( username );
        SearchQuery searchQuery = SearchQuery.create( query, user );
        IssueIdCollector collector = new IssueIdCollector();
        try{
            ThreadLocalSearcherCache.startSearcherContext();
            searchProvider.search( searchQuery, collector );
        }catch( Exception e ){
            e.getMessage();
        }finally{
            ThreadLocalSearcherCache.stopAndCloseSearcherContext();
        }
        return searchIssues(collector);
    }
    public List<Issue> searchIssues(IssueIdCollector collector){
        Set<String> strIds = collector.getIssueIds();
        List<Long> ids = new ArrayList<>();
        for( String strId : strIds ){
            ids.add( Long.parseLong( strId ) );
        }
        return issueManager.getIssueObjects( ids );
    }
    ...
}
READ ALSO
Записывать звук с микрофона в фоне Java(Android)

Записывать звук с микрофона в фоне Java(Android)

Мне нужно сделать запись звука с микрофона (маленькие фрагменты ~1с) и конвертировать его в stringтакже нужно сделать это в фоне и зациклить чтобы...

112
Отключить редактирование jTable

Отключить редактирование jTable

Как отключить редактирование значений ячеек, но оставить возможность выделять строку в jTable?

220
Почему неправильно выполняется 8 и 15 тест?

Почему неправильно выполняется 8 и 15 тест?

Не могу решить проблему, тест 8 и 15 выполняются не правильноМожете дать подсказку что не так

146
Разработка веб приложения на Spring Boot

Разработка веб приложения на Spring Boot

Я решил сделать небольшое веб-приложение на Spring BootПланировщик задач для пользователей

106