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
  • Field Details

  • Constructor Details

  • 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

      public void setElements​(O[] elements)
      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

      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 boolean addElement​(O element)
      Add an element only if it does not already exist
      Parameters:
      element - to add
      Returns:
      true if added
    • addElements

      public int 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.
      Parameters:
      elems - to add
      Returns:
      number added
    • 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 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

      public void setSortBy​(String id, Folder.SortOrder direction)
      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

      public String getCurrentSortBy()
      Since:
      0.9.13
    • getCurrentSortingDirection

      public Folder.SortOrder getCurrentSortingDirection()
      Since:
      0.9.13
    • 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 -
    • getPageOf

      public int getPageOf​(O element)
      Returns the page this element is on, using the current sort, or 1 if not found
      Parameters:
      element -
      Since:
      0.9.33