/*
|
* The contents of this file are subject to the terms of the Common Development and
|
* Distribution License (the License). You may not use this file except in compliance with the
|
* License.
|
*
|
* You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
|
* specific language governing permission and limitations under the License.
|
*
|
* When distributing Covered Software, include this CDDL Header Notice in each file and include
|
* the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
|
* Header, with the fields enclosed by brackets [] replaced by your own identifying
|
* information: "Portions Copyright [year] [name of copyright owner]".
|
*
|
* 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;
|
}
|
}
|