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