blob: d679c105a73f5025643d7df79306fea80ae559fc [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.directory.studio.ldapbrowser.core.model;
import java.io.Serializable;
import org.apache.directory.api.ldap.model.name.Dn;
import org.apache.directory.api.ldap.model.url.LdapUrl;
import org.apache.directory.studio.connection.core.Connection;
import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod;
import org.apache.directory.studio.connection.core.Connection.ReferralHandlingMethod;
import org.apache.directory.studio.connection.core.ConnectionPropertyPageProvider;
import org.apache.directory.studio.ldapbrowser.core.BookmarkManager;
import org.apache.directory.studio.ldapbrowser.core.SearchManager;
import org.apache.directory.studio.ldapbrowser.core.model.schema.Schema;
import org.eclipse.core.runtime.IAdaptable;
/**
* An IBrowserConnection represents a connection for the LDAP browser.
* It holds an instance to the underlying connection of the connection plugin,
* additional it includes advanced connection parameters for the LDAP browser.
* It also provides an entry cache.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public interface IBrowserConnection extends Serializable, IAdaptable, ConnectionPropertyPageProvider
{
/**
* Enum for the modify mode of attributes
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
enum ModifyMode
{
/** Default mode */
DEFAULT(0),
/** Always use replace operation */
REPLACE(1),
/** Always use add/delete operation */
ADD_DELETE(2);
private final int ordinal;
private ModifyMode( int ordinal )
{
this.ordinal = ordinal;
}
/**
* Gets the ordinal.
*
* @return the ordinal
*/
public int getOrdinal()
{
return ordinal;
}
/**
* Gets the ModifyMode by ordinal.
*
* @param ordinal the ordinal
*
* @return the ModifyMode
*/
public static ModifyMode getByOrdinal( int ordinal )
{
switch ( ordinal )
{
case 0:
return DEFAULT;
case 1:
return REPLACE;
case 2:
return ADD_DELETE;
default:
return null;
}
}
}
/**
* Enum for modify order when using add/delete operations
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
enum ModifyOrder
{
/** Delete first */
DELETE_FIRST(0),
/** Add first */
ADD_FIRST(1);
private final int ordinal;
private ModifyOrder( int ordinal )
{
this.ordinal = ordinal;
}
/**
* Gets the ordinal.
*
* @return the ordinal
*/
public int getOrdinal()
{
return ordinal;
}
/**
* Gets the ModifyOrder by ordinal.
*
* @param ordinal the ordinal
*
* @return the ModifyOrder
*/
public static ModifyOrder getByOrdinal( int ordinal )
{
switch ( ordinal )
{
case 0:
return DELETE_FIRST;
case 1:
return ADD_FIRST;
default:
return null;
}
}
}
/** The key for the connection parameter "Get Base DNs from Root DSE". */
String CONNECTION_PARAMETER_FETCH_BASE_DNS = "ldapbrowser.fetchBaseDns"; //$NON-NLS-1$
/** The key for the connection parameter "Base Dn". */
String CONNECTION_PARAMETER_BASE_DN = "ldapbrowser.baseDn"; //$NON-NLS-1$
/** The key for the connection parameter "Count Limit". */
String CONNECTION_PARAMETER_COUNT_LIMIT = "ldapbrowser.countLimit"; //$NON-NLS-1$
/** The key for the connection parameter "Time Limit". */
String CONNECTION_PARAMETER_TIME_LIMIT = "ldapbrowser.timeLimit"; //$NON-NLS-1$
/** The key for the connection parameter "Alias Dereferencing". */
String CONNECTION_PARAMETER_ALIASES_DEREFERENCING_METHOD = "ldapbrowser.aliasesDereferencingMethod"; //$NON-NLS-1$
/** The key for the connection parameter "Referrals Handling". */
String CONNECTION_PARAMETER_REFERRALS_HANDLING_METHOD = "ldapbrowser.referralsHandlingMethod"; //$NON-NLS-1$
/** The key for the connection parameter "Fetch Operational Attributes. */
String CONNECTION_PARAMETER_FETCH_OPERATIONAL_ATTRIBUTES = "ldapbrowser.fetchOperationalAttributes"; //$NON-NLS-1$
/** The key for the connection parameter "Fetch Sub-entries". */
String CONNECTION_PARAMETER_FETCH_SUBENTRIES = "ldapbrowser.fetchSubentries"; //$NON-NLS-1$
/** The key for the connection parameter "Paged Search". */
String CONNECTION_PARAMETER_PAGED_SEARCH = "ldapbrowser.pagedSearch"; //$NON-NLS-1$
/** The key for the connection parameter "Paged Search Size". */
String CONNECTION_PARAMETER_PAGED_SEARCH_SIZE = "ldapbrowser.pagedSearchSize"; //$NON-NLS-1$
/** The key for the connection parameter "Paged Search Scroll Mode". */
String CONNECTION_PARAMETER_PAGED_SEARCH_SCROLL_MODE = "ldapbrowser.pagedSearchScrollMode"; //$NON-NLS-1$
/** The key for the connection parameter "Modify Mode for attributes with equality matching rule". */
String CONNECTION_PARAMETER_MODIFY_MODE = "ldapbrowser.modifyMode"; //$NON-NLS-1$
/** The key for the connection parameter "Modify Mode for attributes without equality matching rule". */
String CONNECTION_PARAMETER_MODIFY_MODE_NO_EMR = "ldapbrowser.modifyModeNoEMR"; //$NON-NLS-1$
/** The key for the connection parameter "Modify add delete order". */
String CONNECTION_PARAMETER_MODIFY_ORDER = "ldapbrowser.modifyOrder"; //$NON-NLS-1$
/** The key for the connection parameter "Use ManageDsaIT Control" */
String CONNECTION_PARAMETER_MANAGE_DSA_IT = "ldapbrowser.manageDsaIT"; //$NON-NLS-1$
/**
* Gets the URL of this connection.
*
* @return the URL of this connection
*/
LdapUrl getUrl();
/**
* Gets the flag whether the base DNs is retrieved
* from Root DSE or whether the base Dn is defined manually.
*
* @return true, if the base DNs are fetched from Root DSE,
* false, if the base Dn is defined manually
*/
boolean isFetchBaseDNs();
/**
* Sets the flag whether the base DNs should be retrieved
* from Root DSE or whether the base Dn is defined manually.
*
* @param fetchBaseDNs true to get the base DNs from Root DSE,
* false to define one manually
*/
void setFetchBaseDNs( boolean fetchBaseDNs );
/**
* Gets the manually defined base Dn.
*
* @return the manually defined base ND
*/
Dn getBaseDN();
/**
* Sets the manually defined base Dn.
*
* @param baseDn the new base Dn
*/
void setBaseDN( Dn baseDn );
/**
* Gets the count limit.
*
* @return the count limit
*/
int getCountLimit();
/**
* Sets the count limit.
*
* @param countLimit the new count limit
*/
void setCountLimit( int countLimit );
/**
* Gets the aliases dereferencing method.
*
* @return the aliases dereferencing method
*/
AliasDereferencingMethod getAliasesDereferencingMethod();
/**
* Sets the aliases dereferencing method.
*
* @param aliasesDereferencingMethod the new aliases dereferencing method
*/
void setAliasesDereferencingMethod( AliasDereferencingMethod aliasesDereferencingMethod );
/**
* Gets the referrals handling method.
*
* @return the referrals handling method
*/
ReferralHandlingMethod getReferralsHandlingMethod();
/**
* Sets the referrals handling method.
*
* @param referralsHandlingMethod the new referrals handling method
*/
void setReferralsHandlingMethod( ReferralHandlingMethod referralsHandlingMethod );
/**
* Gets the time limit.
*
* @return the time limit
*/
int getTimeLimit();
/**
* Sets the time limit.
*
* @param timeLimit the new time limit
*/
void setTimeLimit( int timeLimit );
/**
* Checks if subentries should be fetched.
*
* @return the true if subentries should be fetched
*/
boolean isFetchSubentries();
/**
* Sets if subentries should be fetched.
*
* @param fetchSubentries true to fetch subentries
*/
void setFetchSubentries( boolean fetchSubentries );
/**
* Checks if ManageDsaIT control should be used.
*
* @return true if ManageDsaIT control should be used
*/
boolean isManageDsaIT();
/**
* Sets if ManageDsaIT control should be used.
*
* @param manageDsaIT true to use ManageDsaIT control
*/
void setManageDsaIT( boolean manageDsaIT );
/**
* Checks if operational attributes should be fetched.
*
* @return the true if operational attributes should be fetched
*/
boolean isFetchOperationalAttributes();
/**
* Sets if operational attributes should be fetched.
*
* @param fetchSubentries true to fetch operational attributes
*/
void setFetchOperationalAttributes( boolean fetchOperationalAttributes );
/**
* Checks if paged search should be used.
*
* @return the true if paged search should be used
*/
boolean isPagedSearch();
/**
* Sets if paged search should be used.
*
* @param pagedSearch true to use paged search
*/
void setPagedSearch( boolean pagedSearch );
/**
* Gets the paged search size.
*
* @return the paged search size
*/
int getPagedSearchSize();
/**
* Sets the paged search size.
*
* @param pagedSearchSize the new paged search size
*/
void setPagedSearchSize( int pagedSearchSize );
/**
* Checks if paged search scroll mode should be used.
*
* @return the true if paged search scroll mode should be used
*/
boolean isPagedSearchScrollMode();
/**
* Sets if paged search scroll mode should be used.
*
* @param pagedSearch true to use paged search scroll mode
*/
void setPagedSearchScrollMode( boolean pagedSearchScrollMode );
/**
* Gets the modify mode for attributes.
*
* @return the modify mode for attributes
*/
ModifyMode getModifyMode();
/**
* Sets the modify mode for attributes.
*
* @param mode the modify mode for attributes
*/
void setModifyMode( ModifyMode mode );
/**
* Gets the modify mode for attributes without equality matching rule.
*
* @return the modify mode for attributes without equality matching rule
*/
ModifyMode getModifyModeNoEMR();
/**
* Sets the modify mode for attributes without equality matching rule.
*
* @param mode the modify mode for attributes without equality matching rule
*/
void setModifyModeNoEMR( ModifyMode mode );
/**
* Gets the modify add/delete order.
*
* @return the modify add/delete order
*/
ModifyOrder getModifyAddDeleteOrder();
/**
* Sets the modify add/delete order.
*
* @param mode the modify add/delete order
*/
void setModifyAddDeleteOrder( ModifyOrder mode );
/**
* Sets the quick search.
*
* @param quickSearch the new quick search
*/
void setQuickSearch( IQuickSearch quickSearch );
/**
* Gets the quick search.
*
* @return the quick search
*/
IQuickSearch getQuickSearch();
/**
* Gets the root DSE.
*
* @return the root DSE
*/
IRootDSE getRootDSE();
/**
* Gets the schema.
*
* @return the schema, never null
*/
Schema getSchema();
/**
* Sets the schema.
*
* @param schema the new schema
*/
void setSchema( Schema schema );
/**
* Gets the search manager.
*
* @return the search manager
*/
SearchManager getSearchManager();
/**
* Gets the bookmark manager.
*
* @return the bookmark manager
*/
BookmarkManager getBookmarkManager();
/**
* Gets the entry from cache.
*
* @param dn the Dn of the entry
*
* @return the entry from cache or null if the entry isn't cached
*/
IEntry getEntryFromCache( Dn dn );
/**
* Gets the connection.
*
* @return the connection
*/
Connection getConnection();
/**
* Puts the entry to the cache.
*
* @param entry the entry to cache
*/
void cacheEntry( IEntry entry );
/**
* Removes the entry and all children recursively from the cache.
*
* @param entry the entry to remove from cache
*/
void uncacheEntryRecursive( IEntry entry );
/**
* Clears all caches.
*/
void clearCaches();
}