001/* 002 * Copyright 2011-2016 UnboundID Corp. 003 * 004 * This program is free software; you can redistribute it and/or modify 005 * it under the terms of the GNU General Public License (GPLv2 only) 006 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only) 007 * as published by the Free Software Foundation. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program; if not, see <http://www.gnu.org/licenses>. 016 */ 017 018package com.unboundid.scim.sdk; 019 020import static com.unboundid.scim.sdk.StaticUtils.*; 021 022 023 024/** 025 * This enumeration defines a set of debugging types that are used by the SCIM 026 * SDK. 027 */ 028public enum DebugType 029{ 030 /** 031 * The debug type that will be used for debugging information about 032 * exceptions that are caught. 033 */ 034 EXCEPTION("exception"), 035 036 037 038 /** 039 * The debug type that will be used for information about coding errors or 040 * other types of incorrect uses of the SCIM SDK. 041 */ 042 CODING_ERROR("coding-error"), 043 044 045 046 /** 047 * The debug type that will be used for debug messages not applicable to any 048 * of the other categories. 049 */ 050 OTHER("other"); 051 052 053 054 // The name for this debug type. 055 private final String name; 056 057 058 059 /** 060 * Creates a new debug type with the specified name. 061 * 062 * @param name The name for this debug type. It should be in all lowercase 063 * characters. 064 */ 065 private DebugType(final String name) 066 { 067 this.name = name; 068 } 069 070 071 072 /** 073 * Retrieves the name for this debug type. 074 * 075 * @return The name for this debug type. 076 */ 077 public String getName() 078 { 079 return name; 080 } 081 082 083 084 /** 085 * Retrieves the debug type with the specified name. 086 * 087 * @param name The name of the debug type to retrieve. 088 * 089 * @return The requested debug type, or {@code null} if there is no such 090 * debug type. 091 */ 092 public static DebugType forName(final String name) 093 { 094 final String lowerName = toLowerCase(name); 095 096 if (lowerName.equals("exception")) 097 { 098 return EXCEPTION; 099 } 100 else if (lowerName.equals("coding-error")) 101 { 102 return CODING_ERROR; 103 } 104 else if (lowerName.equals("other")) 105 { 106 return OTHER; 107 } 108 109 return null; 110 } 111 112 113 114 /** 115 * Retrieves a comma-delimited list of the defined debug type names. 116 * 117 * @return A comma-delimited list of the defined debug type names. 118 */ 119 public static String getTypeNameList() 120 { 121 final StringBuilder buffer = new StringBuilder(); 122 123 final DebugType[] types = DebugType.values(); 124 for (int i=0; i < types.length; i++) 125 { 126 if (i > 0) 127 { 128 buffer.append(", "); 129 } 130 131 buffer.append(types[i].getName()); 132 } 133 134 return buffer.toString(); 135 } 136 137 138 139 /** 140 * Retrieves a string representation of this debug type. 141 * 142 * @return A string representation of this debug type. 143 */ 144 @Override() 145 public String toString() 146 { 147 return name; 148 } 149}