Class ListCursor<E>
- java.lang.Object
-
- org.apache.directory.api.ldap.model.cursor.AbstractCursor<E>
-
- org.apache.directory.api.ldap.model.cursor.ListCursor<E>
-
- Type Parameters:
E
- The element on which this cursor will iterate
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Iterable<E>
,Cursor<E>
public class ListCursor<E> extends AbstractCursor<E>
A simple implementation of a Cursor on aList
. Optionally, the Cursor may be limited to a specific range within the list.- Author:
- Apache Directory Project
-
-
Constructor Summary
Constructors Constructor Description ListCursor()
Creates a new ListCursor without any elements.ListCursor(int start, List<E> list)
Creates a new ListCursor with a lower (inclusive) bound: the upper (exclusive) bound is the size of the list.ListCursor(int start, List<E> list, int end)
Creates a new ListCursor with lower (inclusive) and upper (exclusive) bounds.ListCursor(Comparator<E> comparator)
Creates a new ListCursor without any elements.ListCursor(Comparator<E> comparator, int start, List<E> list)
Creates a new ListCursor with a lower (inclusive) bound: the upper (exclusive) bound is the size of the list.ListCursor(Comparator<E> comparator, int start, List<E> list, int end)
Creates a new ListCursor with lower (inclusive) and upper (exclusive) bounds.ListCursor(Comparator<E> comparator, List<E> list)
Creates a new ListCursor without specific bounds: the bounds are acquired from the size of the list.ListCursor(Comparator<E> comparator, List<E> list, int end)
Creates a new ListCursor with a specific upper (exclusive) bound: the lower (inclusive) bound defaults to 0.ListCursor(List<E> list)
Creates a new ListCursor without specific bounds: the bounds are acquired from the size of the list.ListCursor(List<E> list, int end)
Creates a new ListCursor with a specific upper (exclusive) bound: the lower (inclusive) bound defaults to 0.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 Cursor 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 Cursor before the first element.void
close()
void
close(Exception cause)
Closes this Cursor and frees any resources it my have allocated.boolean
first()
Positions this Cursor at the first element.E
get()
Gets the object at the current position.boolean
isAfterLast()
Is this Cursor positioned after the last element.boolean
isBeforeFirst()
Is this Cursor positioned before the first element.boolean
isFirst()
Is this Cursor positioned at the first element.boolean
isLast()
Is this Cursor positioned at the last element.boolean
last()
Positions this Cursor at the last element.boolean
next()
Advances this Cursor to the next position.boolean
previous()
Advances this Cursor to the previous position.-
Methods inherited from class org.apache.directory.api.ldap.model.cursor.AbstractCursor
checkNotClosed, isClosed, iterator, setClosureMonitor, toString
-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
ListCursor
public ListCursor(Comparator<E> comparator, int start, List<E> list, int end)
Creates a new ListCursor with lower (inclusive) and upper (exclusive) bounds. As with all Cursors, this ListCursor requires a successful return from advance operations (next() or previous()) to properly return values using the get() operation.- Parameters:
comparator
- an optional comparator to use for orderingstart
- the lower bound indexlist
- the list this ListCursor operates onend
- the upper bound index
-
ListCursor
public ListCursor(int start, List<E> list, int end)
Creates a new ListCursor with lower (inclusive) and upper (exclusive) bounds. As with all Cursors, this ListCursor requires a successful return from advance operations (next() or previous()) to properly return values using the get() operation.- Parameters:
start
- the lower bound indexlist
- the list this ListCursor operates onend
- the upper bound index
-
ListCursor
public ListCursor(List<E> list, int end)
Creates a new ListCursor with a specific upper (exclusive) bound: the lower (inclusive) bound defaults to 0.- Parameters:
list
- the backing for this ListCursorend
- the upper bound index representing the position after the last element
-
ListCursor
public ListCursor(Comparator<E> comparator, List<E> list, int end)
Creates a new ListCursor with a specific upper (exclusive) bound: the lower (inclusive) bound defaults to 0. We also provide a comparator.- Parameters:
comparator
- The comparator to use for the <E> elementslist
- the backing for this ListCursorend
- the upper bound index representing the position after the last element
-
ListCursor
public ListCursor(int start, List<E> list)
Creates a new ListCursor with a lower (inclusive) bound: the upper (exclusive) bound is the size of the list.- Parameters:
start
- the lower (inclusive) bound index: the position of the first entrylist
- the backing for this ListCursor
-
ListCursor
public ListCursor(Comparator<E> comparator, int start, List<E> list)
Creates a new ListCursor with a lower (inclusive) bound: the upper (exclusive) bound is the size of the list. We also provide a comparator.- Parameters:
comparator
- The comparator to use for the <E> elementsstart
- the lower (inclusive) bound index: the position of the first entrylist
- the backing for this ListCursor
-
ListCursor
public ListCursor(List<E> list)
Creates a new ListCursor without specific bounds: the bounds are acquired from the size of the list.- Parameters:
list
- the backing for this ListCursor
-
ListCursor
public ListCursor(Comparator<E> comparator, List<E> list)
Creates a new ListCursor without specific bounds: the bounds are acquired from the size of the list. We also provide a comparator.- Parameters:
comparator
- The comparator to use for the <E> elementslist
- the backing for this ListCursor
-
ListCursor
public ListCursor()
Creates a new ListCursor without any elements.
-
ListCursor
public ListCursor(Comparator<E> comparator)
Creates a new ListCursor without any elements. We also provide a comparator.- Parameters:
comparator
- The comparator to use for the <E> elements
-
-
Method Detail
-
available
public boolean available()
Determines whether or not a call to get() will succeed.- Returns:
- true if a call to the get() method will succeed, false otherwise
-
before
public void before(E element) throws LdapException, CursorException
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:
LdapException
- if we have get any LDAP exception while operating the cursorCursorException
- if there are problems advancing to this Cursor before the given element, or if this Cursor is closed
-
after
public void after(E element) throws LdapException, CursorException
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:
LdapException
- if we have get any LDAP exception while operating the cursorCursorException
- if there are problems advancing to this Cursor after the given element, or if this Cursor is closed
-
beforeFirst
public void beforeFirst() throws LdapException, CursorException
Positions this Cursor before the first element.- Throws:
LdapException
- if we have get any LDAP exception while operating the cursorCursorException
- if there are problems advancing to this Cursor before the first position, or if this Cursor is closed
-
afterLast
public void afterLast() throws LdapException, CursorException
Positions this Cursor after the last element.- Throws:
LdapException
- if we have get any LDAP exception while operating the cursorCursorException
- if there are problems advancing to this Cursor after the last position, or if this Cursor is closed
-
first
public boolean first() throws LdapException, CursorException
Positions this Cursor at the first element.- Returns:
- true if the position has been successfully changed to the first element, false otherwise
- Throws:
LdapException
- if we have get any LDAP exception while operating the cursorCursorException
- if there are problems advancing to this Cursor to the first position, or if this Cursor is closed
-
last
public boolean last() throws LdapException, CursorException
Positions this Cursor at the last element.- Returns:
- true if the position has been successfully changed to the last element, false otherwise
- Throws:
LdapException
- if we have get any LDAP exception while operating the cursorCursorException
- if there are problems advancing to this Cursor to the last position, or if this Cursor is closed
-
isFirst
public boolean isFirst()
Is this Cursor positioned at the first element.
-
isLast
public boolean isLast()
Is this Cursor positioned at the last element.
-
isAfterLast
public boolean isAfterLast()
Is this Cursor positioned after the last element.- Specified by:
isAfterLast
in interfaceCursor<E>
- Overrides:
isAfterLast
in classAbstractCursor<E>
- Returns:
- true if this cursor is positioned after the last element, false otherwise
-
isBeforeFirst
public boolean isBeforeFirst()
Is this Cursor positioned before the first element.- Specified by:
isBeforeFirst
in interfaceCursor<E>
- Overrides:
isBeforeFirst
in classAbstractCursor<E>
- Returns:
- true if this cursor is positioned before the first element, false otherwise
-
previous
public boolean previous() throws LdapException, CursorException
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:
LdapException
- if we have get any LDAP exception while operating the cursorCursorException
- if there are problems advancing to this Cursor to the previous position, or if this Cursor is closed
-
next
public boolean next() throws LdapException, CursorException
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:
LdapException
- if we have get any LDAP exception while operating the cursorCursorException
- if there are problems advancing to this Cursor to the next position, or if this Cursor is closed
-
get
public E get() throws CursorException
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:
CursorException
- if the object at this Cursor's current position cannot be retrieved, or if this Cursor is closed
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classAbstractCursor<E>
- Throws:
IOException
-
close
public void close(Exception cause) throws IOException
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.- Specified by:
close
in interfaceCursor<E>
- Overrides:
close
in classAbstractCursor<E>
- Parameters:
cause
- exception thrown when this Cursor is accessed after close- Throws:
IOException
- If we can't close the Cursor
-
-