1 /////////////////////////////////////////////////////////////////////////////////////////////// 2 // checkstyle: Checks Java source code and other text files for adherence to a set of rules. 3 // Copyright (C) 2001-2024 the original author or authors. 4 // 5 // This library is free software; you can redistribute it and/or 6 // modify it under the terms of the GNU Lesser General Public 7 // License as published by the Free Software Foundation; either 8 // version 2.1 of the License, or (at your option) any later version. 9 // 10 // This library is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 // Lesser General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public 16 // License along with this library; if not, write to the Free Software 17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 /////////////////////////////////////////////////////////////////////////////////////////////// 19 20 package com.puppycrawl.tools.checkstyle.api; 21 22 import java.util.Locale; 23 24 /** 25 * Represents a Java visibility scope. 26 * 27 */ 28 public enum Scope { 29 30 /** Nothing scope. */ 31 NOTHING, 32 /** Public scope. */ 33 PUBLIC, 34 /** Protected scope. */ 35 PROTECTED, 36 /** Package or default scope. */ 37 PACKAGE, 38 /** Private scope. */ 39 PRIVATE, 40 /** Anonymous inner scope. */ 41 ANONINNER; 42 43 @Override 44 public String toString() { 45 return getName(); 46 } 47 48 /** 49 * Returns name of severity level. 50 * 51 * @return the name of this severity level. 52 */ 53 public String getName() { 54 return name().toLowerCase(Locale.ENGLISH); 55 } 56 57 /** 58 * Checks if this scope is a subscope of another scope. 59 * Example: PUBLIC is a subscope of PRIVATE. 60 * 61 * @param scope a {@code Scope} value 62 * @return if {@code this} is a subscope of {@code scope}. 63 */ 64 public boolean isIn(Scope scope) { 65 return compareTo(scope) <= 0; 66 } 67 68 /** 69 * Scope factory method. 70 * 71 * @param scopeName scope name, such as "nothing", "public", etc. 72 * @return the {@code Scope} associated with {@code scopeName} 73 */ 74 public static Scope getInstance(String scopeName) { 75 return valueOf(Scope.class, scopeName.trim().toUpperCase(Locale.ENGLISH)); 76 } 77 78 }