/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt * or http://forgerock.org/license/CDDLv1.0.html. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at legal-notices/CDDLv1_0.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2014-2015 ForgeRock AS */ package org.opends.server.tools; import static org.forgerock.opendj.ldap.DereferenceAliasesPolicy.*; import static org.forgerock.opendj.ldap.SearchScope.*; import static org.opends.messages.ToolMessages.*; import static com.forgerock.opendj.cli.Utils.*; import java.io.PrintStream; import org.forgerock.opendj.ldap.DereferenceAliasesPolicy; import org.forgerock.opendj.ldap.SearchScope; /** * This class defines options for the search operations used * by the ldapsearch tool. */ public class LDAPSearchOptions extends LDAPToolOptions { private DereferenceAliasesPolicy dereferencePolicy = NEVER; private SearchScope searchScope = WHOLE_SUBTREE; private int sizeLimit; private int timeLimit; private boolean typesOnly; private boolean countMatchingEntries; /** * Creates the options instance. */ public LDAPSearchOptions() { } /** * Set the timeLimit for the operation. * * @param timeLimit The time limit for the search. */ public void setTimeLimit(int timeLimit) { this.timeLimit = timeLimit; } /** * Return the timeLimit value. * * @return The timeLimit value. */ public int getTimeLimit() { return timeLimit; } /** * Set the sizeLimit for the operation. * * @param sizeLimit The size limit for the search. * */ public void setSizeLimit(int sizeLimit) { this.sizeLimit = sizeLimit; } /** * Return the sizeLimit value. * * @return The sizeLimit value. */ public int getSizeLimit() { return sizeLimit; } /** * Set the search scope . * * @param scope The search scope string. * @param err A print stream to which error messages should be written if * a problem occurs. * * @return <CODE>true</CODE> if the scope was set properly, or * <CODE>false</CODE> if not. */ public boolean setSearchScope(String scope, PrintStream err) { if(scope == null) { searchScope = WHOLE_SUBTREE; } else if(scope.equalsIgnoreCase("base")) { searchScope = BASE_OBJECT; } else if(scope.equalsIgnoreCase("one")) { searchScope = SINGLE_LEVEL; } else if (scope.equalsIgnoreCase("sub")) { searchScope = WHOLE_SUBTREE; } else if (scope.equalsIgnoreCase("subordinate")) { searchScope = SUBORDINATES; } else { printWrappedText(err, ERR_SEARCH_INVALID_SEARCH_SCOPE.get(scope)); return false; } return true; } /** * Get the search scope value. * * @return The search scope value. */ public SearchScope getSearchScope() { return searchScope; } /** * Set the dereference policy. * * @param policy The dereference policy. * @param err A print stream to which error messages should be written if * a problem occurs. * * @return <CODE>true</CODE> if the dereference policy was set properly, or * <CODE>false</CODE> if not. */ public boolean setDereferencePolicy(String policy, PrintStream err) { if(policy == null) { dereferencePolicy = NEVER; } else if(policy.equals("never")) { dereferencePolicy = NEVER; } else if(policy.equals("always")) { dereferencePolicy = ALWAYS; } else if (policy.equals("search")) { dereferencePolicy = IN_SEARCHING; } else if (policy.equals("find")) { dereferencePolicy = FINDING_BASE; } else { printWrappedText(err, ERR_SEARCH_INVALID_DEREFERENCE_POLICY.get(policy)); return false; } return true; } /** * Return the dereference policy. * * @return The alias dereference policy. */ public DereferenceAliasesPolicy getDereferencePolicy() { return dereferencePolicy; } /** * Return only the attribute types in the search result. * * @return <CODE>true</CODE> if only attribute types should be returned in * matching entries, or <CODE>false</CODE> if both types and values * should be included. */ public boolean getTypesOnly() { return this.typesOnly; } /** * Return only the attribute types in the search result. * * @param typesOnly Specifies whether only attribute types should be * returned in matching entries, or both types and values. */ public void setTypesOnly(boolean typesOnly) { this.typesOnly = typesOnly; } /** * Indicates whether to report the number of matching entries returned by the * server. * * @return {@code true} if the number of matching entries should be reported, * or {@code false} if not. */ public boolean countMatchingEntries() { return countMatchingEntries; } /** * Specifies whether to report the number of matching entries returned by the * server. * * @param countMatchingEntries Specifies whether to report the number of * matching entries returned by the server. */ public void setCountMatchingEntries(boolean countMatchingEntries) { this.countMatchingEntries = countMatchingEntries; } }