001 /*
002 * Sonar, open source software quality management tool.
003 * Copyright (C) 2009 SonarSource SA
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.api.resources;
021
022 /**
023 * @since 1.10
024 */
025 public interface Resource<PARENT extends Resource<?>> {
026
027 String SCOPE_SET = "PRJ";
028 String SCOPE_SPACE = "DIR";
029 String SCOPE_ENTITY = "FIL";
030
031 /**
032 * Use SCOPE_SET instead
033 */
034 @Deprecated
035 String SCOPE_PROJECT = SCOPE_SET;
036
037 /**
038 * Use SCOPE_SPACE instead
039 */
040 @Deprecated
041 String SCOPE_DIRECTORY = SCOPE_SPACE;
042
043 /**
044 * Use SCOPE_ENTITY instead
045 */
046 @Deprecated
047 String SCOPE_FILE = SCOPE_ENTITY;
048
049
050 String QUALIFIER_VIEW = "VW";
051 String QUALIFIER_SUBVIEW = "SVW";
052 String QUALIFIER_PROJECT = "TRK";
053 String QUALIFIER_MODULE = "BRC";
054 String QUALIFIER_PACKAGE = "PAC";
055 String QUALIFIER_DIRECTORY = "DIR";
056 String QUALIFIER_FILE = "FIL";
057 String QUALIFIER_CLASS = "CLA";
058 String QUALIFIER_UNIT_TEST_CLASS = "UTS";
059
060 /**
061 * Use QUALIFIER_PROJECT instead
062 */
063 @Deprecated
064 String QUALIFIER_PROJECT_TRUNK = QUALIFIER_PROJECT;
065
066 /**
067 * Use QUALIFIER_MODULE instead
068 */
069 @Deprecated
070 String QUALIFIER_PROJECT_BRANCH = QUALIFIER_MODULE;
071
072 String getKey();
073
074 String getName();
075
076 String getDescription();
077
078 Language getLanguage();
079
080 String getScope();
081
082 String getQualifier();
083
084 /**
085 * The parent is used to build the resources tree, for example for relations between classes, packages and projects.
086 * <p>Return null if the parent is the project.</p>
087 */
088 PARENT getParent();
089
090 /**
091 * Check resource against an Ant pattern, like mypackag?/*Foo.java. It's used for example
092 * to match resource exclusions.
093 *
094 * @param antPattern Ant-like pattern (with **, * and ?). It includes file suffixes.
095 * @return true if the resource matches the Ant pattern
096 */
097 boolean matchFilePattern(String antPattern);
098 }