我正在编写一个自定义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;
}
}