001    /*
002     * SonarQube, open source software quality management tool.
003     * Copyright (C) 2008-2013 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        return new ViolationQuery(resource.getId().toString());
137      }
138    
139      public static ViolationQuery createForResource(String resourceIdOrKey) {
140        return new ViolationQuery(resourceIdOrKey);
141      }
142    }