Package i2p.susi.util

Class 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
    • 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.
      • 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