001 /*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License"). You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 * Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 * Copyright 2008 Sun Microsystems, Inc.
026 */
027 package org.opends.admin.ads;
028
029 import java.util.HashSet;
030 import java.util.Set;
031
032 /**
033 * Class used to filter what we look for in the topology cache.
034 * This is done in particular to avoid problems of performance when we
035 * know what we are looking for. It is particularly useful to avoid
036 * searching for monitoring information.
037 */
038 public class TopologyCacheFilter
039 {
040 private Set<String> baseDNs = new HashSet<String>();
041 private boolean searchMonitoringInformation = true;
042 private boolean searchBaseDNInformation = true;
043
044 /**
045 * Returns whether we must search for base DN information or not.
046 * @return <CODE>true</CODE> if we must search base DN information and
047 * <CODE>false</CODE> otherwise.
048 */
049 public boolean searchBaseDNInformation()
050 {
051 return searchBaseDNInformation;
052 }
053
054 /**
055 * Sets whether we must search for base DN information or not.
056 * @param searchBaseDNInformation whether we must search for base DN
057 * information or not.
058 */
059 public void setSearchBaseDNInformation(
060 boolean searchBaseDNInformation)
061 {
062 this.searchBaseDNInformation = searchBaseDNInformation;
063 }
064
065
066 /**
067 * Returns whether we must search for monitoring information or not.
068 * @return <CODE>true</CODE> if we must search monitoring information and
069 * <CODE>false</CODE> otherwise.
070 */
071 public boolean searchMonitoringInformation()
072 {
073 return searchMonitoringInformation;
074 }
075
076 /**
077 * Sets whether we must search for monitoring information or not.
078 * @param searchMonitoringInformation whether we must search for monitoring
079 * information or not.
080 */
081 public void setSearchMonitoringInformation(
082 boolean searchMonitoringInformation)
083 {
084 this.searchMonitoringInformation = searchMonitoringInformation;
085 }
086
087 /**
088 * Adds one of the base DNs we must search for. If at least one baseDN
089 * is added using this method, only the added baseDNs are searched. If no
090 * base DN is added, all the base DNs will be retrieved.
091 * @param dn the DN of the base DN to look for.
092 */
093 public void addBaseDNToSearch(String dn)
094 {
095 baseDNs.add(dn);
096 }
097
098 /**
099 * Removes a base DN fom the list of baseDNs to search.
100 * @param dn the DN of the base DN to be removed.
101 */
102 public void removeBaseDNToSearch(String dn)
103 {
104 baseDNs.remove(dn);
105 }
106
107 /**
108 * Returns the list of base DNs that will be searched for. If the list is
109 * empty we will search for all the base DNs.
110 * @return the list of base DNs we will search for.
111 */
112 public Set<String> getBaseDNsToSearch()
113 {
114 return new HashSet<String>(baseDNs);
115 }
116
117 /**
118 * Tells whether this filter specifies to search for all the base DNs or not.
119 * @return <CODE>true</CODE> if the filter specifies to search for all the
120 * base DNs and <CODE>false</CODE> otherwise.
121 */
122 public boolean searchAllBaseDNs()
123 {
124 return baseDNs.isEmpty();
125 }
126 }