001 package org.bukkit.permissions; 002 003 import java.util.HashMap; 004 import java.util.Map; 005 006 /** 007 * Represents the possible default values for permissions 008 */ 009 public enum PermissionDefault { 010 TRUE("true"), 011 FALSE("false"), 012 OP("op", "isop", "operator", "isoperator", "admin", "isadmin"), 013 NOT_OP("!op", "notop", "!operator", "notoperator", "!admin", "notadmin"); 014 015 private final String[] names; 016 private final static Map<String, PermissionDefault> lookup = new HashMap<String, PermissionDefault>(); 017 018 private PermissionDefault(String... names) { 019 this.names = names; 020 } 021 022 /** 023 * Calculates the value of this PermissionDefault for the given operator 024 * value 025 * 026 * @param op If the target is op 027 * @return True if the default should be true, or false 028 */ 029 public boolean getValue(boolean op) { 030 switch (this) { 031 case TRUE: 032 return true; 033 case FALSE: 034 return false; 035 case OP: 036 return op; 037 case NOT_OP: 038 return !op; 039 default: 040 return false; 041 } 042 } 043 044 /** 045 * Looks up a PermissionDefault by name 046 * 047 * @param name Name of the default 048 * @return Specified value, or null if not found 049 */ 050 public static PermissionDefault getByName(String name) { 051 return lookup.get(name.toLowerCase().replaceAll("[^a-z!]", "")); 052 } 053 054 @Override 055 public String toString() { 056 return names[0]; 057 } 058 059 static { 060 for (PermissionDefault value : values()) { 061 for (String name : value.names) { 062 lookup.put(name, value); 063 } 064 } 065 } 066 }