001/* 002 * SonarQube 003 * Copyright (C) 2009-2016 SonarSource SA 004 * mailto:contact AT sonarsource DOT com 005 * 006 * This program is free software; you can redistribute it and/or 007 * modify it under the terms of the GNU Lesser General Public 008 * License as published by the Free Software Foundation; either 009 * version 3 of the License, or (at your option) any later version. 010 * 011 * This program is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 014 * Lesser General Public License for more details. 015 * 016 * You should have received a copy of the GNU Lesser General Public License 017 * along with this program; if not, write to the Free Software Foundation, 018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 019 */ 020package org.sonarqube.ws.client.issue; 021 022import org.sonarqube.ws.Issues.SearchWsResponse; 023import org.sonarqube.ws.client.BaseService; 024import org.sonarqube.ws.client.GetRequest; 025import org.sonarqube.ws.client.WsConnector; 026 027import static org.sonarqube.ws.client.issue.IssueFilterParameters.ADDITIONAL_FIELDS; 028import static org.sonarqube.ws.client.issue.IssueFilterParameters.ASC; 029import static org.sonarqube.ws.client.issue.IssueFilterParameters.ASSIGNED; 030import static org.sonarqube.ws.client.issue.IssueFilterParameters.ASSIGNEES; 031import static org.sonarqube.ws.client.issue.IssueFilterParameters.AUTHORS; 032import static org.sonarqube.ws.client.issue.IssueFilterParameters.COMPONENTS; 033import static org.sonarqube.ws.client.issue.IssueFilterParameters.COMPONENT_KEYS; 034import static org.sonarqube.ws.client.issue.IssueFilterParameters.COMPONENT_ROOTS; 035import static org.sonarqube.ws.client.issue.IssueFilterParameters.COMPONENT_ROOT_UUIDS; 036import static org.sonarqube.ws.client.issue.IssueFilterParameters.COMPONENT_UUIDS; 037import static org.sonarqube.ws.client.issue.IssueFilterParameters.CREATED_AFTER; 038import static org.sonarqube.ws.client.issue.IssueFilterParameters.CREATED_AT; 039import static org.sonarqube.ws.client.issue.IssueFilterParameters.CREATED_BEFORE; 040import static org.sonarqube.ws.client.issue.IssueFilterParameters.CREATED_IN_LAST; 041import static org.sonarqube.ws.client.issue.IssueFilterParameters.DEPRECATED_ACTION_PLANS; 042import static org.sonarqube.ws.client.issue.IssueFilterParameters.DIRECTORIES; 043import static org.sonarqube.ws.client.issue.IssueFilterParameters.FACET_MODE; 044import static org.sonarqube.ws.client.issue.IssueFilterParameters.FILE_UUIDS; 045import static org.sonarqube.ws.client.issue.IssueFilterParameters.ISSUES; 046import static org.sonarqube.ws.client.issue.IssueFilterParameters.LANGUAGES; 047import static org.sonarqube.ws.client.issue.IssueFilterParameters.MODULE_UUIDS; 048import static org.sonarqube.ws.client.issue.IssueFilterParameters.ON_COMPONENT_ONLY; 049import static org.sonarqube.ws.client.issue.IssueFilterParameters.PROJECTS; 050import static org.sonarqube.ws.client.issue.IssueFilterParameters.PROJECT_KEYS; 051import static org.sonarqube.ws.client.issue.IssueFilterParameters.PROJECT_UUIDS; 052import static org.sonarqube.ws.client.issue.IssueFilterParameters.RESOLUTIONS; 053import static org.sonarqube.ws.client.issue.IssueFilterParameters.RESOLVED; 054import static org.sonarqube.ws.client.issue.IssueFilterParameters.RULES; 055import static org.sonarqube.ws.client.issue.IssueFilterParameters.SEVERITIES; 056import static org.sonarqube.ws.client.issue.IssueFilterParameters.SINCE_LEAK_PERIOD; 057import static org.sonarqube.ws.client.issue.IssueFilterParameters.STATUSES; 058import static org.sonarqube.ws.client.issue.IssueFilterParameters.TAGS; 059 060public class IssuesService extends BaseService { 061 062 public IssuesService(WsConnector wsConnector) { 063 super(wsConnector, "api/issues"); 064 } 065 066 public SearchWsResponse search(SearchWsRequest request) { 067 return call( 068 new GetRequest(path("search")) 069 .setParam(DEPRECATED_ACTION_PLANS, inlineMultipleParamValue(request.getActionPlans())) 070 .setParam(ADDITIONAL_FIELDS, inlineMultipleParamValue(request.getAdditionalFields())) 071 .setParam(ASC, request.getAsc()) 072 .setParam(ASSIGNED, request.getAssigned()) 073 .setParam(ASSIGNEES, inlineMultipleParamValue(request.getAssignees())) 074 .setParam(AUTHORS, inlineMultipleParamValue(request.getAuthors())) 075 .setParam(COMPONENT_KEYS, inlineMultipleParamValue(request.getComponentKeys())) 076 .setParam(COMPONENT_ROOT_UUIDS, inlineMultipleParamValue(request.getComponentRootUuids())) 077 .setParam(COMPONENT_ROOTS, inlineMultipleParamValue(request.getComponentRoots())) 078 .setParam(COMPONENT_UUIDS, inlineMultipleParamValue(request.getComponentUuids())) 079 .setParam(COMPONENTS, inlineMultipleParamValue(request.getComponents())) 080 .setParam(CREATED_AFTER, request.getCreatedAfter()) 081 .setParam(CREATED_AT, request.getCreatedAt()) 082 .setParam(CREATED_BEFORE, request.getCreatedBefore()) 083 .setParam(CREATED_IN_LAST, request.getCreatedInLast()) 084 .setParam(DIRECTORIES, inlineMultipleParamValue(request.getDirectories())) 085 .setParam(FACET_MODE, request.getFacetMode()) 086 .setParam("facets", inlineMultipleParamValue(request.getFacets())) 087 .setParam(FILE_UUIDS, inlineMultipleParamValue(request.getFileUuids())) 088 .setParam(ISSUES, inlineMultipleParamValue(request.getIssues())) 089 .setParam(LANGUAGES, inlineMultipleParamValue(request.getLanguages())) 090 .setParam(MODULE_UUIDS, inlineMultipleParamValue(request.getModuleUuids())) 091 .setParam(ON_COMPONENT_ONLY, request.getOnComponentOnly()) 092 .setParam("p", request.getPage()) 093 .setParam("ps", request.getPageSize()) 094 .setParam(PROJECT_KEYS, inlineMultipleParamValue(request.getProjectKeys())) 095 .setParam(PROJECT_UUIDS, inlineMultipleParamValue(request.getProjectUuids())) 096 .setParam(PROJECTS, inlineMultipleParamValue(request.getProjects())) 097 .setParam(RESOLUTIONS, inlineMultipleParamValue(request.getResolutions())) 098 .setParam(RESOLVED, request.getResolved()) 099 .setParam(RULES, inlineMultipleParamValue(request.getRules())) 100 .setParam("s", request.getSort()) 101 .setParam(SEVERITIES, inlineMultipleParamValue(request.getSeverities())) 102 .setParam(SINCE_LEAK_PERIOD, request.getSinceLeakPeriod()) 103 .setParam(STATUSES, inlineMultipleParamValue(request.getStatuses())) 104 .setParam(TAGS, inlineMultipleParamValue(request.getTags())), 105 SearchWsResponse.parser()); 106 } 107}