i2p.susi.util
Class Folder<O>

java.lang.Object
  extended by i2p.susi.util.Folder<O>

public class Folder<O>
extends Object

Folder object manages a array Object[] to support paging and sorting. You create a folder object, set the contents with setElements(), add Comparators with addSorter(), choose one with sortBy() and and then fetch the content of the current page with currentPageIterator(). All public methods are synchronized.

Author:
susi

Nested Class Summary
static class Folder.SortOrder
           
 
Field Summary
static int DEFAULT_PAGESIZE
           
static String PAGESIZE
           
 
Constructor Summary
Folder()
           
 
Method Summary
 void addElement(O element)
          Add an element only if it does not already exist
 void addElements(Collection<O> elems)
          Add elements only if it they do not already exist
 void addSorter(String id, Comparator<O> sorter)
          Adds a new sorter to the folder.
 Iterator<O> currentPageIterator()
          Returns an iterator containing the elements on the current page.
 void firstPage()
          Sets folder to display first page.
 int getCurrentPage()
          Returns the current page.
 String getCurrentSortBy()
           
 Folder.SortOrder getCurrentSortingDirection()
           
 O getElementAtPosXonCurrentPage(int x)
          Returns the element on the current page on the given position.
 O getFirstElement()
          Returns the first element of the sorted folder.
 O getLastElement()
          Returns the last element of the sorted folder.
 O getNextElement(O element)
          Retrieves the next element in the sorted array.
 int getPages()
          Returns the number of pages in the folder.
 int getPageSize()
          Returns page size.
 O getPreviousElement(O element)
          Retrieves the previous element in the sorted array.
 int getSize()
          Returns the size of the folder.
 boolean isFirstElement(O element)
          Returns true, if elements.equals( firstElementOfTheSortedArray ).
 boolean isFirstPage()
          Returns true, if folder shows points to the first page.
 boolean isLastElement(O element)
          Returns true, if elements.equals( lastElementOfTheSortedArray ).
 boolean isLastPage()
          Returns true, if folder shows points to the last page.
 void lastPage()
          Sets folder to display last page.
 void nextPage()
          Turns folder to next page.
 void previousPage()
          Turns folder to previous page.
 void removeElement(O element)
          Remove an element
 void removeElements(Collection<O> elems)
          Remove elements
 void setCurrentPage(int currentPage)
          Sets the current page to the given parameter.
 void setElements(O[] elements)
          Set the array of objects the folder should manage.
 void setPageSize(int pageSize)
          Set page size.
 void setSortingDirection(Folder.SortOrder direction)
          Sets the sorting direction of the folder.
 void sortBy(String id)
          Activates sorting by the choosen Comparator.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PAGESIZE

public static final String PAGESIZE
See Also:
Constant Field Values

DEFAULT_PAGESIZE

public static final int DEFAULT_PAGESIZE
See Also:
Constant Field Values
Constructor Detail

Folder

public Folder()
Method Detail

getCurrentPage

public int getCurrentPage()
Returns the current page. Starts at 1, even if empty.

Returns:
Returns the current page.

setCurrentPage

public void setCurrentPage(int currentPage)
Sets the current page to the given parameter. Starts at 1.

Parameters:
currentPage - The current page to set.

getSize

public int getSize()
Returns the size of the folder.

Returns:
Returns the size of the folder.

getPages

public int getPages()
Returns the number of pages in the folder. Minimum of 1 even if empty.

Returns:
Returns the number of pages.

getPageSize

public int getPageSize()
Returns page size. If no page size has been set, it returns property @link PAGESIZE. If no property is set @link DEFAULT_PAGESIZE is returned.

Returns:
Returns the pageSize.

setPageSize

public void setPageSize(int pageSize)
Set page size.

Parameters:
pageSize - The page size to set.

setElements

public void setElements(O[] elements)
Set the array of objects the folder should manage. Does NOT copy the array.

Parameters:
elements - Array of Os.

removeElement

public void removeElement(O element)
Remove an element

Parameters:
element - to remove

removeElements

public void removeElements(Collection<O> elems)
Remove elements

Parameters:
elems - to remove

addElement

public void addElement(O element)
Add an element only if it does not already exist

Parameters:
element - to add

addElements

public void addElements(Collection<O> elems)
Add elements only if it they do not already exist

Parameters:
elems - to adde

currentPageIterator

public Iterator<O> currentPageIterator()
Returns an iterator containing the elements on the current page. This iterator is over a copy of the current page, and so is thread safe w.r.t. other operations on this folder, but will not reflect subsequent changes, and iter.remove() will not change the folder.

Returns:
Iterator containing the elements on the current page.

nextPage

public void nextPage()
Turns folder to next page.


previousPage

public void previousPage()
Turns folder to previous page.


firstPage

public void firstPage()
Sets folder to display first page.


lastPage

public void lastPage()
Sets folder to display last page.


addSorter

public void addSorter(String id,
                      Comparator<O> sorter)
Adds a new sorter to the folder. You can sort the folder by calling sortBy() and choose the given id there.

Parameters:
id - ID to identify the Comparator with @link sortBy()
sorter - a Comparator to sort the Array given by @link setElements()

sortBy

public void sortBy(String id)
Activates sorting by the choosen Comparator. The id must match the one, which the Comparator has been stored in the folder with @link addSorter().

Parameters:
id - ID to identify the Comparator stored with @link addSorter()

getCurrentSortBy

public String getCurrentSortBy()
Since:
0.9.13

getCurrentSortingDirection

public Folder.SortOrder getCurrentSortingDirection()
Since:
0.9.13

getElementAtPosXonCurrentPage

public O getElementAtPosXonCurrentPage(int x)
Returns the element on the current page on the given position.

Parameters:
x - Position of the element on the current page.
Returns:
Element on the current page on the given position.

setSortingDirection

public void setSortingDirection(Folder.SortOrder direction)
Sets the sorting direction of the folder. Does not re-sort. Caller must call sortBy()

Parameters:
direction - @link UP or @link DOWN

getFirstElement

public O getFirstElement()
Returns the first element of the sorted folder.

Returns:
First element.

getLastElement

public O getLastElement()
Returns the last element of the sorted folder.

Returns:
Last element.

getNextElement

public O getNextElement(O element)
Retrieves the next element in the sorted array.

Parameters:
element -
Returns:
The next element

getPreviousElement

public O getPreviousElement(O element)
Retrieves the previous element in the sorted array.

Parameters:
element -
Returns:
The previous element

isLastPage

public boolean isLastPage()
Returns true, if folder shows points to the last page.


isFirstPage

public boolean isFirstPage()
Returns true, if folder shows points to the first page.


isLastElement

public boolean isLastElement(O element)
Returns true, if elements.equals( lastElementOfTheSortedArray ).

Parameters:
element -

isFirstElement

public boolean isFirstElement(O element)
Returns true, if elements.equals( firstElementOfTheSortedArray ).

Parameters:
element -