package to.rtc.rtc2jira.exporter.jira.entities; import java.util.Collections; import java.util.List; import java.util.logging.Logger; import javax.xml.bind.annotation.XmlRootElement; import to.rtc.rtc2jira.exporter.jira.JiraExporter; import to.rtc.rtc2jira.exporter.jira.JiraRestAccess; import com.sun.jersey.api.client.ClientResponse; public class IssueSearch { private static final Logger LOGGER = Logger.getLogger(IssueSearch.class.getName()); public static final IssueSearch INSTANCE; private JiraRestAccess restAccess; static { INSTANCE = new IssueSearch(JiraExporter.INSTANCE.getRestAccess()); } private IssueSearch(JiraRestAccess access) { restAccess = access; } public IssueSearchResult run(String jql) { IssueSearchResult issueSearchResult = new IssueSearchResult(); issueSearchResult.issues = Collections.emptyList(); issueSearchResult.total = 0; issueSearchResult.startAt = 0; issueSearchResult.maxResults = 0; ClientResponse clientResponse = restAccess.get("/search?jql=" + jql); if (clientResponse.getStatus() == 200) { issueSearchResult = clientResponse.getEntity(IssueSearchResult.class); } else { String responseEntity = clientResponse.getEntity(String.class); LOGGER.warning("JQL search failed. Query string: '" + jql + "'. Response entity: " + responseEntity); } return issueSearchResult; } @XmlRootElement public static class IssueSearchResult { int startAt; int maxResults; int total; List<Issue> issues; public int getStartAt() { return startAt; } public void setStartAt(int startAt) { this.startAt = startAt; } public int getMaxResults() { return maxResults; } public void setMaxResults(int maxResults) { this.maxResults = maxResults; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public List<Issue> getIssues() { return issues; } public void setIssues(List<Issue> issues) { this.issues = issues; } } }