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 * @since 2.1
024 */
025 public class DependencyTreeQuery extends Query<DependencyTree> {
026 private static final String BASE_URL = "/api/dependency_tree";
027
028 private String resourceId;
029 private String[] scopes;
030
031 public DependencyTreeQuery(String resourceId) {
032 this.resourceId = resourceId;
033 }
034
035 public String getResourceId() {
036 return resourceId;
037 }
038
039 public String[] getScopes() {
040 return scopes;
041 }
042
043 public DependencyTreeQuery setResourceId(String resourceId) {
044 this.resourceId = resourceId;
045 return this;
046 }
047
048 public DependencyTreeQuery setScopes(String... scopes) {
049 this.scopes = scopes;
050 return this;
051 }
052
053 @Override
054 public String getUrl() {
055 StringBuilder url = new StringBuilder(BASE_URL);
056 url.append('?');
057 appendUrlParameter(url, "resource", resourceId);
058 appendUrlParameter(url, "scopes", scopes);
059 return url.toString();
060 }
061
062 @Override
063 public Class<DependencyTree> getModelClass() {
064 return DependencyTree.class;
065 }
066
067 public static DependencyTreeQuery createForResource(String resourceIdOrKey) {
068 return new DependencyTreeQuery(resourceIdOrKey);
069 }
070
071 public static DependencyTreeQuery createForProject(String projectIdOrKey) {
072 return new DependencyTreeQuery(projectIdOrKey).setScopes(Resource.SCOPE_SET);
073 }
074 }