2

我正在编写一个自定义 Jql 函数来执行普通 Jql 无法执行的高级查询。我需要找到多个组件的所有问题或(恰好一个组件和给定的自定义字段不为空)。

我可以在我的插件中注入什么 Manager 类,以便发出 SQL、Hibernate 或其他类型的数据库查询?

目的是让我的自定义函数返回匹配问题的列表,以便可以在 Jira 中的 Jql 搜索中使用它。

4

1 回答 1

0

尝试查看 JIRA API 参考: http ://docs.atlassian.com/jira/4.1/com/atlassian/jira/jql/builder/JqlClauseBuilder.html 和 http://docs.atlassian.com/jira/4.1/ com/atlassian/jira/jql/builder/ConditionBuilder.html

您始终可以为您的插件类创建一个方法,如下所示:

public class MyPlugin
{
    JiraAuthenticationContext authenticationContext;
    SearchProvider searchProvider; 
    public MyPlugin(JiraAuthenticationContext authenticationContext, SearchProvider searchProvider){
        this.authenticationContext = authenticationContext;
        this.searchProvider = searchProvider; 
    }

    public List<Issue> getIssues(CustomField your_cf) throws SearchException{
        User user = authenticationContext.getLoggedInUser();

        JqlClauseBuilder jqb = JqlQueryBuilder.newBuilder().where();
        jqb = jqb.not().componentIsEmpty();
        Query query = jqb.endWhere().buildQuery(); 

        List<Issue> issues = searchProvider.search(query, user, PagerFilter.getUnlimitedFilter()).getIssues();

        List<Issue> result = new ArrayList<Issue>(); 
        for(Issue issue : issues){
                Collection<GenericValue> components = issue.getComponents(); 
                //component size already > 0 from query
                if(components.size() > 1 || (issue.getCustomFieldValue(your_cf) != null)) 
                        result.add(issue); 
        }
        return result; 
    }
}
于 2012-08-01T09:43:37.053 回答