2

プレーンな Jql では実行できない高度なクエリを実行するカスタム Jql 関数を作成しています。複数のコンポーネントまたは (正確に 1 つのコンポーネントと指定されたカスタム フィールドが null ではない) を含むすべての問題を見つける必要があります。

SQL、Hibernate、またはその他の種類のデータベース クエリを発行できるように、プラグインにどの Manager クラスを挿入できますか?

目的は、カスタム関数が一致する課題のリストを返すことで、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 に答える