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