/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.java.sip.communicator.service.ldap;
import java.util.*;
import net.java.sip.communicator.service.ldap.event.*;
/**
* LdapDirectory is the "core" object of the service, which
* should be used to perform LDAP queries.
* It is comparable in order to display LdapDirectory(s)
* in alphabetic order in the UI.
*
* @author Sebastien Mazy
*/
public interface LdapDirectory
extends LdapConstants,
LdapEventManager,
Comparable<LdapDirectory>
{
/**
* Returns the state of the enabled marker
*
* @return the state of the enabled marker
*/
public boolean isEnabled();
/**
* Sets the state of the enabled marker
*
* @param enabled whether the server is marked as enabled
*/
public void setEnabled(boolean enabled);
/**
* Returns an LdapDirectorySettings object containing
* a copy of the settings of this server
*
* @return a copy of this server settings
*
* @see LdapDirectorySettings
*/
public LdapDirectorySettings getSettings();
/**
* Searches a person in the directory, based on a search string.
* Since that method might take time to process, it should be
* implemented asynchronously and send the results (LdapPersonFound)
* with an LdapEvent to its listeners
*
* @param query assumed name (can be partial) of the person searched
* e.g. "john", "doe", "john doe"
* @param caller the LdapListener which called the method and will
* receive results.
* @param searchSettings custom settings for this search, null if you
* want to stick with the defaults
*
* @see LdapDirectory#searchPerson
* @see LdapPersonFound
* @see LdapEvent
*/
public void searchPerson(final LdapQuery query, final LdapListener caller,
LdapSearchSettings searchSettings);
/**
* search the children nodes of the given dn
*
* @param dn the distinguished name of the node to search for children
* @return list of childrens
* @see net.java.sip.communicator.service.ldap.LdapDirectory#searchChildren
*/
public Collection<String> searchChildren(final String dn);
/**
* Adds listener to our list of listeners
*
* @param listener listener to be added
*/
public void addLdapListener(LdapListener listener);
/**
* Overrides attributes name for searching for a specific type (i.e mail,
* homePhone, ...).
*
* @param attribute name
* @param names list of attributes name
*/
public void overrideAttributesSearch(String attribute, List<String> names);
}