/*
* 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
* trunk/opends/resource/legal-notices/OpenDS.LICENSE
* or https://OpenDS.dev.java.net/OpenDS.LICENSE.
* 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
* trunk/opends/resource/legal-notices/OpenDS.LICENSE. 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.
*/
package org.opends.server.tools;
import java.io.PrintStream;
import org.opends.server.types.DereferencePolicy;
import org.opends.server.types.SearchScope;
import static org.opends.messages.ToolMessages.*;
import static org.opends.server.types.DereferencePolicy.*;
import static org.opends.server.types.SearchScope.*;
/**
* This class defines options for the search operations used
* by the ldapsearch tool.
*/
public class LDAPSearchOptions extends LDAPToolOptions
{
private DereferencePolicy dereferencePolicy = NEVER_DEREF_ALIASES;
private SearchScope searchScope = WHOLE_SUBTREE;
private int sizeLimit = 0;
private int timeLimit = 0;
private boolean typesOnly = false;
private boolean countMatchingEntries = false;
/**
* 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 = SUBORDINATE_SUBTREE;
} else
{
err.println(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_DEREF_ALIASES;
} else if(policy.equals("never"))
{
dereferencePolicy = NEVER_DEREF_ALIASES;
} else if(policy.equals("always"))
{
dereferencePolicy = DEREF_ALWAYS;
} else if (policy.equals("search"))
{
dereferencePolicy = DEREF_IN_SEARCHING;
} else if (policy.equals("find"))
{
dereferencePolicy = DEREF_FINDING_BASE_OBJECT;
} else
{
err.println("Invalid deref alias specified:" + policy);
return false;
}
return true;
}
/**
* Return the dereference policy.
*
* @return The alias dereference policy.
*/
public DereferencePolicy 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;
}
}