Package i2p.susi.util
Class Folder<O>
java.lang.Object
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 setSortBy() and
and then fetch the content of the current page with
currentPageIterator().
All public methods are synchronized.
- Author:
- susi
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Folder.SortOrder
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_PAGESIZE
static String
PAGESIZE
-
Constructor Summary
Constructors Constructor Description Folder()
-
Method Summary
Modifier and Type Method Description boolean
addElement(O element)
Add an element only if it does not already existint
addElements(List<O> elems)
Add elements only if they do not already exist Re-sorts the array if a sorter is set and any elements are actually added.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
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
getPageOf(O element)
Returns the page this element is on, using the current sort, or 1 if not foundint
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 elementvoid
removeElements(Collection<O> elems)
Remove elementsvoid
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
setSortBy(String id, Folder.SortOrder direction)
Activates sorting by the choosen Comparator.void
sort()
Sorts the elements according the order given by @link addSorter() and @link setSortBy().
-
Field Details
-
PAGESIZE
- See Also:
- Constant Field Values
-
DEFAULT_PAGESIZE
public static final int DEFAULT_PAGESIZE- See Also:
- Constant Field Values
-
-
Constructor Details
-
Folder
public Folder()
-
-
Method Details
-
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.
-
sort
public void sort()Sorts the elements according the order given by @link addSorter() and @link setSortBy().- Since:
- public since 0.9.33
-
setElements
Set the array of objects the folder should manage. Does NOT copy the array. Sorts the array if a sorter set.- Parameters:
elements
- Array of Os.
-
removeElement
Remove an element- Parameters:
element
- to remove
-
removeElements
Remove elements- Parameters:
elems
- to remove
-
addElement
Add an element only if it does not already exist- Parameters:
element
- to add- Returns:
- true if added
-
addElements
Add elements only if they do not already exist Re-sorts the array if a sorter is set and any elements are actually added.- Parameters:
elems
- to add- Returns:
- number added
-
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
Adds a new sorter to the folder. You can sort the folder by calling setSortBy() and choose the given id there.- Parameters:
id
- ID to identify the Comparator with @link setSortBy()sorter
- a Comparator to sort the Array given by @link setElements()
-
setSortBy
Activates sorting by the choosen Comparator. The id must match the one, which the Comparator has been stored in the folder with @link addSorter(). Sets the sorting direction of the folder. Warning, this does not do the actual sort, only addElements() and setElements() does a sort.- Parameters:
id
- ID to identify the Comparator stored with @link addSorter()direction
- UP or DOWN. UP is reverse sort.
-
getCurrentSortBy
- Since:
- 0.9.13
-
getCurrentSortingDirection
- Since:
- 0.9.13
-
getFirstElement
Returns the first element of the sorted folder.- Returns:
- First element.
-
getLastElement
Returns the last element of the sorted folder.- Returns:
- Last element.
-
getNextElement
Retrieves the next element in the sorted array.- Parameters:
element
-- Returns:
- The next element
-
getPreviousElement
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
Returns true, if elements.equals( lastElementOfTheSortedArray ).- Parameters:
element
-
-
isFirstElement
Returns true, if elements.equals( firstElementOfTheSortedArray ).- Parameters:
element
-
-
getPageOf
Returns the page this element is on, using the current sort, or 1 if not found- Parameters:
element
-- Since:
- 0.9.33
-