001 /*
002 * Copyright 2008-2014 UnboundID Corp.
003 * All Rights Reserved.
004 */
005 /*
006 * Copyright (C) 2008-2014 UnboundID Corp.
007 *
008 * This program is free software; you can redistribute it and/or modify
009 * it under the terms of the GNU General Public License (GPLv2 only)
010 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only)
011 * as published by the Free Software Foundation.
012 *
013 * This program is distributed in the hope that it will be useful,
014 * but WITHOUT ANY WARRANTY; without even the implied warranty of
015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016 * GNU General Public License for more details.
017 *
018 * You should have received a copy of the GNU General Public License
019 * along with this program; if not, see <http://www.gnu.org/licenses>.
020 */
021 package com.unboundid.util;
022
023
024
025 import static com.unboundid.util.StaticUtils.*;
026
027
028
029 /**
030 * This enumeration defines a set of debugging types that are used by the LDAP
031 * SDK.
032 */
033 public enum DebugType
034 {
035 /**
036 * The debug type that will be used for debugging information about ASN.1
037 * elements written to or read from a directory server.
038 */
039 ASN1("asn1"),
040
041
042
043 /**
044 * The debug type that will be used for debugging information about
045 * connection establishment and termination.
046 */
047 CONNECT("connect"),
048
049
050
051 /**
052 * The debug type that will be used for debugging information about
053 * exceptions that are caught.
054 */
055 EXCEPTION("exception"),
056
057
058
059 /**
060 * The debug type that will be used for debugging information about LDAP
061 * requests sent to or received from a directory server.
062 */
063 LDAP("ldap"),
064
065
066
067 /**
068 * The debug type that will be used for debugging information about LDIF
069 * entries or change records read or written.
070 */
071 LDIF("ldif"),
072
073
074
075 /**
076 * The debug type that will be used for information about monitor entry
077 * parsing.
078 */
079 MONITOR("monitor"),
080
081
082
083 /**
084 * The debug type that will be used for information about coding errors or
085 * other types of incorrect uses of the LDAP SDK.
086 */
087 CODING_ERROR("coding-error"),
088
089
090
091 /**
092 * The debug type that will be used for debug messages not applicable to any
093 * of the other categories.
094 */
095 OTHER("other");
096
097
098
099 // The name for this debug type.
100 private final String name;
101
102
103
104 /**
105 * Creates a new debug type with the specified name.
106 *
107 * @param name The name for this debug type. It should be in all lowercase
108 * characters.
109 */
110 private DebugType(final String name)
111 {
112 this.name = name;
113 }
114
115
116
117 /**
118 * Retrieves the name for this debug type.
119 *
120 * @return The name for this debug type.
121 */
122 public String getName()
123 {
124 return name;
125 }
126
127
128
129 /**
130 * Retrieves the debug type with the specified name.
131 *
132 * @param name The name of the debug type to retrieve.
133 *
134 * @return The requested debug type, or {@code null} if there is no such
135 * debug type.
136 */
137 public static DebugType forName(final String name)
138 {
139 final String lowerName = toLowerCase(name);
140
141 if (lowerName.equals("asn1"))
142 {
143 return ASN1;
144 }
145 else if (lowerName.equals("connect"))
146 {
147 return CONNECT;
148 }
149 else if (lowerName.equals("exception"))
150 {
151 return EXCEPTION;
152 }
153 else if (lowerName.equals("ldap"))
154 {
155 return LDAP;
156 }
157 else if (lowerName.equals("ldif"))
158 {
159 return LDIF;
160 }
161 else if (lowerName.equals("monitor"))
162 {
163 return MONITOR;
164 }
165 else if (lowerName.equals("coding-error"))
166 {
167 return CODING_ERROR;
168 }
169 else if (lowerName.equals("other"))
170 {
171 return OTHER;
172 }
173
174 return null;
175 }
176
177
178
179 /**
180 * Retrieves a comma-delimited list of the defined debug type names.
181 *
182 * @return A comma-delimited list of the defined debug type names.
183 */
184 public static String getTypeNameList()
185 {
186 final StringBuilder buffer = new StringBuilder();
187
188 final DebugType[] types = DebugType.values();
189 for (int i=0; i < types.length; i++)
190 {
191 if (i > 0)
192 {
193 buffer.append(", ");
194 }
195
196 buffer.append(types[i].getName());
197 }
198
199 return buffer.toString();
200 }
201
202
203
204 /**
205 * Retrieves a string representation of this debug type.
206 *
207 * @return A string representation of this debug type.
208 */
209 @Override()
210 public String toString()
211 {
212 return name;
213 }
214 }