org.apache.directory.server.core.cursor
Interface Cursor<E>

All Superinterfaces:
java.lang.Iterable<E>
All Known Subinterfaces:
EntryFilteringCursor, IndexCursor<V,E>, TupleCursor<K,V>
All Known Implementing Classes:
AbstractCursor, AbstractIndexCursor, AbstractTupleCursor, AllEntriesCursor, AndCursor, ApproximateCursor, AvlTreeCursor, BaseEntryFilteringCursor, DupsContainerCursor, EmptyCursor, EmptyIndexCursor, EqualityCursor, GreaterEqCursor, IndexCursorAdaptor, IteratorCursor, KeyBTreeCursor, KeyTupleAvlCursor, KeyTupleBTreeCursor, LessEqCursor, ListCursor, NotCursor, OneLevelScopeCursor, OrCursor, PresenceCursor, ServerEntryCursorAdaptor, SingletonCursor, SingletonIndexCursor, SubstringCursor, SubtreeScopeCursor, ValueArrayCursor

public interface Cursor<E>
extends java.lang.Iterable<E>

A Cursor for bidirectional traversal over elements in a dataset. Cursors unlike Iterators or Enumerations may advance to an element by calling next() or previous() which returns true or false if the request succeeds with a viable element at the new position. Operations for relative positioning in larger increments are provided. If the cursor can not advance, then the Cursor is either positioned before the first element or after the last element in which case the user of the Cursor must stop advancing in the respective direction. If an advance succeeds a get() operation retreives the current object at the Cursors position. Although this interface presumes Cursors can advance bidirectionally, implementations may restrict this by throwing UnsupportedOperationExceptions.

Version:
$Rev$, $Date$
Author:
Apache Directory Project

Method Summary
 void after(E element)
          Prepares this Cursor, so a subsequent call to Cursor#previous() with a true return value, will have positioned the Cursor on a dataset element equal to or less than the element argument but not greater.
 void afterLast()
          Positions this Curser after the last element.
 boolean available()
          Determines whether or not a call to get() will succeed.
 void before(E element)
          Prepares this Cursor, so a subsequent call to Cursor#next() with a true return value, will have positioned the Cursor on a dataset element equal to or less than the element argument but not greater.
 void beforeFirst()
          Positions this Curser before the first element.
 void close()
          Closes this Cursor and frees any resources it my have allocated.
 void close(java.lang.Exception reason)
          Closes this Cursor and frees any resources it my have allocated.
 boolean first()
          Positions this Curser at the first element.
 E get()
          Gets the object at the current position.
 boolean isClosed()
          Checks if this Curser is closed.
 boolean isElementReused()
          Gets whether or not this Cursor will return the same element object instance on get() operations for any position of this Cursor.
 boolean last()
          Positions this Curser at the last element.
 boolean next()
          Advances this Cursor to the next position.
 boolean previous()
          Advances this Cursor to the previous position.
 void setClosureMonitor(ClosureMonitor monitor)
          Sets a non-null closure monitor to associate with this Cursor.
 
Methods inherited from interface java.lang.Iterable
iterator
 

Method Detail

available

boolean available()
Determines whether or not a call to get() will succeed.

Returns:
true if the cursor is valid get() will succeed, false otherwise

before

void before(E element)
            throws java.lang.Exception
Prepares this Cursor, so a subsequent call to Cursor#next() with a true return value, will have positioned the Cursor on a dataset element equal to or less than the element argument but not greater. A call to Cursor#previous() with a true return value will position the Cursor on a dataset element less than the argument. If Cursor#next() returns false then the Cursor is past the last element and so all values in the dataset are less than the argument. If Cursor#previous() returns false then the Cursor is positioned before the first element and all elements in the dataset are greater than the argument.

Parameters:
element - the element to be positioned before
Throws:
java.lang.Exception - with problems accessing the underlying btree
java.lang.UnsupportedOperationException - if this method is not supported

after

void after(E element)
           throws java.lang.Exception
Prepares this Cursor, so a subsequent call to Cursor#previous() with a true return value, will have positioned the Cursor on a dataset element equal to or less than the element argument but not greater. A call to Cursor#next() with a true return value will position the Cursor on a dataset element greater than the argument. If Cursor#next() returns false then the Cursor is past the last element and so all values in the dataset are less than or equal to the argument. If Cursor#previous() returns false then the Cursor is positioned before the first element and all elements in the dataset are greater than the argument.

Parameters:
element - the element to be positioned after
Throws:
java.lang.Exception - if there are problems positioning this cursor or if this Cursor is closed
java.lang.UnsupportedOperationException - if this method is not supported

beforeFirst

void beforeFirst()
                 throws java.lang.Exception
Positions this Curser before the first element.

Throws:
java.lang.Exception - if there are problems positioning this cursor or if this Cursor is closed
java.lang.UnsupportedOperationException - if this method is not supported

afterLast

void afterLast()
               throws java.lang.Exception
Positions this Curser after the last element.

Throws:
java.lang.Exception - if there are problems positioning this Cursor or if this Cursor is closed
java.lang.UnsupportedOperationException - if this method is not supported

first

boolean first()
              throws java.lang.Exception
Positions this Curser at the first element.

Returns:
true if the position has been successfully changed to the first element, false otherwise
Throws:
java.lang.Exception - if there are problems positioning this Cursor or if this Cursor is closed
java.lang.UnsupportedOperationException - if this method is not supported

last

boolean last()
             throws java.lang.Exception
Positions this Curser at the last element.

Returns:
true if the position has been successfully changed to the last element, false otherwise
Throws:
java.lang.Exception - if there are problems positioning this Cursor or if this Cursor is closed
java.lang.UnsupportedOperationException - if this method is not supported

isClosed

boolean isClosed()
                 throws java.lang.Exception
Checks if this Curser is closed. Calls to this operation should not fail with exceptions if and only if the cursor is in the closed state.

Returns:
true if this Cursor is closed, false otherwise
Throws:
java.lang.Exception - if there are problems determining the cursor's closed state
java.lang.UnsupportedOperationException - if this method is not supported

previous

boolean previous()
                 throws java.lang.Exception
Advances this Cursor to the previous position. If called before explicitly positioning this Cursor, the position is presumed to be after the last element and this method moves the cursor back to the last element.

Returns:
true if the advance succeeded, false otherwise
Throws:
java.lang.Exception - if there are problems advancing to the next position
java.lang.UnsupportedOperationException - if this method is not supported

next

boolean next()
             throws java.lang.Exception
Advances this Cursor to the next position. If called before explicitly positioning this Cursor, the position is presumed to be before the first element and this method moves the cursor forward to the first element.

Returns:
true if the advance succeeded, false otherwise
Throws:
java.lang.Exception - if there are problems advancing to this Cursor to the next position, or if this Cursor is closed
java.lang.UnsupportedOperationException - if this method is not supported

get

E get()
      throws java.lang.Exception
Gets the object at the current position. Cursor implementations may choose to reuse element objects by re-populating them on advances instead of creating new objects on each advance.

Returns:
the object at the current position
Throws:
java.lang.Exception - if the object at this Cursor's current position cannot be retrieved, or if this Cursor is closed

isElementReused

boolean isElementReused()
Gets whether or not this Cursor will return the same element object instance on get() operations for any position of this Cursor. Some Cursor implementations may reuse the same element copying values into it for every position rather than creating and emiting new element objects on each advance. Some Cursor implementations may return different elements for each position yet the same element instance is returned for the same position. In these cases this method should return true.

Returns:
true if elements are reused by this Cursor

close

void close()
           throws java.lang.Exception
Closes this Cursor and frees any resources it my have allocated. Repeated calls to this method after this Cursor has already been called should not fail with exceptions.

Throws:
java.lang.Exception - if for some reason this Cursor could not be closed

close

void close(java.lang.Exception reason)
           throws java.lang.Exception
Closes this Cursor and frees any resources it my have allocated. Repeated calls to this method after this Cursor has already been called should not fail with exceptions. The reason argument is the Exception instance thrown instead of the standard CursorClosedException.

Parameters:
reason - exception thrown when this Cursor is accessed after close
Throws:
java.lang.Exception - if for some reason this Cursor could not be closed

setClosureMonitor

void setClosureMonitor(ClosureMonitor monitor)
Sets a non-null closure monitor to associate with this Cursor.

Parameters:
monitor - the monitor to use for detecting Cursor close events


Copyright © 2003-2009 Apache Software Foundation. All Rights Reserved.