如何在Jira插件中进行DB查询



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

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

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

尝试查看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; 
    }
}

最新更新