001 /*
002 * Copyright 2009-2015 UnboundID Corp.
003 * All Rights Reserved.
004 */
005 /*
006 * Copyright (C) 2015 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.ldap.sdk.unboundidds.monitors;
022
023
024
025 import com.unboundid.util.StaticUtils;
026 import com.unboundid.util.ThreadSafety;
027 import com.unboundid.util.ThreadSafetyLevel;
028
029
030
031 /**
032 * <BLOCKQUOTE>
033 * <B>NOTE:</B> This class is part of the Commercial Edition of the UnboundID
034 * LDAP SDK for Java. It is not available for use in applications that
035 * include only the Standard Edition of the LDAP SDK, and is not supported for
036 * use in conjunction with non-UnboundID products.
037 * </BLOCKQUOTE>
038 * This class provides information about the health check states that may be
039 * held by an LDAP external server.
040 */
041 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
042 public enum HealthCheckState
043 {
044 /**
045 * The health check state that indicates that the associated LDAP external
046 * server is available.
047 */
048 AVAILABLE("available"),
049
050
051
052 /**
053 * The health check state that indicates that the associated LDAP external
054 * server is in a degraded state.
055 */
056 DEGRADED("degraded"),
057
058
059
060 /**
061 * The health check state that indicates that the associated LDAP external
062 * server is unavailable.
063 */
064 UNAVAILABLE("unavailable"),
065
066
067
068 /**
069 * The health check state that indicates that there are no local servers
070 * defined, and therefore no health information is available for local
071 * servers.
072 */
073 NO_LOCAL_SERVERS("no-local-servers"),
074
075
076
077 /**
078 * The health check state that indicates that there are no local servers
079 * defined, and therefore no health information is available for remote
080 * servers.
081 */
082 NO_REMOTE_SERVERS("no-remote-servers");
083
084
085
086 // The name for this health check state.
087 private final String name;
088
089
090
091 /**
092 * Creates a new health check state with the specified name.
093 *
094 * @param name The name for this health check state.
095 */
096 private HealthCheckState(final String name)
097 {
098 this.name = name;
099 }
100
101
102
103 /**
104 * Retrieves the name for this health check state.
105 *
106 * @return The name for this health check state.
107 */
108 public String getName()
109 {
110 return name;
111 }
112
113
114
115 /**
116 * Retrieves the health check state with the specified name.
117 *
118 * @param name The name of the health check state to retrieve.
119 *
120 * @return The health check state with the specified name, or {@code null} if
121 * there is no health check state with the given name.
122 */
123 public static HealthCheckState forName(final String name)
124 {
125 final String lowerName = StaticUtils.toLowerCase(name);
126
127 if (lowerName.equals("available"))
128 {
129 return AVAILABLE;
130 }
131 else if (lowerName.equals("degraded"))
132 {
133 return DEGRADED;
134 }
135 else if (lowerName.equals("unavailable"))
136 {
137 return UNAVAILABLE;
138 }
139 else if (lowerName.equals("no-local-servers") ||
140 lowerName.equals("no_local_servers"))
141 {
142 return NO_LOCAL_SERVERS;
143 }
144 else if (lowerName.equals("no-remote-servers") ||
145 lowerName.equals("no_remote_servers"))
146 {
147 return NO_REMOTE_SERVERS;
148 }
149 else
150 {
151 return null;
152 }
153 }
154
155
156
157 /**
158 * Retrieves a string representation of this health check state.
159 *
160 * @return A string representation of this health check state.
161 */
162 @Override()
163 public String toString()
164 {
165 return name;
166 }
167 }