001 /*
002 * SonarQube, open source software quality management tool.
003 * Copyright (C) 2008-2014 SonarSource
004 * mailto:contact AT sonarsource DOT com
005 *
006 * SonarQube 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 * SonarQube 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 */
020 package org.sonar.wsclient.issue;
021
022 import org.sonar.wsclient.internal.EncodingUtils;
023
024 import java.util.Date;
025 import java.util.HashMap;
026 import java.util.Map;
027
028 /**
029 * @since 3.6
030 */
031 public class IssueQuery {
032
033 private final Map<String, Object> params = new HashMap<String, Object>();
034
035 private IssueQuery() {
036 }
037
038 public static IssueQuery create() {
039 return new IssueQuery();
040 }
041
042 /**
043 * URL query string, for internal use
044 */
045 public Map<String, Object> urlParams() {
046 return params;
047 }
048
049 public IssueQuery issues(String... keys) {
050 return addParam("issues", keys);
051 }
052
053 public IssueQuery severities(String... severities) {
054 return addParam("severities", severities);
055 }
056
057 public IssueQuery statuses(String... statuses) {
058 return addParam("statuses", statuses);
059 }
060
061 public IssueQuery resolutions(String... resolutions) {
062 return addParam("resolutions", resolutions);
063 }
064
065 public IssueQuery components(String... components) {
066 return addParam("components", components);
067 }
068
069 public IssueQuery componentRoots(String... componentRoots) {
070 return addParam("componentRoots", componentRoots);
071 }
072
073 public IssueQuery rules(String... s) {
074 return addParam("rules", s);
075 }
076
077 public IssueQuery actionPlans(String... s) {
078 return addParam("actionPlans", s);
079 }
080
081 public IssueQuery reporters(String... s) {
082 return addParam("reporters", s);
083 }
084
085 public IssueQuery assignees(String... s) {
086 return addParam("assignees", s);
087 }
088 public IssueQuery languages(String... s) {
089 return addParam("languages", s);
090 }
091
092 public IssueQuery assigned(Boolean assigned) {
093 params.put("assigned", assigned);
094 return this;
095 }
096
097 public IssueQuery planned(Boolean planned) {
098 params.put("planned", planned);
099 return this;
100 }
101
102 public IssueQuery resolved(Boolean resolved) {
103 params.put("resolved", resolved);
104 return this;
105 }
106
107 /**
108 * @since 4.2
109 */
110 public IssueQuery hideRules(Boolean hideRules) {
111 params.put("hideRules", hideRules);
112 return this;
113 }
114
115 /**
116 * Require second precision.
117 * @since 3.7
118 */
119 public IssueQuery createdAt(Date d) {
120 params.put("createdAt", EncodingUtils.toQueryParam(d, true));
121 return this;
122 }
123
124 public IssueQuery createdAfter(Date d) {
125 params.put("createdAfter", EncodingUtils.toQueryParam(d, true));
126 return this;
127 }
128
129 public IssueQuery createdBefore(Date d) {
130 params.put("createdBefore", EncodingUtils.toQueryParam(d, true));
131 return this;
132 }
133
134 public IssueQuery sort(String sort) {
135 params.put("sort", sort);
136 return this;
137 }
138
139 public IssueQuery asc(boolean asc) {
140 params.put("asc", asc);
141 return this;
142 }
143
144 public IssueQuery pageSize(int pageSize) {
145 params.put("pageSize", pageSize);
146 return this;
147 }
148
149 public IssueQuery pageIndex(int pageIndex) {
150 params.put("pageIndex", pageIndex);
151 return this;
152 }
153
154 private IssueQuery addParam(String key, String[] values) {
155 if (values != null) {
156 params.put(key, EncodingUtils.toQueryParam(values));
157 }
158 return this;
159 }
160
161 }