org.apache.directory.server.xdbm
Interface Index<K,O,ID>

Type Parameters:
K - The Indexed value type, used to retrieve an element
O - The indexed element type, when retrieved
ID - The unique identifier type in the master table
All Known Implementing Classes:
AbstractIndex, AvlIndex, AvlRdnIndex, GenericIndex

public interface Index<K,O,ID>

An index used to retrieve elements into the master table. Each stored element that is indexed has a unique identifier (ID). We may have more than one element associated with a value (K). We may cache the retrieved element (O).
Cursors over indices can also be gotten to traverse the values of the index.

Author:
Apache Directory Project

Field Summary
static int DEFAULT_INDEX_CACHE_SIZE
          The default cache size (ie, the number of elements we stored in the cache)
 
Method Summary
 void add(K attrVal, ID id)
          Add an entry into the index, associated with the element ID.
 void close()
           
 int count()
          Gets the total scan count for this index.
 int count(K attrVal)
          Gets the scan count for the occurrence of a specific attribute value within the index.
 void drop(ID entryId)
          Remove all the reference to an entry from the index.
 void drop(K attrVal, ID id)
          Remove the pair from the index for the given value and id.
 boolean forward(K attrVal)
           
 boolean forward(K attrVal, ID id)
           
 IndexCursor<K,O,ID> forwardCursor()
           
 IndexCursor<K,O,ID> forwardCursor(K key)
           
 boolean forwardGreaterOrEq(K attrVal)
           
 boolean forwardGreaterOrEq(K attrVal, ID id)
           
 boolean forwardLessOrEq(K attrVal)
           
 boolean forwardLessOrEq(K attrVal, ID id)
           
 ID forwardLookup(K attrVal)
           
 org.apache.directory.shared.ldap.model.cursor.Cursor<ID> forwardValueCursor(K key)
           
 org.apache.directory.shared.ldap.model.schema.AttributeType getAttribute()
          Gets the attribute this Index is built upon.
 String getAttributeId()
          Gets the attribute identifier set at configuration time for this index which may not be the OID but an alias name for the attributeType associated with this Index
 int getCacheSize()
          Gets the size of the index cache in terms of the number of index entries to be cached.
 K getNormalized(K attrVal)
          Gets the normalized value for an attribute.
 URI getWkDirPath()
          Gets the working directory path to something other than the default.
 int greaterThanCount(K attrVal)
           
 boolean isDupsEnabled()
          tells whether the Index implementation supports storing duplicate keys
 int lessThanCount(K attrVal)
           
 boolean reverse(ID id)
           
 boolean reverse(ID id, K attrVal)
           
 IndexCursor<K,O,ID> reverseCursor()
           
 IndexCursor<K,O,ID> reverseCursor(ID id)
           
 boolean reverseGreaterOrEq(ID id)
           
 boolean reverseGreaterOrEq(ID id, K attrVal)
           
 boolean reverseLessOrEq(ID id)
           
 boolean reverseLessOrEq(ID id, K attrVal)
           
 K reverseLookup(ID id)
           
 org.apache.directory.shared.ldap.model.cursor.Cursor<K> reverseValueCursor(ID id)
           
 void setAttributeId(String attributeId)
          Sets the attribute identifier set at configuration time for this index which may not be the OID but an alias name for the attributeType associated with this Index
 void setCacheSize(int cacheSize)
          Sets the size of the index cache in terms of the number of index entries to be cached.
 void setWkDirPath(URI wkDirPath)
          Sets the working directory path to something other than the default.
 void sync()
           
 

Field Detail

DEFAULT_INDEX_CACHE_SIZE

static final int DEFAULT_INDEX_CACHE_SIZE
The default cache size (ie, the number of elements we stored in the cache)

See Also:
Constant Field Values
Method Detail

getAttributeId

String getAttributeId()
Gets the attribute identifier set at configuration time for this index which may not be the OID but an alias name for the attributeType associated with this Index

Returns:
configured attribute oid or alias name

setAttributeId

void setAttributeId(String attributeId)
Sets the attribute identifier set at configuration time for this index which may not be the OID but an alias name for the attributeType associated with this Index

Parameters:
attributeId - configured attribute oid or alias name

getCacheSize

int getCacheSize()
Gets the size of the index cache in terms of the number of index entries to be cached.

Returns:
the size of the index cache

setCacheSize

void setCacheSize(int cacheSize)
Sets the size of the index cache in terms of the number of index entries to be cached.

Parameters:
cacheSize - the size of the index cache

setWkDirPath

void setWkDirPath(URI wkDirPath)
Sets the working directory path to something other than the default. Sometimes more performance is gained by locating indices on separate disk spindles.

Parameters:
wkDirPath - optional working directory path

getWkDirPath

URI getWkDirPath()
Gets the working directory path to something other than the default. Sometimes more performance is gained by locating indices on separate disk spindles.

Returns:
optional working directory path

getAttribute

org.apache.directory.shared.ldap.model.schema.AttributeType getAttribute()
Gets the attribute this Index is built upon.

Returns:
the id of the Index's attribute

getNormalized

K getNormalized(K attrVal)
                throws Exception
Gets the normalized value for an attribute.

Parameters:
attrVal - the user provided value to normalize
Returns:
the normalized value.
Throws:
Exception - if something goes wrong.

count

int count()
          throws Exception
Gets the total scan count for this index.

Returns:
the number of key/value pairs in this index
Throws:
Exception - on failure to access index db files

count

int count(K attrVal)
          throws Exception
Gets the scan count for the occurrence of a specific attribute value within the index.

Parameters:
attrVal - the value of the attribute to get a scan count for
Returns:
the number of key/value pairs in this index with the value value
Throws:
Exception - on failure to access index db files

greaterThanCount

int greaterThanCount(K attrVal)
                     throws Exception
Throws:
Exception

lessThanCount

int lessThanCount(K attrVal)
                  throws Exception
Throws:
Exception

forwardLookup

ID forwardLookup(K attrVal)
                 throws Exception
Throws:
Exception

reverseLookup

K reverseLookup(ID id)
                throws Exception
Throws:
Exception

add

void add(K attrVal,
         ID id)
         throws Exception
Add an entry into the index, associated with the element ID. The added value is the key to retrieve the element having the given ID.

Parameters:
attrVal - The added value
id - The element ID pointed by the added value
Throws:
Exception - If the addition can't be done

drop

void drop(ID entryId)
          throws Exception
Remove all the reference to an entry from the index.
As an entry might be referenced more than once in the forward index, depending on which index we are dealing with, we need to iterate over all the values contained into the reverse index for this entryId.
For instance, considering the ObjectClass index for an entry having three ObjectClasses (top, person, inetOrgPerson), then the reverse index will contain :
 [entryId, [top, person, inetOrgPerson]]
 
and the forward index will contain many entries like :
 [top, [..., entryId, ...]]
 [person,  [..., entryId, ...]]
 [inetOrgPerson,  [..., entryId, ...]]
 
So dropping the entryId means that we must first get all the values from the reverse index (and we will get [top, person, inetOrgPerson]) then to iterate through all those values to remove entryId from the associated list of entryIds.

Parameters:
entryId - The master table entry ID to remove
Throws:
Exception

drop

void drop(K attrVal,
          ID id)
          throws Exception
Remove the pair from the index for the given value and id.

Parameters:
attrVal - The value we want to remove from the index
id - The associated ID
Throws:
Exception - If the removal can't be done

reverseCursor

IndexCursor<K,O,ID> reverseCursor()
                                  throws Exception
Throws:
Exception

forwardCursor

IndexCursor<K,O,ID> forwardCursor()
                                  throws Exception
Throws:
Exception

reverseCursor

IndexCursor<K,O,ID> reverseCursor(ID id)
                                  throws Exception
Throws:
Exception

forwardCursor

IndexCursor<K,O,ID> forwardCursor(K key)
                                  throws Exception
Throws:
Exception

reverseValueCursor

org.apache.directory.shared.ldap.model.cursor.Cursor<K> reverseValueCursor(ID id)
                                                                           throws Exception
Throws:
Exception

forwardValueCursor

org.apache.directory.shared.ldap.model.cursor.Cursor<ID> forwardValueCursor(K key)
                                                                            throws Exception
Throws:
Exception

forward

boolean forward(K attrVal)
                throws Exception
Throws:
Exception

forward

boolean forward(K attrVal,
                ID id)
                throws Exception
Throws:
Exception

reverse

boolean reverse(ID id)
                throws Exception
Throws:
Exception

reverse

boolean reverse(ID id,
                K attrVal)
                throws Exception
Throws:
Exception

forwardGreaterOrEq

boolean forwardGreaterOrEq(K attrVal)
                           throws Exception
Throws:
Exception

forwardGreaterOrEq

boolean forwardGreaterOrEq(K attrVal,
                           ID id)
                           throws Exception
Throws:
Exception

reverseGreaterOrEq

boolean reverseGreaterOrEq(ID id)
                           throws Exception
Throws:
Exception

reverseGreaterOrEq

boolean reverseGreaterOrEq(ID id,
                           K attrVal)
                           throws Exception
Throws:
Exception

forwardLessOrEq

boolean forwardLessOrEq(K attrVal)
                        throws Exception
Throws:
Exception

forwardLessOrEq

boolean forwardLessOrEq(K attrVal,
                        ID id)
                        throws Exception
Throws:
Exception

reverseLessOrEq

boolean reverseLessOrEq(ID id)
                        throws Exception
Throws:
Exception

reverseLessOrEq

boolean reverseLessOrEq(ID id,
                        K attrVal)
                        throws Exception
Throws:
Exception

close

void close()
           throws Exception
Throws:
Exception

sync

void sync()
          throws Exception
Throws:
Exception

isDupsEnabled

boolean isDupsEnabled()
tells whether the Index implementation supports storing duplicate keys

Returns:
true if duplicate keys are allowed false otherwise


Copyright © 2003-2012 The Apache Software Foundation. All Rights Reserved.