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.api.resources;
021
022 import org.apache.commons.lang.StringUtils;
023
024 /**
025 * @since 1.10
026 */
027 public final class ResourceUtils {
028
029 private ResourceUtils() {
030 }
031
032 /**
033 * @return whether the resource is a view
034 */
035 public static boolean isView(Resource resource) {
036 return isSet(resource) && Qualifiers.VIEW.equals(resource.getQualifier());
037 }
038
039 /**
040 * @return whether the resource is a subview (in the view tree)
041 */
042 public static boolean isSubview(Resource resource) {
043 return isSet(resource) && Qualifiers.SUBVIEW.equals(resource.getQualifier());
044 }
045
046 /**
047 * @return whether the resource is the root project
048 */
049 public static boolean isRootProject(Resource resource) {
050 return Qualifiers.PROJECT.equals(resource.getQualifier());
051 }
052
053 /**
054 * @return whether a resource is a maven module of project
055 */
056 public static boolean isModuleProject(Resource resource) {
057 return Qualifiers.MODULE.equals(resource.getQualifier());
058 }
059
060 /**
061 * @deprecated since 4.2 Package are now directory. Use {@link #isDirectory(Resource)}
062 */
063 @Deprecated
064 public static boolean isPackage(Resource resource) {
065 return resource != null && Qualifiers.PACKAGE.equals(resource.getQualifier());
066 }
067
068 /**
069 * @return whether a resource is a set
070 */
071 public static boolean isSet(Resource resource) {
072 return resource != null && Scopes.PROJECT.equals(resource.getScope());
073 }
074
075 /**
076 * @return whether a resource is a space
077 */
078 public static boolean isSpace(Resource resource) {
079 return resource != null && Scopes.DIRECTORY.equals(resource.getScope());
080 }
081
082 /**
083 * @return whether a resource is an entity.
084 */
085 public static boolean isEntity(Resource resource) {
086 return resource != null && Scopes.FILE.equals(resource.getScope());
087 }
088
089 /**
090 * This method equal isRootProject(resource) or isModuleProject(resource)
091 */
092 public static boolean isProject(Resource resource) {
093 return isSet(resource);
094 }
095
096 /**
097 * Alias for {@link #isSpace(Resource)}
098 */
099 public static boolean isDirectory(Resource resource) {
100 return isSpace(resource);
101 }
102
103 /**
104 * Alias for {@link #isEntity(Resource)}
105 */
106 public static boolean isFile(Resource resource) {
107 return isEntity(resource);
108 }
109
110 /* QUALIFIERS */
111
112 /**
113 * @return whether a resource is a class
114 * @deprecated since 4.2 CLA qualifier is deprecated
115 */
116 @Deprecated
117 public static boolean isClass(Resource resource) {
118 return Qualifiers.CLASS.equals(resource.getQualifier());
119 }
120
121 /**
122 * @return whether a resource is a unit test class
123 */
124 public static boolean isUnitTestClass(Resource resource) {
125 return Qualifiers.UNIT_TEST_FILE.equals(resource.getQualifier());
126 }
127
128 /**
129 * @return whether a resource is a library
130 */
131 public static boolean isLibrary(Resource resource) {
132 return Qualifiers.LIBRARY.equals(resource.getQualifier());
133 }
134
135 /**
136 * @param resource not nullable
137 * @return true if this type of resource is persisted in database
138 * @since 2.6
139 */
140 public static boolean isPersistable(Resource resource) {
141 return StringUtils.equals(Scopes.PROJECT, resource.getScope()) || StringUtils.equals(Scopes.DIRECTORY, resource.getScope()) ||
142 StringUtils.equals(Scopes.FILE, resource.getScope());
143 }
144
145 }