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;
022
023
024
025 import java.util.Date;
026
027 import com.unboundid.ldap.sdk.Entry;
028 import com.unboundid.ldap.sdk.ReadOnlyEntry;
029 import com.unboundid.util.NotMutable;
030 import com.unboundid.util.ThreadSafety;
031 import com.unboundid.util.ThreadSafetyLevel;
032
033
034
035 /**
036 * <BLOCKQUOTE>
037 * <B>NOTE:</B> This class is part of the Commercial Edition of the UnboundID
038 * LDAP SDK for Java. It is not available for use in applications that
039 * include only the Standard Edition of the LDAP SDK, and is not supported for
040 * use in conjunction with non-UnboundID products.
041 * </BLOCKQUOTE>
042 * This class provides a data structure for representing an administrative entry
043 * as exposed by the alerts backend in the UnboundID Directory Server. Alert
044 * entries provide information about warnings, errors, or other significant
045 * events that could impact the availability or function of the UnboundID
046 * Directory Server.
047 */
048 @NotMutable()
049 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
050 public final class AlertEntry
051 extends ReadOnlyEntry
052 {
053 /**
054 * The name of the structural object class that will be used for entries
055 * containing information about administrative alerts.
056 */
057 public static final String OC_ALERT = "ds-admin-alert";
058
059
060
061 /**
062 * The name of the attribute that contains the fully-qualified name of the
063 * server class that generated the alert notification.
064 */
065 public static final String ATTR_ALERT_GENERATOR = "ds-alert-generator";
066
067
068
069 /**
070 * The name of the attribute that contains the unique ID assigned to the alert
071 * notification.
072 */
073 public static final String ATTR_ALERT_ID = "ds-alert-id";
074
075
076
077 /**
078 * The name of the attribute that contains a message with additional
079 * information about the alert notification.
080 */
081 public static final String ATTR_ALERT_MESSAGE = "ds-alert-message";
082
083
084
085 /**
086 * The name of the attribute that contains the severity of the alert
087 * notification.
088 */
089 public static final String ATTR_ALERT_SEVERITY = "ds-alert-severity";
090
091
092
093 /**
094 * The name of the attribute that contains the time that the alert
095 * notification was generated.
096 */
097 public static final String ATTR_ALERT_TIME = "ds-alert-time";
098
099
100
101 /**
102 * The name of the attribute that contains the name of the alert type.
103 */
104 public static final String ATTR_ALERT_TYPE = "ds-alert-type";
105
106
107
108 /**
109 * The name of the attribute that contains the OID assigned to the alert type.
110 */
111 public static final String ATTR_ALERT_TYPE_OID = "ds-alert-type-oid";
112
113
114
115 /**
116 * The serial version UID for this serializable class.
117 */
118 private static final long serialVersionUID = -2912778595612338699L;
119
120
121
122 // The severity for this alert entry.
123 private final AlertSeverity alertSeverity;
124
125 // The time that the alert notification was generated.
126 private final Date alertTime;
127
128 // The fully-qualified name of the alert generator class.
129 private final String alertGeneratorClass;
130
131 // The unique identifier assigned to the alert notification.
132 private final String alertID;
133
134 // The message for the alert notification.
135 private final String alertMessage;
136
137 // The name of the alert type for the alert notification.
138 private final String alertType;
139
140 // The OID for the alert type.
141 private final String alertTypeOID;
142
143
144
145 /**
146 * Creates a new alert entry from the provided entry.
147 *
148 * @param entry The entry from which to create this alert entry.
149 */
150 public AlertEntry(final Entry entry)
151 {
152 super(entry);
153
154 alertGeneratorClass = entry.getAttributeValue(ATTR_ALERT_GENERATOR);
155 alertID = entry.getAttributeValue(ATTR_ALERT_ID);
156 alertMessage = entry.getAttributeValue(ATTR_ALERT_MESSAGE);
157 alertType = entry.getAttributeValue(ATTR_ALERT_TYPE);
158 alertTypeOID = entry.getAttributeValue(ATTR_ALERT_TYPE_OID);
159
160 alertTime = entry.getAttributeValueAsDate(ATTR_ALERT_TIME);
161
162 final String severityStr = entry.getAttributeValue(ATTR_ALERT_SEVERITY);
163 if (severityStr == null)
164 {
165 alertSeverity = null;
166 }
167 else
168 {
169 alertSeverity = AlertSeverity.forName(severityStr);
170 }
171 }
172
173
174
175 /**
176 * Retrieves the fully-qualified name of the class that generated the alert
177 * notification.
178 *
179 * @return The fully-qualified name of the class that generated the alert
180 * notification, or {@code null} if it was not included in the alert
181 * entry.
182 */
183 public String getAlertGeneratorClass()
184 {
185 return alertGeneratorClass;
186 }
187
188
189
190 /**
191 * Retrieves the unique identifier for the alert notification.
192 *
193 * @return The unique identifier for the alert notification, or {@code null}
194 * if it was not included in the alert entry.
195 */
196 public String getAlertID()
197 {
198 return alertID;
199 }
200
201
202
203 /**
204 * Retrieves the message for the alert notification.
205 *
206 * @return The message for the alert notification, or {@code null} if it was
207 * not included in the alert entry.
208 */
209 public String getAlertMessage()
210 {
211 return alertMessage;
212 }
213
214
215
216 /**
217 * Retrieves the severity for the alert notification.
218 *
219 * @return The severity for the alert notification, or {@code null} if it was
220 * not included in the alert entry, or if it included an unknown
221 * severity.
222 */
223 public AlertSeverity getAlertSeverity()
224 {
225 return alertSeverity;
226 }
227
228
229
230 /**
231 * Retrieves the time that the alert notification was generated.
232 *
233 * @return The time that the alert notification was generated, or
234 * {@code null} if it was not included in the alert entry or if the
235 * alert time value could not be parsed.
236 */
237 public Date getAlertTime()
238 {
239 return alertTime;
240 }
241
242
243
244 /**
245 * Retrieves the name of the alert type for the alert notification.
246 *
247 * @return The name of the alert type for the alert notification, or
248 * {@code null} if it was not included in the alert entry.
249 */
250 public String getAlertType()
251 {
252 return alertType;
253 }
254
255
256
257 /**
258 * Retrieves the OID of the alert type for the alert notification.
259 *
260 * @return The OID of the alert type for the alert notification, or
261 * {@code null} if it was not included in the alert entry.
262 */
263 public String getAlertTypeOID()
264 {
265 return alertTypeOID;
266 }
267 }