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 legal-notices/CDDLv1_0.txt
010 * or http://forgerock.org/license/CDDLv1.0.html.
011 * See the License for the specific language governing permissions
012 * and limitations under the License.
013 *
014 * When distributing Covered Code, include this CDDL HEADER in each
015 * file and include the License file at legal-notices/CDDLv1_0.txt.
016 * If applicable, add the following below this CDDL HEADER, with the
017 * fields enclosed by brackets "[]" replaced with your own identifying
018 * information:
019 *      Portions Copyright [yyyy] [name of copyright owner]
020 *
021 * CDDL HEADER END
022 *
023 *
024 *      Copyright 2008 Sun Microsystems, Inc.
025 *      Portions Copyright 2015 ForgeRock AS.
026 */
027package org.opends.admin.ads;
028
029import java.util.HashSet;
030import 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 */
038public class TopologyCacheFilter
039{
040  private Set<String> baseDNs = new HashSet<>();
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<>(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}