001 /* 002 * Sonar, open source software quality management tool. 003 * Copyright (C) 2008-2011 SonarSource 004 * mailto:contact AT sonarsource DOT com 005 * 006 * Sonar 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 * Sonar 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 017 * License along with Sonar; if not, write to the Free Software 018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 019 */ 020 package org.sonar.wsclient.services; 021 022 /** 023 * @since 2.8 024 */ 025 public class ReviewQuery extends Query<Review> { 026 027 public static final String BASE_URL = "/api/reviews"; 028 029 public static final String OUTPUT_PLAIN = "PLAIN"; 030 public static final String OUTPUT_HTML = "HTML"; 031 032 private String reviewType; 033 private Long id; 034 private Long[] ids; 035 private String[] statuses; 036 private String[] severities; 037 private String[] projectKeysOrIds; 038 private String[] resourceKeysOrIds; 039 private String[] authorLoginsOrIds; 040 private String[] assigneeLoginsOrIds; 041 private String output; 042 043 public ReviewQuery() { 044 } 045 046 /** 047 * @return the reviewType 048 */ 049 public String getReviewType() { 050 return reviewType; 051 } 052 053 /** 054 * @param reviewType 055 * the reviewType to set 056 */ 057 public ReviewQuery setReviewType(String reviewType) { 058 this.reviewType = reviewType; 059 return this; 060 } 061 062 /** 063 * @return the id 064 */ 065 public Long getId() { 066 return id; 067 } 068 069 /** 070 * @param id 071 * the id to set 072 */ 073 public ReviewQuery setId(Long id) { 074 this.id = id; 075 return this; 076 } 077 078 /** 079 * @return the ids 080 */ 081 public Long[] getIds() { 082 return ids; 083 } 084 085 /** 086 * @param ids 087 * the ids to set 088 */ 089 public ReviewQuery setIds(Long... ids) { 090 this.ids = ids; 091 return this; 092 } 093 094 /** 095 * @return the statuses 096 */ 097 public String[] getStatuses() { 098 return statuses; 099 } 100 101 /** 102 * @param statuses 103 * the statuses to set 104 */ 105 public ReviewQuery setStatuses(String... statuses) { 106 this.statuses = statuses; 107 return this; 108 } 109 110 /** 111 * @return the severities 112 */ 113 public String[] getSeverities() { 114 return severities; 115 } 116 117 /** 118 * @param severities 119 * the severities to set 120 */ 121 public ReviewQuery setSeverities(String... severities) { 122 this.severities = severities; 123 return this; 124 } 125 126 127 /** 128 * @return the projectKeysOrIds 129 */ 130 public String[] getProjectKeysOrIds() { 131 return projectKeysOrIds; 132 } 133 134 135 /** 136 * @param projectKeysOrIds the projectKeysOrIds to set 137 */ 138 public ReviewQuery setProjectKeysOrIds(String... projectKeysOrIds) { 139 this.projectKeysOrIds = projectKeysOrIds; 140 return this; 141 } 142 143 144 /** 145 * @return the resourceKeysOrIds 146 */ 147 public String[] getResourceKeysOrIds() { 148 return resourceKeysOrIds; 149 } 150 151 152 /** 153 * @param resourceKeysOrIds the resourceKeysOrIds to set 154 */ 155 public ReviewQuery setResourceKeysOrIds(String... resourceKeysOrIds) { 156 this.resourceKeysOrIds = resourceKeysOrIds; 157 return this; 158 } 159 160 161 /** 162 * @return the authorLoginsOrIds 163 */ 164 public String[] getAuthorLoginsOrIds() { 165 return authorLoginsOrIds; 166 } 167 168 169 /** 170 * @param authorLoginsOrIds the authorLoginsOrIds to set 171 */ 172 public ReviewQuery setAuthorLoginsOrIds(String... authorLoginsOrIds) { 173 this.authorLoginsOrIds = authorLoginsOrIds; 174 return this; 175 } 176 177 178 /** 179 * @return the assigneeLoginsOrIds 180 */ 181 public String[] getAssigneeLoginsOrIds() { 182 return assigneeLoginsOrIds; 183 } 184 185 186 /** 187 * @param assigneeLoginsOrIds the assigneeLoginsOrIds to set 188 */ 189 public ReviewQuery setAssigneeLoginsOrIds(String... assigneeLoginsOrIds) { 190 this.assigneeLoginsOrIds = assigneeLoginsOrIds; 191 return this; 192 } 193 194 /** 195 * @return the output 196 */ 197 public String getOutput() { 198 return output; 199 } 200 201 public ReviewQuery setOutput(String output) { 202 this.output = output; 203 return this; 204 } 205 206 @Override 207 public String getUrl() { 208 StringBuilder url = new StringBuilder(BASE_URL); 209 url.append('?'); 210 if (id != null) { 211 appendUrlParameter(url, "id", id); 212 } else if (ids != null) { 213 appendUrlParameter(url, "ids", ids); 214 } 215 appendUrlParameter(url, "review_type", reviewType); 216 appendUrlParameter(url, "statuses", statuses); 217 appendUrlParameter(url, "severities", severities); 218 appendUrlParameter(url, "projects", projectKeysOrIds); 219 appendUrlParameter(url, "resources", resourceKeysOrIds); 220 appendUrlParameter(url, "authors", authorLoginsOrIds); 221 appendUrlParameter(url, "assignees", assigneeLoginsOrIds); 222 appendUrlParameter(url, "output", output); 223 224 return url.toString(); 225 } 226 227 @Override 228 public Class<Review> getModelClass() { 229 return Review.class; 230 } 231 232 public static ReviewQuery createForResource(Resource resource) { 233 return new ReviewQuery().setResourceKeysOrIds(resource.getId().toString()); 234 } 235 236 }