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 public class ViolationQuery extends Query<Violation> { 023 public static final String BASE_URL = "/api/violations"; 024 025 private String resourceKeyOrId; 026 private int depth = 0; 027 private String[] scopes; 028 private String[] qualifiers; 029 private String[] ruleKeys; 030 private String[] categories; 031 private String[] severities; 032 private Integer limit; 033 034 public ViolationQuery(String resourceKeyOrId) { 035 this.resourceKeyOrId = resourceKeyOrId; 036 } 037 038 public String[] getScopes() { 039 return scopes; 040 } 041 042 public ViolationQuery setScopes(String... scopes) { 043 this.scopes = scopes; 044 return this; 045 } 046 047 public String[] getQualifiers() { 048 return qualifiers; 049 } 050 051 public ViolationQuery setQualifiers(String... qualifiers) { 052 this.qualifiers = qualifiers; 053 return this; 054 } 055 056 public String[] getRuleKeys() { 057 return ruleKeys; 058 } 059 060 public ViolationQuery setRuleKeys(String... ruleKeys) { 061 this.ruleKeys = ruleKeys; 062 return this; 063 } 064 065 public String[] getCategories() { 066 return categories; 067 } 068 069 public ViolationQuery setCategories(String... categories) { 070 this.categories = categories; 071 return this; 072 } 073 074 /** 075 * @since 2.5 076 */ 077 public String[] getSeverities() { 078 return severities; 079 } 080 081 /** 082 * @since 2.5 083 */ 084 public ViolationQuery setSeverities(String... severities) { 085 this.severities = severities; 086 return this; 087 } 088 089 /** 090 * @deprecated since 2.5 use {@link #getSeverities()} instead. See http://jira.codehaus.org/browse/SONAR-1829 091 */ 092 @Deprecated 093 public String[] getPriorities() { 094 return severities; 095 } 096 097 /** 098 * @deprecated since 2.5 use {@link #setSeverities(String...)} instead. See http://jira.codehaus.org/browse/SONAR-1829 099 */ 100 @Deprecated 101 public ViolationQuery setPriorities(String... priorities) { 102 this.severities = priorities; 103 return this; 104 } 105 106 public int getDepth() { 107 return depth; 108 } 109 110 public ViolationQuery setDepth(int depth) { 111 this.depth = depth; 112 return this; 113 } 114 115 /** 116 * @since 2.5 117 */ 118 public Integer getLimit() { 119 return limit; 120 } 121 122 /** 123 * @since 2.5 124 */ 125 public ViolationQuery setLimit(Integer limit) { 126 this.limit = limit; 127 return this; 128 } 129 130 @Override 131 public String getUrl() { 132 StringBuilder url = new StringBuilder(BASE_URL); 133 url.append('?'); 134 appendUrlParameter(url, "resource", resourceKeyOrId); 135 if (depth != 0) { 136 url.append("depth=").append(depth).append("&"); 137 } 138 appendUrlParameter(url, "limit", limit); 139 appendUrlParameter(url, "scopes", scopes); 140 appendUrlParameter(url, "qualifiers", qualifiers); 141 appendUrlParameter(url, "rules", ruleKeys); 142 appendUrlParameter(url, "categories", categories); 143 appendUrlParameter(url, "priorities", severities); 144 return url.toString(); 145 } 146 147 @Override 148 public Class<Violation> getModelClass() { 149 return Violation.class; 150 } 151 152 public static ViolationQuery createForResource(Resource resource) { 153 return new ViolationQuery(resource.getId().toString()); 154 } 155 156 public static ViolationQuery createForResource(String resourceIdOrKey) { 157 return new ViolationQuery(resourceIdOrKey); 158 } 159 }