我正在编写一个自定义Jql函数来执行普通Jql无法实现的高级查询。我需要找到包含多个组件的所有问题或者(只有一个组件和给定的自定义字段不为空)。
我可以在插件中注入哪些Manager类,以便我可以发出SQL,Hibernate或其他类型的数据库查询?
我的自定义函数的目的是返回匹配问题的列表,以便它可以在Jira的Jql搜索中使用。
答案 0 :(得分: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;
}
}