001 /*
002 * Copyright 2014-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 alarms backend in the UnboundID Directory Server. Alarm
044 * entries provide information about potential ongoing or resolved conditions
045 * within the server.
046 */
047 @NotMutable()
048 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
049 public final class AlarmEntry
050 extends ReadOnlyEntry
051 {
052 /**
053 * The serial version UID for this serializable class.
054 */
055 private static final long serialVersionUID = -2481622467368820030L;
056
057
058
059 // The current severity for this alarm entry.
060 private final AlarmSeverity currentSeverity;
061
062 // The previous severity for this alarm entry.
063 private final AlarmSeverity previousSeverity;
064
065 // The last time the alarm severity was set to critical.
066 private final Date lastCriticalTime;
067
068 // The last time the alarm severity was set to indeterminate.
069 private final Date lastIndeterminateTime;
070
071 // The last time the alarm severity was set to major.
072 private final Date lastMajorTime;
073
074 // The last time the alarm severity was set to minor.
075 private final Date lastMinorTime;
076
077 // The last time the alarm severity was set to normal.
078 private final Date lastNormalTime;
079
080 // The last time the alarm severity was set to warning.
081 private final Date lastWarningTime;
082
083 // The start time for this alarm entry.
084 private final Date startTime;
085
086 // The X.733 event type for the alarm.
087 private final Integer eventType;
088
089 // The X.733 probable cause for the alarm.
090 private final Integer probableCause;
091
092 // The total length of time in milliseconds spent at the critical severity.
093 private final Long totalDurationCriticalMillis;
094
095 // The total length of time in milliseconds spent at the indeterminate
096 // severity.
097 private final Long totalDurationIndeterminateMillis;
098
099 // The total length of time in milliseconds spent at the major severity.
100 private final Long totalDurationMajorMillis;
101
102 // The total length of time in milliseconds spent at the minor severity.
103 private final Long totalDurationMinorMillis;
104
105 // The total length of time in milliseconds spent at the normal severity.
106 private final Long totalDurationNormalMillis;
107
108 // The total length of time in milliseconds spent at the warning severity.
109 private final Long totalDurationWarningMillis;
110
111 // The additional text for this alarm entry.
112 private final String additionalText;
113
114 // The condition for this alarm entry.
115 private final String condition;
116
117 // The details for this alarm entry.
118 private final String details;
119
120 // The identifier for this alarm entry.
121 private final String id;
122
123 // The specific resource for this alarm entry.
124 private final String specificResource;
125
126 // The specific resource type for this alarm entry.
127 private final String specificResourceType;
128
129
130
131 /**
132 * Creates a new alarm entry from the provided entry.
133 *
134 * @param entry The entry to use to create this alarm entry.
135 */
136 public AlarmEntry(final Entry entry)
137 {
138 super(entry);
139
140 id = entry.getAttributeValue("ds-alarm-id");
141 condition = entry.getAttributeValue("ds-alarm-condition");
142 startTime = entry.getAttributeValueAsDate("ds-alarm-start-time");
143 specificResource = entry.getAttributeValue("ds-alarm-specific-resource");
144 specificResourceType =
145 entry.getAttributeValue("ds-alarm-specific-resource-type");
146 details = entry.getAttributeValue("ds-alarm-details");
147 additionalText = entry.getAttributeValue("ds-alarm-additional-text");
148 lastNormalTime = entry.getAttributeValueAsDate("ds-alarm-normal-last-time");
149 lastWarningTime =
150 entry.getAttributeValueAsDate("ds-alarm-warning-last-time");
151 lastMinorTime = entry.getAttributeValueAsDate("ds-alarm-minor-last-time");
152 lastMajorTime = entry.getAttributeValueAsDate("ds-alarm-major-last-time");
153 lastCriticalTime =
154 entry.getAttributeValueAsDate("ds-alarm-critical-last-time");
155 lastIndeterminateTime =
156 entry.getAttributeValueAsDate("ds-alarm-indeterminate-last-time");
157 totalDurationNormalMillis =
158 entry.getAttributeValueAsLong("ds-alarm-normal-total-duration-millis");
159 totalDurationWarningMillis = entry.getAttributeValueAsLong(
160 "ds-alarm-warning-total-duration-millis");
161 totalDurationMinorMillis =
162 entry.getAttributeValueAsLong("ds-alarm-minor-total-duration-millis");
163 totalDurationMajorMillis =
164 entry.getAttributeValueAsLong("ds-alarm-major-total-duration-millis");
165 totalDurationCriticalMillis = entry.getAttributeValueAsLong(
166 "ds-alarm-critical-total-duration-millis");
167 totalDurationIndeterminateMillis = entry.getAttributeValueAsLong(
168 "ds-alarm-indeterminate-total-duration-millis");
169 eventType = entry.getAttributeValueAsInteger("ds-alarm-event-type");
170 probableCause = entry.getAttributeValueAsInteger("ds-alarm-probable-cause");
171
172 final String currentSeverityStr =
173 entry.getAttributeValue("ds-alarm-severity");
174 if (currentSeverityStr == null)
175 {
176 currentSeverity = null;
177 }
178 else
179 {
180 currentSeverity = AlarmSeverity.forName(currentSeverityStr);
181 }
182
183 final String previousSeverityStr =
184 entry.getAttributeValue("ds-alarm-previous-severity");
185 if (previousSeverityStr == null)
186 {
187 previousSeverity = null;
188 }
189 else
190 {
191 previousSeverity = AlarmSeverity.forName(previousSeverityStr);
192 }
193 }
194
195
196
197 /**
198 * Retrieves the identifier for the alarm.
199 *
200 * @return The identifier for the alarm, or {@code null} if it was not
201 * included in the alarm entry.
202 */
203 public String getAlarmID()
204 {
205 return id;
206 }
207
208
209
210 /**
211 * Retrieves the condition for the alarm.
212 *
213 * @return The condition for the alarm, or {@code null} if it was not
214 * included in the alarm entry.
215 */
216 public String getAlarmCondition()
217 {
218 return condition;
219 }
220
221
222
223 /**
224 * Retrieves the current severity for the alarm.
225 *
226 * @return The current severity for the alarm, or {@code null} if it was not
227 * included in the alarm entry.
228 */
229 public AlarmSeverity getCurrentAlarmSeverity()
230 {
231 return currentSeverity;
232 }
233
234
235
236 /**
237 * Retrieves the previous severity for the alarm.
238 *
239 * @return The previous severity for the alarm, or {@code null} if it was not
240 * included in the alarm entry.
241 */
242 public AlarmSeverity getPreviousAlarmSeverity()
243 {
244 return previousSeverity;
245 }
246
247
248
249 /**
250 * Retrieves the start time for the alarm.
251 *
252 * @return The start time for the alarm, or {@code null} if it was not
253 * included in the alarm entry.
254 */
255 public Date getAlarmStartTime()
256 {
257 return startTime;
258 }
259
260
261
262 /**
263 * Retrieves the specific resource for the alarm, if any.
264 *
265 * @return The specific resource for the alarm, or {@code null} if it was not
266 * included in the alarm entry.
267 */
268 public String getAlarmSpecificResource()
269 {
270 return specificResource;
271 }
272
273
274
275 /**
276 * Retrieves the specific resource type for the alarm, if any.
277 *
278 * @return The specific resource type for the alarm, or {@code null} if it
279 * was not included in the alarm entry.
280 */
281 public String getAlarmSpecificResourceType()
282 {
283 return specificResourceType;
284 }
285
286
287
288 /**
289 * Retrieves the details message for the alarm, if any.
290 *
291 * @return The details message for the alarm, or {@code null} if it was not
292 * included in the alarm entry.
293 */
294 public String getAlarmDetails()
295 {
296 return details;
297 }
298
299
300
301 /**
302 * Retrieves the additional text for the alarm, if any.
303 *
304 * @return The additional text for the alarm, or {@code null} if it was not
305 * included in the alarm entry.
306 */
307 public String getAlarmAdditionalText()
308 {
309 return additionalText;
310 }
311
312
313
314 /**
315 * Retrieves the time that the alarm last transitioned to a normal severity,
316 * if available.
317 *
318 * @return The time that the alarm last transitioned to a normal severity, or
319 * {@code null} if it was not included in the alarm entry.
320 */
321 public Date getAlarmLastNormalTime()
322 {
323 return lastNormalTime;
324 }
325
326
327
328 /**
329 * Retrieves the time that the alarm last transitioned to a warning severity,
330 * if available.
331 *
332 * @return The time that the alarm last transitioned to a warning severity,
333 * or {@code null} if it was not included in the alarm entry.
334 */
335 public Date getAlarmLastWarningTime()
336 {
337 return lastWarningTime;
338 }
339
340
341
342 /**
343 * Retrieves the time that the alarm last transitioned to a minor severity,
344 * if available.
345 *
346 * @return The time that the alarm last transitioned to a minor severity, or
347 * {@code null} if it was not included in the alarm entry.
348 */
349 public Date getAlarmLastMinorTime()
350 {
351 return lastMinorTime;
352 }
353
354
355
356 /**
357 * Retrieves the time that the alarm last transitioned to a major severity,
358 * if available.
359 *
360 * @return The time that the alarm last transitioned to a major severity, or
361 * {@code null} if it was not included in the alarm entry.
362 */
363 public Date getAlarmLastMajorTime()
364 {
365 return lastMajorTime;
366 }
367
368
369
370 /**
371 * Retrieves the time that the alarm last transitioned to a critical severity,
372 * if available.
373 *
374 * @return The time that the alarm last transitioned to a critical severity,
375 * or {@code null} if it was not included in the alarm entry.
376 */
377 public Date getAlarmLastCriticalTime()
378 {
379 return lastCriticalTime;
380 }
381
382
383
384 /**
385 * Retrieves the time that the alarm last transitioned to an indeterminate
386 * severity, if available.
387 *
388 * @return The time that the alarm last transitioned to an indeterminate
389 * severity, or {@code null} if it was not included in the alarm
390 * entry.
391 */
392 public Date getAlarmLastIndeterminateTime()
393 {
394 return lastIndeterminateTime;
395 }
396
397
398
399 /**
400 * Retrieves the length of time in milliseconds the alarm has spent at the
401 * normal severity, if available.
402 *
403 * @return The length of time in milliseconds the alarm has spent at the
404 * normal severity, or {@code null} if it was not included in the
405 * alarm entry.
406 */
407 public Long getAlarmTotalDurationNormalMillis()
408 {
409 return totalDurationNormalMillis;
410 }
411
412
413
414 /**
415 * Retrieves the length of time in milliseconds the alarm has spent at the
416 * warning severity, if available.
417 *
418 * @return The length of time in milliseconds the alarm has spent at the
419 * warning severity, or {@code null} if it was not included in the
420 * alarm entry.
421 */
422 public Long getAlarmTotalDurationWarningMillis()
423 {
424 return totalDurationWarningMillis;
425 }
426
427
428
429 /**
430 * Retrieves the length of time in milliseconds the alarm has spent at the
431 * minor severity, if available.
432 *
433 * @return The length of time in milliseconds the alarm has spent at the
434 * minor severity, or {@code null} if it was not included in the
435 * alarm entry.
436 */
437 public Long getAlarmTotalDurationMinorMillis()
438 {
439 return totalDurationMinorMillis;
440 }
441
442
443
444 /**
445 * Retrieves the length of time in milliseconds the alarm has spent at the
446 * major severity, if available.
447 *
448 * @return The length of time in milliseconds the alarm has spent at the
449 * major severity, or {@code null} if it was not included in the
450 * alarm entry.
451 */
452 public Long getAlarmTotalDurationMajorMillis()
453 {
454 return totalDurationMajorMillis;
455 }
456
457
458
459 /**
460 * Retrieves the length of time in milliseconds the alarm has spent at the
461 * critical severity, if available.
462 *
463 * @return The length of time in milliseconds the alarm has spent at the
464 * critical severity, or {@code null} if it was not included in the
465 * alarm entry.
466 */
467 public Long getAlarmTotalDurationCriticalMillis()
468 {
469 return totalDurationCriticalMillis;
470 }
471
472
473
474 /**
475 * Retrieves the length of time in milliseconds the alarm has spent at the
476 * indeterminate severity, if available.
477 *
478 * @return The length of time in milliseconds the alarm has spent at the
479 * indeterminate severity, or {@code null} if it was not included in
480 * the alarm entry.
481 */
482 public Long getAlarmTotalDurationIndeterminateMillis()
483 {
484 return totalDurationIndeterminateMillis;
485 }
486
487
488
489 /**
490 * Retrieves the X.733 event type for the alarm, if available.
491 *
492 * @return The X.733 event type for the alarm, or {@code null} if it was not
493 * included in the alarm entry.
494 */
495 public Integer getAlarmEventType()
496 {
497 return eventType;
498 }
499
500
501
502 /**
503 * Retrieves the X.733 probable cause for the alarm, if available.
504 *
505 * @return The X.733 probable cause for the alarm, or {@code null} if it was
506 * not included in the alarm entry.
507 */
508 public Integer getAlarmProbableCause()
509 {
510 return probableCause;
511 }
512 }