有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何获取超过50个Jira问题?

我正在尝试使用API从Jirá获取所有任务。 我找到了working code

public class CustomJiraRestClient {

    private static final String JIRA_URL = "http://jira-dev:8080";
    private static final String JIRA_ADMIN_USERNAME = "admin";
    private static final String JIRA_ADMIN_PASSWORD = "admin";

    public static void main(String[] args) throws Exception {
        // Construct the JRJC client
        System.out.println(String.format("Logging in to %s with username '%s' and password '%s'", JIRA_URL, JIRA_ADMIN_USERNAME, JIRA_ADMIN_PASSWORD));
        JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
        URI uri = new URI(JIRA_URL);
        JiraRestClient client = factory.createWithBasicHttpAuthentication(uri, JIRA_ADMIN_USERNAME, JIRA_ADMIN_PASSWORD);

        // Invoke the JRJC Client
        Promise<User> promise = client.getUserClient().getUser("admin");
        User user = promise.claim();

        Promise<SearchResult> searchJqlPromise = client.getSearchClient().searchJql("project = MYPURRJECT AND status in (Closed, Completed, Resolved) ORDER BY assignee, resolutiondate");

        for (Issue issue : searchJqlPromise.claim().getIssues()) {
            System.out.println(issue.getSummary());
        }

        // Done
        System.out.println("Example complete. Now exiting.");
        System.exit(0);
    }
}

但有一个问题: -只显示前50个条目。 和往常一样,图形界面——一个有50个条目的页面。 请帮帮我,我如何一次得到所有的记录?或者如何指定所需的页面或项目

我找到了一些方法:

  • searchResult.getMaxResults();-所有记录的数量(n)
  • searchResult.getTotal();每页的条目数(50)
  • searchResult.getStartIndex();-第一个元素的编号(0)

但我不能把它们放在任何地方使用。我能认出他们,但这毫无意义

以下是我使用的软件版本:

  • Jira版本:7.2.13
  • atlassian image consumer(com.atlassian.image:atlassian image consumer:1.0.1:jar)
  • 卡罗尔(卡罗尔:卡罗尔:1.5.2:jar)
  • 卡罗尔酒店(卡罗尔:卡罗尔酒店:1.5.2:jar)
  • 数据文件(数据文件:数据文件:1.3.3:jar)
  • hibernate(hibernate:hibernate:2.1.8-atlassian:jar)
  • image4j(org.jclarion:image4j:0.7:jar)
  • JCaptcha(com.octo.captcha:JCaptcha api:2.0-alpha-1:jar)
  • JCaptcha(com.octo.captcha:JCaptcha:2.0-alpha-1:jar)
  • jcommon(jfree:jcommon:1.0.8:jar)
  • jfreechart(jfree:jfreechart:1.0.13:jar)
  • JSCalendar(1.0)
  • jStyleParser(net.sf.cssbox:jStyleParser:1.16-atlassian-1:jar)
  • XML流API(javax.XML.stream:staxapi:1.0-2:jar)
  • TinyMCE TinyMCE(4.4.0)
  • xapool(xapool:xapool:1.3.1:jar)

共 (2) 个答案

  1. # 1 楼答案

    快速浏览一下API文档,我会说您需要使用重载^{}并指定maxResults参数

  2. # 2 楼答案

    我建议使用以下功能

    public List<Issue> getIssuesList(String query) {
    
        boolean flag = false;
        int start = 0, end=Constants.MAX_RESULTS_PER_PAGE, totalResults = 0;
        List<Issue> issueList = new ArrayList<Issue>();
        SearchResult searchResult;
        do {
            Promise<SearchResult> searchJqlPromise = client.getSearchClient().searchJql(query,end,start, null);
    
            searchResult = searchJqlPromise.claim();
            if(flag==false) {
                totalResults = searchResult.getTotal();
                flag=true;
            };
            List<Issue> res = (List<Issue>) searchResult.getIssues();
            issueList.addAll(res);
            
            start = start + Constants.MAX_RESULTS_PER_PAGE;
            totalResults -= Constants.MAX_RESULTS_PER_PAGE;
            
        } while(totalResults>0);
        
        return issueList;
    
    }