001    /*
002     * Copyright 2008-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 java.util.Collections;
026    import java.util.LinkedHashMap;
027    import java.util.Map;
028    
029    import com.unboundid.ldap.sdk.Entry;
030    import com.unboundid.util.NotMutable;
031    import com.unboundid.util.ThreadSafety;
032    import com.unboundid.util.ThreadSafetyLevel;
033    
034    import static com.unboundid.ldap.sdk.unboundidds.monitors.MonitorMessages.*;
035    
036    
037    
038    /**
039     * <BLOCKQUOTE>
040     *   <B>NOTE:</B>  This class is part of the Commercial Edition of the UnboundID
041     *   LDAP SDK for Java.  It is not available for use in applications that
042     *   include only the Standard Edition of the LDAP SDK, and is not supported for
043     *   use in conjunction with non-UnboundID products.
044     * </BLOCKQUOTE>
045     * This class defines a monitor entry that provides information about the types
046     * of LDAP operations processed through an LDAP connection handler.  Information
047     * available through this monitor entry includes:
048     * <UL>
049     *   <LI>The total number of requests for each type of operation received by the
050     *       connection handler.</LI>
051     *   <LI>The total number of responses of each type of operation returned by the
052     *       connection handler.</LI>
053     *   <LI>The total number of search result entries returned by the connection
054     *       handler.</LI>
055     *   <LI>The total number of search result references returned by the connection
056     *       handler.</LI>
057     *   <LI>The total number of LDAP messages read from clients.</LI>
058     *   <LI>The total number of LDAP messages written to clients.</LI>
059     *   <LI>The total number of request bytes read from clients.</LI>
060     *   <LI>The total number of response bytes written to clients.</LI>
061     *   <LI>The number of connections accepted by the connection handler.</LI>
062     *   <LI>The number of connections closed by the connection handler.</LI>
063     *   <LI>The number of operations initiated by the connection handler.</LI>
064     *   <LI>The number of operations completed by the connection handler.</LI>
065     *   <LI>The number of operations abandoned by the connection handler.</LI>
066     * </UL>
067     * The LDAP statistics monitor entries provided by the server can be retrieved
068     * using the {@link MonitorManager#getLDAPStatisticsMonitorEntries} method.
069     * These entries provide specific methods for accessing information about the
070     * LDAP connection handler (e.g., the
071     * {@link LDAPStatisticsMonitorEntry#getAbandonRequests} method can be used to
072     * retrieve the number of abandon requests received).  Alternately, this
073     * information may be accessed using the generic API.  See the
074     * {@link MonitorManager} class documentation for an example that demonstrates
075     * the use of the generic API for accessing monitor data.
076     */
077    @NotMutable()
078    @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE)
079    public final class LDAPStatisticsMonitorEntry
080           extends MonitorEntry
081    {
082      /**
083       * The structural object class used in LDAP statistics monitor entries.
084       */
085      static final String LDAP_STATISTICS_MONITOR_OC =
086           "ds-ldap-statistics-monitor-entry";
087    
088    
089    
090      /**
091       * The name of the attribute that contains the number of abandon requests.
092       */
093      private static final String ATTR_ABANDON_REQUESTS = "abandonRequests";
094    
095    
096    
097      /**
098       * The name of the attribute that contains the number of add requests.
099       */
100      private static final String ATTR_ADD_REQUESTS = "addRequests";
101    
102    
103    
104      /**
105       * The name of the attribute that contains the number of add responses.
106       */
107      private static final String ATTR_ADD_RESPONSES = "addResponses";
108    
109    
110    
111      /**
112       * The name of the attribute that contains the number of bind requests.
113       */
114      private static final String ATTR_BIND_REQUESTS = "bindRequests";
115    
116    
117    
118      /**
119       * The name of the attribute that contains the number of bind responses.
120       */
121      private static final String ATTR_BIND_RESPONSES = "bindResponses";
122    
123    
124    
125      /**
126       * The name of the attribute that contains the number of bytes read.
127       */
128      private static final String ATTR_BYTES_READ = "bytesRead";
129    
130    
131    
132      /**
133       * The name of the attribute that contains the number of bytes written.
134       */
135      private static final String ATTR_BYTES_WRITTEN = "bytesWritten";
136    
137    
138    
139      /**
140       * The name of the attribute that contains the number of compare requests.
141       */
142      private static final String ATTR_COMPARE_REQUESTS = "compareRequests";
143    
144    
145    
146      /**
147       * The name of the attribute that contains the number of compare responses.
148       */
149      private static final String ATTR_COMPARE_RESPONSES = "compareResponses";
150    
151    
152    
153      /**
154       * The name of the attribute that contains the number of connections
155       * closed.
156       */
157      private static final String ATTR_CONNECTIONS_CLOSED = "connectionsClosed";
158    
159    
160    
161      /**
162       * The name of the attribute that contains the number of connections
163       * established.
164       */
165      private static final String ATTR_CONNECTIONS_ESTABLISHED =
166           "connectionsEstablished";
167    
168    
169    
170      /**
171       * The name of the attribute that contains the number of delete requests.
172       */
173      private static final String ATTR_DELETE_REQUESTS = "deleteRequests";
174    
175    
176    
177      /**
178       * The name of the attribute that contains the number of delete responses.
179       */
180      private static final String ATTR_DELETE_RESPONSES = "deleteResponses";
181    
182    
183    
184      /**
185       * The name of the attribute that contains the number of extended requests.
186       */
187      private static final String ATTR_EXTENDED_REQUESTS = "extendedRequests";
188    
189    
190    
191      /**
192       * The name of the attribute that contains the number of extended responses.
193       */
194      private static final String ATTR_EXTENDED_RESPONSES = "extendedResponses";
195    
196    
197    
198      /**
199       * The name of the attribute that contains the number of LDAP messages read.
200       */
201      private static final String ATTR_LDAP_MESSAGES_READ = "ldapMessagesRead";
202    
203    
204    
205      /**
206       * The name of the attribute that contains the number of LDAP messages
207       * written.
208       */
209      private static final String ATTR_LDAP_MESSAGES_WRITTEN =
210           "ldapMessagesWritten";
211    
212    
213    
214      /**
215       * The name of the attribute that contains the number of modify requests.
216       */
217      private static final String ATTR_MODIFY_REQUESTS = "modifyRequests";
218    
219    
220    
221      /**
222       * The name of the attribute that contains the number of modify responses.
223       */
224      private static final String ATTR_MODIFY_RESPONSES = "modifyResponses";
225    
226    
227    
228      /**
229       * The name of the attribute that contains the number of modify DN requests.
230       */
231      private static final String ATTR_MODIFY_DN_REQUESTS = "modifyDNRequests";
232    
233    
234    
235      /**
236       * The name of the attribute that contains the number of modify DN responses.
237       */
238      private static final String ATTR_MODIFY_DN_RESPONSES = "modifyDNResponses";
239    
240    
241    
242      /**
243       * The name of the attribute that contains the number of operations abandoned.
244       */
245      private static final String ATTR_OPS_ABANDONED = "operationsAbandoned";
246    
247    
248    
249      /**
250       * The name of the attribute that contains the number of operations completed.
251       */
252      private static final String ATTR_OPS_COMPLETED = "operationsCompleted";
253    
254    
255    
256      /**
257       * The name of the attribute that contains the number of operations initiated.
258       */
259      private static final String ATTR_OPS_INITIATED = "operationsInitiated";
260    
261    
262    
263      /**
264       * The name of the attribute that contains the number of search requests.
265       */
266      private static final String ATTR_SEARCH_REQUESTS = "searchRequests";
267    
268    
269    
270      /**
271       * The name of the attribute that contains the number of search result done
272       * responses.
273       */
274      private static final String ATTR_SEARCH_RESULT_DONE_RESPONSES =
275           "searchResultsDone";
276    
277    
278    
279      /**
280       * The name of the attribute that contains the number of search result entry
281       * responses.
282       */
283      private static final String ATTR_SEARCH_RESULT_ENTRY_RESPONSES =
284           "searchResultEntries";
285    
286    
287    
288      /**
289       * The name of the attribute that contains the number of search result
290       * reference responses.
291       */
292      private static final String ATTR_SEARCH_RESULT_REFERENCE_RESPONSES =
293           "searchResultReferences";
294    
295    
296    
297      /**
298       * The name of the attribute that contains the number of unbind requests.
299       */
300      private static final String ATTR_UNBIND_REQUESTS = "unbindRequests";
301    
302    
303    
304      /**
305       * The serial version UID for this serializable class.
306       */
307      private static final long serialVersionUID = 4869341619766489249L;
308    
309    
310    
311      // The number of abandon requests.
312      private final Long abandonRequests;
313    
314      // The number of add requests.
315      private final Long addRequests;
316    
317      // The number of add responses.
318      private final Long addResponses;
319    
320      // The number of bind requests.
321      private final Long bindRequests;
322    
323      // The number of bind responses.
324      private final Long bindResponses;
325    
326      // The number of bytes read.
327      private final Long bytesRead;
328    
329      // The number of bytes written.
330      private final Long bytesWritten;
331    
332      // The number of compare requests.
333      private final Long compareRequests;
334    
335      // The number of compare responses.
336      private final Long compareResponses;
337    
338      // The number of connections that have been closed.
339      private final Long connectionsClosed;
340    
341      // The number of connections that have been established.
342      private final Long connectionsEstablished;
343    
344      // The number of delete requests.
345      private final Long deleteRequests;
346    
347      // The number of delete responses.
348      private final Long deleteResponses;
349    
350      // The number of extended requests.
351      private final Long extendedRequests;
352    
353      // The number of extended responses.
354      private final Long extendedResponses;
355    
356      // The number of LDAP messages read.
357      private final Long ldapMessagesRead;
358    
359      // The number of LDAP messages written.
360      private final Long ldapMessagesWritten;
361    
362      // The number of modify requests.
363      private final Long modifyRequests;
364    
365      // The number of modify responses.
366      private final Long modifyResponses;
367    
368      // The number of modify DN requests.
369      private final Long modifyDNRequests;
370    
371      // The number of modify DN responses.
372      private final Long modifyDNResponses;
373    
374      // The number of operations abandoned.
375      private final Long opsAbandoned;
376    
377      // The number of operations completed.
378      private final Long opsCompleted;
379    
380      // The number of operations initiated.
381      private final Long opsInitiated;
382    
383      // The number of search requests.
384      private final Long searchRequests;
385    
386      // The number of search result done responses.
387      private final Long searchDoneResponses;
388    
389      // The number of search result entry responses.
390      private final Long searchEntryResponses;
391    
392      // The number of search result reference responses.
393      private final Long searchReferenceResponses;
394    
395      // The number of unbind requests.
396      private final Long unbindRequests;
397    
398    
399    
400      /**
401       * Creates a new LDAP statistics monitor entry from the provided entry.
402       *
403       * @param  entry  The entry to be parsed as an LDAP statistics monitor entry.
404       *                It must not be {@code null}.
405       */
406      public LDAPStatisticsMonitorEntry(final Entry entry)
407      {
408        super(entry);
409    
410        abandonRequests          = getLong(ATTR_ABANDON_REQUESTS);
411        addRequests              = getLong(ATTR_ADD_REQUESTS);
412        addResponses             = getLong(ATTR_ADD_RESPONSES);
413        bindRequests             = getLong(ATTR_BIND_REQUESTS);
414        bindResponses            = getLong(ATTR_BIND_RESPONSES);
415        bytesRead                = getLong(ATTR_BYTES_READ);
416        bytesWritten             = getLong(ATTR_BYTES_WRITTEN);
417        compareRequests          = getLong(ATTR_COMPARE_REQUESTS);
418        compareResponses         = getLong(ATTR_COMPARE_RESPONSES);
419        connectionsClosed        = getLong(ATTR_CONNECTIONS_CLOSED);
420        connectionsEstablished   = getLong(ATTR_CONNECTIONS_ESTABLISHED);
421        deleteRequests           = getLong(ATTR_DELETE_REQUESTS);
422        deleteResponses          = getLong(ATTR_DELETE_RESPONSES);
423        extendedRequests         = getLong(ATTR_EXTENDED_REQUESTS);
424        extendedResponses        = getLong(ATTR_EXTENDED_RESPONSES);
425        ldapMessagesRead         = getLong(ATTR_LDAP_MESSAGES_READ);
426        ldapMessagesWritten      = getLong(ATTR_LDAP_MESSAGES_WRITTEN);
427        modifyRequests           = getLong(ATTR_MODIFY_REQUESTS);
428        modifyResponses          = getLong(ATTR_MODIFY_RESPONSES);
429        modifyDNRequests         = getLong(ATTR_MODIFY_DN_REQUESTS);
430        modifyDNResponses        = getLong(ATTR_MODIFY_DN_RESPONSES);
431        opsAbandoned             = getLong(ATTR_OPS_ABANDONED);
432        opsCompleted             = getLong(ATTR_OPS_COMPLETED);
433        opsInitiated             = getLong(ATTR_OPS_INITIATED);
434        searchRequests           = getLong(ATTR_SEARCH_REQUESTS);
435        searchDoneResponses      = getLong(ATTR_SEARCH_RESULT_DONE_RESPONSES);
436        searchEntryResponses     = getLong(ATTR_SEARCH_RESULT_ENTRY_RESPONSES);
437        searchReferenceResponses = getLong(ATTR_SEARCH_RESULT_REFERENCE_RESPONSES);
438        unbindRequests           = getLong(ATTR_UNBIND_REQUESTS);
439      }
440    
441    
442    
443      /**
444       * Retrieves the number of connections established since the associated
445       * connection handler was started.
446       *
447       * @return  The number of connections established since the associated
448       *          connection handler was started, or {@code null} if it was not
449       *          included in the monitor entry.
450       */
451      public Long getConnectionsEstablished()
452      {
453        return connectionsEstablished;
454      }
455    
456    
457    
458      /**
459       * Retrieves the number of connections closed since the associated connection
460       * handler was started.
461       *
462       * @return  The number of connections closed since the associated connection
463       *          handler was started, or {@code null} if it was not included in the
464       *          monitor entry.
465       */
466      public Long getConnectionsClosed()
467      {
468        return connectionsClosed;
469      }
470    
471    
472    
473      /**
474       * Retrieves the number of operations initiated since the associated
475       * connection handler was started.
476       *
477       * @return  The number of operations initiated since the associated
478       *          connection handler was started, or {@code null} if it was not
479       *          included in the monitor entry.
480       */
481      public Long getOperationsInitiated()
482      {
483        return opsInitiated;
484      }
485    
486    
487    
488      /**
489       * Retrieves the number of operations completed since the associated
490       * connection handler was started.
491       *
492       * @return  The number of operations completed since the associated
493       *          connection handler was started, or {@code null} if it was not
494       *          included in the monitor entry.
495       */
496      public Long getOperationsCompleted()
497      {
498        return opsCompleted;
499      }
500    
501    
502    
503      /**
504       * Retrieves the number of operations abandoned since the associated
505       * connection handler was started.
506       *
507       * @return  The number of operations abandoned since the associated
508       *          connection handler was started, or {@code null} if it was not
509       *          included in the monitor entry.
510       */
511      public Long getOperationsAbandoned()
512      {
513        return opsAbandoned;
514      }
515    
516    
517    
518      /**
519       * Retrieves the number of bytes read from clients since the associated
520       * connection handler was started.
521       *
522       * @return  The number of bytes read from clients since the associated
523       *          connection handler was started, or {@code null} if it was not
524       *          included in the monitor entry.
525       */
526      public Long getBytesRead()
527      {
528        return bytesRead;
529      }
530    
531    
532    
533      /**
534       * Retrieves the number of bytes written to clients since the associated
535       * connection handler was started.
536       *
537       * @return  The number of bytes written to clients since the associated
538       *          connection handler was started, or {@code null} if it was not
539       *          included in the monitor entry.
540       */
541      public Long getBytesWritten()
542      {
543        return bytesWritten;
544      }
545    
546    
547    
548      /**
549       * Retrieves the number of LDAP messages read from clients since the
550       * associated connection handler was started.
551       *
552       * @return  The number of LDAP messages read from clients since the associated
553       *          connection handler was started, or {@code null} if it was not
554       *          included in the monitor entry.
555       */
556      public Long getLDAPMessagesRead()
557      {
558        return ldapMessagesRead;
559      }
560    
561    
562    
563      /**
564       * Retrieves the number of LDAP messages written to clients since the
565       * associated connection handler was started.
566       *
567       * @return  The number of LDAP messages written to clients since the
568       *          associated connection handler was started, or {@code null} if it
569       *          was not included in the monitor entry.
570       */
571      public Long getLDAPMessagesWritten()
572      {
573        return ldapMessagesWritten;
574      }
575    
576    
577    
578      /**
579       * Retrieves the number of abandon requests from clients since the associated
580       * connection handler was started.
581       *
582       * @return  The number of abandon requests from clients since the associated
583       *          connection handler was started, or {@code null} if it was not
584       *          included in the monitor entry.
585       */
586      public Long getAbandonRequests()
587      {
588        return abandonRequests;
589      }
590    
591    
592    
593      /**
594       * Retrieves the number of add requests from clients since the associated
595       * connection handler was started.
596       *
597       * @return  The number of add requests from clients since the associated
598       *          connection handler was started, or {@code null} if it was not
599       *          included in the monitor entry.
600       */
601      public Long getAddRequests()
602      {
603        return addRequests;
604      }
605    
606    
607    
608      /**
609       * Retrieves the number of add responses to clients since the associated
610       * connection handler was started.
611       *
612       * @return  The number of add responses to clients since the associated
613       *          connection handler was started, or {@code null} if it was not
614       *          included in the monitor entry.
615       */
616      public Long getAddResponses()
617      {
618        return addResponses;
619      }
620    
621    
622    
623      /**
624       * Retrieves the number of bind requests from clients since the associated
625       * connection handler was started.
626       *
627       * @return  The number of bind requests from clients since the associated
628       *          connection handler was started, or {@code null} if it was not
629       *          included in the monitor entry.
630       */
631      public Long getBindRequests()
632      {
633        return bindRequests;
634      }
635    
636    
637    
638      /**
639       * Retrieves the number of bind responses to clients since the associated
640       * connection handler was started.
641       *
642       * @return  The number of bind responses to clients since the associated
643       *          connection handler was started, or {@code null} if it was not
644       *          included in the monitor entry.
645       */
646      public Long getBindResponses()
647      {
648        return bindResponses;
649      }
650    
651    
652    
653      /**
654       * Retrieves the number of compare requests from clients since the associated
655       * connection handler was started.
656       *
657       * @return  The number of compare requests from clients since the associated
658       *          connection handler was started, or {@code null} if it was not
659       *          included in the monitor entry.
660       */
661      public Long getCompareRequests()
662      {
663        return compareRequests;
664      }
665    
666    
667    
668      /**
669       * Retrieves the number of compare responses to clients since the associated
670       * connection handler was started.
671       *
672       * @return  The number of compare responses to clients since the associated
673       *          connection handler was started, or {@code null} if it was not
674       *          included in the monitor entry.
675       */
676      public Long getCompareResponses()
677      {
678        return compareResponses;
679      }
680    
681    
682    
683      /**
684       * Retrieves the number of delete requests from clients since the associated
685       * connection handler was started.
686       *
687       * @return  The number of delete requests from clients since the associated
688       *          connection handler was started, or {@code null} if it was not
689       *          included in the monitor entry.
690       */
691      public Long getDeleteRequests()
692      {
693        return deleteRequests;
694      }
695    
696    
697    
698      /**
699       * Retrieves the number of delete responses to clients since the associated
700       * connection handler was started.
701       *
702       * @return  The number of delete responses to clients since the associated
703       *          connection handler was started, or {@code null} if it was not
704       *          included in the monitor entry.
705       */
706      public Long getDeleteResponses()
707      {
708        return deleteResponses;
709      }
710    
711    
712    
713      /**
714       * Retrieves the number of extended requests from clients since the associated
715       * connection handler was started.
716       *
717       * @return  The number of extended requests from clients since the associated
718       *          connection handler was started, or {@code null} if it was not
719       *          included in the monitor entry.
720       */
721      public Long getExtendedRequests()
722      {
723        return extendedRequests;
724      }
725    
726    
727    
728      /**
729       * Retrieves the number of extended responses to clients since the associated
730       * connection handler was started.
731       *
732       * @return  The number of extended responses to clients since the associated
733       *          connection handler was started, or {@code null} if it was not
734       *          included in the monitor entry.
735       */
736      public Long getExtendedResponses()
737      {
738        return extendedResponses;
739      }
740    
741    
742    
743      /**
744       * Retrieves the number of modify requests from clients since the associated
745       * connection handler was started.
746       *
747       * @return  The number of modify requests from clients since the associated
748       *          connection handler was started, or {@code null} if it was not
749       *          included in the monitor entry.
750       */
751      public Long getModifyRequests()
752      {
753        return modifyRequests;
754      }
755    
756    
757    
758      /**
759       * Retrieves the number of modify responses to clients since the associated
760       * connection handler was started.
761       *
762       * @return  The number of modify responses to clients since the associated
763       *          connection handler was started, or {@code null} if it was not
764       *          included in the monitor entry.
765       */
766      public Long getModifyResponses()
767      {
768        return modifyResponses;
769      }
770    
771    
772    
773      /**
774       * Retrieves the number of modify DN requests from clients since the
775       * associated connection handler was started.
776       *
777       * @return  The number of modify DN requests from clients since the associated
778       *          connection handler was started, or {@code null} if it was not
779       *          included in the monitor entry.
780       */
781      public Long getModifyDNRequests()
782      {
783        return modifyDNRequests;
784      }
785    
786    
787    
788      /**
789       * Retrieves the number of modify DN responses to clients since the associated
790       * connection handler was started.
791       *
792       * @return  The number of modify DN responses to clients since the associated
793       *          connection handler was started, or {@code null} if it was not
794       *          included in the monitor entry.
795       */
796      public Long getModifyDNResponses()
797      {
798        return modifyDNResponses;
799      }
800    
801    
802    
803      /**
804       * Retrieves the number of search requests from clients since the associated
805       * connection handler was started.
806       *
807       * @return  The number of search requests from clients since the associated
808       *          connection handler was started, or {@code null} if it was not
809       *          included in the monitor entry.
810       */
811      public Long getSearchRequests()
812      {
813        return searchRequests;
814      }
815    
816    
817    
818      /**
819       * Retrieves the number of search result entries sent to clients since the
820       * associated connection handler was started.
821       *
822       * @return  The number of search result entries sent to clients since the
823       *          associated connection handler was started, or {@code null} if it
824       *          was not included in the monitor entry.
825       */
826      public Long getSearchResultEntries()
827      {
828        return searchEntryResponses;
829      }
830    
831    
832    
833      /**
834       * Retrieves the number of search result references sent to clients since the
835       * associated connection handler was started.
836       *
837       * @return  The number of search result references sent to clients since the
838       *          associated connection handler was started, or {@code null} if it
839       *          was not included in the monitor entry.
840       */
841      public Long getSearchResultReferences()
842      {
843        return searchReferenceResponses;
844      }
845    
846    
847    
848      /**
849       * Retrieves the number of search result done responses to clients since the
850       * associated connection handler was started.
851       *
852       * @return  The number of search result done responses to clients since the
853       *          associated connection handler was started, or {@code null} if it
854       *          was not included in the monitor entry.
855       */
856      public Long getSearchDoneResponses()
857      {
858        return searchDoneResponses;
859      }
860    
861    
862    
863      /**
864       * Retrieves the number of unbind requests from clients since the associated
865       * connection handler was started.
866       *
867       * @return  The number of unbind requests from clients since the associated
868       *          connection handler was started, or {@code null} if it was not
869       *          included in the monitor entry.
870       */
871      public Long getUnbindRequests()
872      {
873        return unbindRequests;
874      }
875    
876    
877    
878      /**
879       * {@inheritDoc}
880       */
881      @Override()
882      public String getMonitorDisplayName()
883      {
884        return INFO_LDAP_STATS_MONITOR_DISPNAME.get();
885      }
886    
887    
888    
889      /**
890       * {@inheritDoc}
891       */
892      @Override()
893      public String getMonitorDescription()
894      {
895        return INFO_LDAP_STATS_MONITOR_DESC.get();
896      }
897    
898    
899    
900      /**
901       * {@inheritDoc}
902       */
903      @Override()
904      public Map<String,MonitorAttribute> getMonitorAttributes()
905      {
906        final LinkedHashMap<String,MonitorAttribute> attrs =
907             new LinkedHashMap<String,MonitorAttribute>();
908    
909        if (connectionsEstablished != null)
910        {
911          addMonitorAttribute(attrs,
912               ATTR_CONNECTIONS_ESTABLISHED,
913               INFO_LDAP_STATS_DISPNAME_CONNECTIONS_ESTABLISHED.get(),
914               INFO_LDAP_STATS_DESC_CONNECTIONS_ESTABLISHED.get(),
915               connectionsEstablished);
916        }
917    
918        if (connectionsClosed != null)
919        {
920          addMonitorAttribute(attrs,
921               ATTR_CONNECTIONS_CLOSED,
922               INFO_LDAP_STATS_DISPNAME_CONNECTIONS_CLOSED.get(),
923               INFO_LDAP_STATS_DESC_CONNECTIONS_CLOSED.get(),
924               connectionsClosed);
925        }
926    
927        if (bytesRead != null)
928        {
929          addMonitorAttribute(attrs,
930               ATTR_BYTES_READ,
931               INFO_LDAP_STATS_DISPNAME_BYTES_READ.get(),
932               INFO_LDAP_STATS_DESC_BYTES_READ.get(),
933               bytesRead);
934        }
935    
936        if (bytesWritten != null)
937        {
938          addMonitorAttribute(attrs,
939               ATTR_BYTES_WRITTEN,
940               INFO_LDAP_STATS_DISPNAME_BYTES_WRITTEN.get(),
941               INFO_LDAP_STATS_DESC_BYTES_WRITTEN.get(),
942               bytesWritten);
943        }
944    
945        if (ldapMessagesRead != null)
946        {
947          addMonitorAttribute(attrs,
948               ATTR_LDAP_MESSAGES_READ,
949               INFO_LDAP_STATS_DISPNAME_LDAP_MESSAGES_READ.get(),
950               INFO_LDAP_STATS_DESC_LDAP_MESSAGES_READ.get(),
951               ldapMessagesRead);
952        }
953    
954        if (ldapMessagesWritten != null)
955        {
956          addMonitorAttribute(attrs,
957               ATTR_LDAP_MESSAGES_WRITTEN,
958               INFO_LDAP_STATS_DISPNAME_LDAP_MESSAGES_WRITTEN.get(),
959               INFO_LDAP_STATS_DESC_LDAP_MESSAGES_WRITTEN.get(),
960               ldapMessagesWritten);
961        }
962    
963        if (opsInitiated != null)
964        {
965          addMonitorAttribute(attrs,
966               ATTR_OPS_INITIATED,
967               INFO_LDAP_STATS_DISPNAME_OPS_INITIATED.get(),
968               INFO_LDAP_STATS_DESC_OPS_INITIATED.get(),
969               opsInitiated);
970        }
971    
972        if (opsCompleted != null)
973        {
974          addMonitorAttribute(attrs,
975               ATTR_OPS_COMPLETED,
976               INFO_LDAP_STATS_DISPNAME_OPS_COMPLETED.get(),
977               INFO_LDAP_STATS_DESC_OPS_COMPLETED.get(),
978               opsCompleted);
979        }
980    
981        if (opsAbandoned != null)
982        {
983          addMonitorAttribute(attrs,
984               ATTR_OPS_ABANDONED,
985               INFO_LDAP_STATS_DISPNAME_OPS_ABANDONED.get(),
986               INFO_LDAP_STATS_DESC_OPS_ABANDONED.get(),
987               opsAbandoned);
988        }
989    
990        if (abandonRequests != null)
991        {
992          addMonitorAttribute(attrs,
993               ATTR_ABANDON_REQUESTS,
994               INFO_LDAP_STATS_DISPNAME_ABANDON_REQUESTS.get(),
995               INFO_LDAP_STATS_DESC_ABANDON_REQUESTS.get(),
996               abandonRequests);
997        }
998    
999        if (addRequests != null)
1000        {
1001          addMonitorAttribute(attrs,
1002               ATTR_ADD_REQUESTS,
1003               INFO_LDAP_STATS_DISPNAME_ADD_REQUESTS.get(),
1004               INFO_LDAP_STATS_DESC_ADD_REQUESTS.get(),
1005               addRequests);
1006        }
1007    
1008        if (addResponses != null)
1009        {
1010          addMonitorAttribute(attrs,
1011               ATTR_ADD_RESPONSES,
1012               INFO_LDAP_STATS_DISPNAME_ADD_RESPONSES.get(),
1013               INFO_LDAP_STATS_DESC_ADD_RESPONSES.get(),
1014               addResponses);
1015        }
1016    
1017        if (bindRequests != null)
1018        {
1019          addMonitorAttribute(attrs,
1020               ATTR_BIND_REQUESTS,
1021               INFO_LDAP_STATS_DISPNAME_BIND_REQUESTS.get(),
1022               INFO_LDAP_STATS_DESC_BIND_REQUESTS.get(),
1023               bindRequests);
1024        }
1025    
1026        if (bindResponses != null)
1027        {
1028          addMonitorAttribute(attrs,
1029               ATTR_BIND_RESPONSES,
1030               INFO_LDAP_STATS_DISPNAME_BIND_RESPONSES.get(),
1031               INFO_LDAP_STATS_DESC_BIND_RESPONSES.get(),
1032               bindResponses);
1033        }
1034    
1035        if (compareRequests != null)
1036        {
1037          addMonitorAttribute(attrs,
1038               ATTR_COMPARE_REQUESTS,
1039               INFO_LDAP_STATS_DISPNAME_COMPARE_REQUESTS.get(),
1040               INFO_LDAP_STATS_DESC_COMPARE_REQUESTS.get(),
1041               compareRequests);
1042        }
1043    
1044        if (compareResponses != null)
1045        {
1046          addMonitorAttribute(attrs,
1047               ATTR_COMPARE_RESPONSES,
1048               INFO_LDAP_STATS_DISPNAME_COMPARE_RESPONSES.get(),
1049               INFO_LDAP_STATS_DESC_COMPARE_RESPONSES.get(),
1050               compareResponses);
1051        }
1052    
1053        if (deleteRequests != null)
1054        {
1055          addMonitorAttribute(attrs,
1056               ATTR_DELETE_REQUESTS,
1057               INFO_LDAP_STATS_DISPNAME_DELETE_REQUESTS.get(),
1058               INFO_LDAP_STATS_DESC_DELETE_REQUESTS.get(),
1059               deleteRequests);
1060        }
1061    
1062        if (deleteResponses != null)
1063        {
1064          addMonitorAttribute(attrs,
1065               ATTR_DELETE_RESPONSES,
1066               INFO_LDAP_STATS_DISPNAME_DELETE_RESPONSES.get(),
1067               INFO_LDAP_STATS_DESC_DELETE_RESPONSES.get(),
1068               deleteResponses);
1069        }
1070    
1071        if (extendedRequests != null)
1072        {
1073          addMonitorAttribute(attrs,
1074               ATTR_EXTENDED_REQUESTS,
1075               INFO_LDAP_STATS_DISPNAME_EXTENDED_REQUESTS.get(),
1076               INFO_LDAP_STATS_DESC_EXTENDED_REQUESTS.get(),
1077               extendedRequests);
1078        }
1079    
1080        if (extendedResponses != null)
1081        {
1082          addMonitorAttribute(attrs,
1083               ATTR_EXTENDED_RESPONSES,
1084               INFO_LDAP_STATS_DISPNAME_EXTENDED_RESPONSES.get(),
1085               INFO_LDAP_STATS_DESC_EXTENDED_RESPONSES.get(),
1086               extendedResponses);
1087        }
1088    
1089        if (modifyRequests != null)
1090        {
1091          addMonitorAttribute(attrs,
1092               ATTR_MODIFY_REQUESTS,
1093               INFO_LDAP_STATS_DISPNAME_MODIFY_REQUESTS.get(),
1094               INFO_LDAP_STATS_DESC_MODIFY_REQUESTS.get(),
1095               modifyRequests);
1096        }
1097    
1098        if (modifyResponses != null)
1099        {
1100          addMonitorAttribute(attrs,
1101               ATTR_MODIFY_RESPONSES,
1102               INFO_LDAP_STATS_DISPNAME_MODIFY_RESPONSES.get(),
1103               INFO_LDAP_STATS_DESC_MODIFY_RESPONSES.get(),
1104               modifyResponses);
1105        }
1106    
1107        if (modifyDNRequests != null)
1108        {
1109          addMonitorAttribute(attrs,
1110               ATTR_MODIFY_DN_REQUESTS,
1111               INFO_LDAP_STATS_DISPNAME_MODIFY_DN_REQUESTS.get(),
1112               INFO_LDAP_STATS_DESC_MODIFY_DN_REQUESTS.get(),
1113               modifyDNRequests);
1114        }
1115    
1116        if (modifyDNResponses != null)
1117        {
1118          addMonitorAttribute(attrs,
1119               ATTR_MODIFY_DN_RESPONSES,
1120               INFO_LDAP_STATS_DISPNAME_MODIFY_DN_RESPONSES.get(),
1121               INFO_LDAP_STATS_DESC_MODIFY_DN_RESPONSES.get(),
1122               modifyDNResponses);
1123        }
1124    
1125        if (searchRequests != null)
1126        {
1127          addMonitorAttribute(attrs,
1128               ATTR_SEARCH_REQUESTS,
1129               INFO_LDAP_STATS_DISPNAME_SEARCH_REQUESTS.get(),
1130               INFO_LDAP_STATS_DESC_SEARCH_REQUESTS.get(),
1131               searchRequests);
1132        }
1133    
1134        if (searchEntryResponses != null)
1135        {
1136          addMonitorAttribute(attrs,
1137               ATTR_SEARCH_RESULT_ENTRY_RESPONSES,
1138               INFO_LDAP_STATS_DISPNAME_SEARCH_ENTRY_RESPONSES.get(),
1139               INFO_LDAP_STATS_DESC_SEARCH_ENTRY_RESPONSES.get(),
1140               searchEntryResponses);
1141        }
1142    
1143        if (searchReferenceResponses != null)
1144        {
1145          addMonitorAttribute(attrs,
1146               ATTR_SEARCH_RESULT_REFERENCE_RESPONSES,
1147               INFO_LDAP_STATS_DISPNAME_SEARCH_REFERENCE_RESPONSES.get(),
1148               INFO_LDAP_STATS_DESC_SEARCH_REFERENCE_RESPONSES.get(),
1149               searchReferenceResponses);
1150        }
1151    
1152        if (searchDoneResponses != null)
1153        {
1154          addMonitorAttribute(attrs,
1155               ATTR_SEARCH_RESULT_DONE_RESPONSES,
1156               INFO_LDAP_STATS_DISPNAME_SEARCH_DONE_RESPONSES.get(),
1157               INFO_LDAP_STATS_DESC_SEARCH_DONE_RESPONSES.get(),
1158               searchDoneResponses);
1159        }
1160    
1161        if (unbindRequests != null)
1162        {
1163          addMonitorAttribute(attrs,
1164               ATTR_UNBIND_REQUESTS,
1165               INFO_LDAP_STATS_DISPNAME_UNBIND_REQUESTS.get(),
1166               INFO_LDAP_STATS_DESC_UNBIND_REQUESTS.get(),
1167               unbindRequests);
1168        }
1169    
1170        return Collections.unmodifiableMap(attrs);
1171      }
1172    }