Class PagerHandler

  • All Implemented Interfaces:
    JcmsConstants, JaliosConstants

    public class PagerHandler
    extends JcmsContext
    This form handler process pager properties. It provides methods to retrieve common URLs needed to navigate using the pager. Unless really needed, you should prefer the use of the PagerTag inside your jsp rather than directly use this class. We use a compute method in order to be able for the PagerTag to provide the handler first even when the size/itemsNbr is not known yet.
    Version:
    $Revision: 135631 $
    Author:
    Olivier Jaquemet
    • Field Detail

      • PAGE_SIZES

        public static final int[] PAGE_SIZES
      • PAGER_ALL_LIMIT

        public static final int PAGER_ALL_LIMIT
      • DEFAULT_PAGE_SIZE

        public static final int DEFAULT_PAGE_SIZE
      • DEFAULT_SORT

        public static final java.lang.String DEFAULT_SORT
      • FORCED_PARAM_PREFIX

        public static final java.lang.String FORCED_PARAM_PREFIX
        Prefix of request attributes name to force values of : "pageSize", "sort", "reverse" (before pager creation) and "pagerAll", "start" (before computation).
        For example, before a call to the pager tag, you could force the start value to be at the index of a specific item (do not forget the paramPrefix). request.setAttribute(FORCED_PARAM_PREFIX + myPagerParamPrefix + "start", String.valueOf(myItemIdx));
        See Also:
        Constant Field Values
      • HANDLER_ATTRIBUTE

        public static final java.lang.String HANDLER_ATTRIBUTE
        Request attribute name to retrieve the PagerHandler instance in a pager template. PagerHandler handler = (PagerHandler) request.getAttribute(PagerHandler.HANDLER_ATTRIBUTE);
        See Also:
        Constant Field Values
      • TEMPLATE_NAME_ATTRIBUTE

        public static final java.lang.String TEMPLATE_NAME_ATTRIBUTE
        Request attribute name to retrieve the name of the pager template being processed. String template = (String) request.getAttribute(PagerHandler.TEMPLATE_NAME_ATTRIBUTE);
        See Also:
        Constant Field Values
    • Constructor Detail

      • PagerHandler

        public PagerHandler​(javax.servlet.http.HttpServletRequest request,
                            javax.servlet.http.HttpServletResponse response,
                            java.lang.String pParamPrefix,
                            int pDefaultPageSize,
                            java.lang.String pDefaultSort,
                            boolean pDefaultReverse,
                            int[] pPageSizes,
                            int pPagerAllLimit,
                            java.util.Map<java.lang.String,​java.lang.String> pParameterMap,
                            int[] pPagesDisplayed,
                            boolean pIsSizeAccurate)
        Build a new PagerHandler.
        Mainly used by the PagerTag.
        Parameters:
        request - the HttpServletRequest as needed by super class JcmsContext
        response - the HttpServletResponse as needed by super class JcmsContext
        pParamPrefix - an optional prefix to use for all pager parameters
        pDefaultPageSize - the default page size to use for this pager. Leave below 0 to use default value specified in "pager.default-page-size", 10.
        pDefaultSort - the default sort order to use, possible values are defined by all the comparator available through ComparatorManager. Leave empty to use default value specified in "pager.default-sort", "".
        pDefaultReverse - whether to reverse the sort (true) order or not (false).
        pPageSizes - the page sizes allowed for this pager, if null, the values specified in the property "pager.page-sizes" are used, {10, 20, 50}. If the default page size is not one of those, it is automatically added to possible page size.
        pPagerAllLimit - the maximum number of items above which the pager all link won't be displayed. Leave below 0 to use default value specified in "pager.pager-all-limit", 500.
        pParameterMap - an optional Map of parameters (String name/ String value) to be added/modified/removed to every URLs generated by this pager. For example, { "openTab" ==> "2", "highlight" ==> "hello world" }.
        pPagesDisplayed - maximum number of page links to display :
        • before current page, pPagesDisplayed[0] (default is 2)
        • after current page, pPagesDisplayed[1] (default is 2)
        pIsSizeAccurate - indicates if the size is accurate.
    • Method Detail

      • compute

        public void compute​(int pItemsNbr)
        Do the computation for this Pager Handler
        Parameters:
        pItemsNbr - the number of items in the pager
      • isComputed

        public boolean isComputed()
        Returns:
        true if the computation for this PagerHandler has been done
        See Also:
        compute(int)
      • setResourcePath

        public void setResourcePath​(java.lang.String resourcePath)
        Sets the resourcePath to use in the url instead of using the current request resource path (default is null).
        Parameters:
        resourcePath - the resource path that will be used in all url, can be empty, but if null, the resourcePath of current request will be used.
        Throws:
        java.lang.IllegalStateException - if this method is called AFTER all parameters have been set
      • setLinkCss

        public void setLinkCss​(java.lang.String css)
        Sets the css to use in links (default is empty).
        Parameters:
        css - a string of classnames to be used in pager links, e.g. "ajax-refresh pager-link"
      • getLinkCss

        public java.lang.String getLinkCss()
        Sets the css to use in links (default is empty).
        Returns:
        the string of classnames to be used in pager links, e.g. "ajax-refresh pager-link"
      • getSortURL

        public java.lang.String getSortURL​(java.lang.String pSort)
        Return an URL to sort with given sort order. If given sort order is the one currently used, the link will be the opposite order of the current one, otherwise we use the default sort order
        Parameters:
        pSort - the sort order to use (usually a comparator name as available through ComparatorManager).
        Returns:
        a relative URL to sort with given sort order.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getSortURL

        public java.lang.String getSortURL​(java.lang.String pSort,
                                           boolean pReverse)
        This method CANNOT be called as long as the computation is not done.
        Parameters:
        pSort - the sort order to use (usually a comparator name as available through ComparatorManager).
        pReverse - whether the sort order should be ascending or descending
        Returns:
        an URL to sort with given sort and reverse order.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printSortLink

        public void printSortLink​(javax.servlet.jsp.JspWriter out,
                                  java.lang.String pSort,
                                  java.lang.String pTitleProp)
                           throws java.io.IOException
        Print a link to sort with given sort order. If given sort order is the one currently used, the link will be the reverse order.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        pSort - the sort order to use, must not be empty (usually a comparator name as available through ComparatorManager)
        pTitleProp - an optional I18N string to be used in the generated A tag (<a>{glp(pTitleProp)}</a>)
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalArgumentException - if pSort is null or empty
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getFirstLinkURL

        public java.lang.String getFirstLinkURL()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        an URL to show the First page.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printFirstLink

        public void printFirstLink​(javax.servlet.jsp.JspWriter out)
                            throws java.io.IOException
        Print on the given JspWriter a link to show the First page. unless we are already on the first page in case we just print the text of the link. This method CANNOT be called as long as the computation is not done.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getPreviousLinkURL

        public java.lang.String getPreviousLinkURL()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        an URL to show the Previous page.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printPreviousLink

        public void printPreviousLink​(javax.servlet.jsp.JspWriter out)
                               throws java.io.IOException
        Print a link to navigate to the previous page. This method CANNOT be called as long as the computation is not done.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getPageLinkURL

        public java.lang.String getPageLinkURL​(int pageIdx)
        This method CANNOT be called as long as the computation is not done.
        Parameters:
        pageIdx - a new page index to navigate to, with 1 <= pageIdx <= pagesNbr
        Returns:
        an URL to show the given page idx.
        Throws:
        java.lang.IllegalArgumentException - if pageIdx does not match the requirements 1 <= pageIdx <= pagesNbr
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printPagesLinks

        public void printPagesLinks​(javax.servlet.jsp.JspWriter out)
                             throws java.io.IOException
        Print a list of links for current accessible pages to the given output. This method CANNOT be called as long as the computation is not done.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getNextLinkURL

        public java.lang.String getNextLinkURL()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        an URL to show the Next page.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printNextLink

        public void printNextLink​(javax.servlet.jsp.JspWriter out)
                           throws java.io.IOException
        Print a link to navigate to the next page. This method CANNOT be called as long as the computation is not done.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getLastLinkURL

        public java.lang.String getLastLinkURL()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        an URL to show the Last page.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printLastLink

        public void printLastLink​(javax.servlet.jsp.JspWriter out)
                           throws java.io.IOException
        Print a link to navigate to the Last Page. This method CANNOT be called as long as the computation is not done.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getShowPageSizeURL

        public java.lang.String getShowPageSizeURL​(int pPageSize)
        This method CANNOT be called as long as the computation is not done.
        Parameters:
        pPageSize - a new valid page size to use for the link
        Returns:
        an URL to show the pager with the given page size (must be a valid page size as specified in property pager.page-sizes).
        Throws:
        java.lang.IllegalArgumentException - if pPageSize is not a valide page size for this pager
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printShowPageSizesLink

        public boolean printShowPageSizesLink​(javax.servlet.jsp.JspWriter out)
                                       throws java.io.IOException
        Print a list of links for changing the current page size (must be a valid page size as specified in property pager.page-sizes). This method CANNOT be called as long as the computation is not done.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        Returns:
        false if there is juste one page to display and therefore nothing was printed, true otherwise (something was printed)
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getPagerAllURL

        public java.lang.String getPagerAllURL()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        an URL to show the pager in pager all mode (only if items nbr is allowed by pager and by property pager.show-all-limit).
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printPagerAllLink

        public void printPagerAllLink​(javax.servlet.jsp.JspWriter out)
                               throws java.io.IOException
        Print a "Pager All" link to the given output (only if items nbr is allowed by property pager.show-all-limit). This method CANNOT be called as long as the computation is not done.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getShowPagerURL

        public java.lang.String getShowPagerURL()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        an URL to show the pager when hidden (opposite of pager all mode).
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printShowPagerLink

        public void printShowPagerLink​(javax.servlet.jsp.JspWriter out)
                                throws java.io.IOException
        Print a "Show Pager" link to the given output. This method CANNOT be called as long as the computation is not done.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • printAllPager

        public void printAllPager​(javax.servlet.jsp.JspWriter out)
                           throws java.io.IOException
        Print a complete pager to the given output. This method CANNOT be called as long as the computation is not done.
        Parameters:
        out - the JspWriter to use for printing, must not be null.
        Throws:
        java.io.IOException - if an error occured when printing to specified JspWriter
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • display

        public void display​(javax.servlet.jsp.PageContext pageContext,
                            java.lang.String template)
                     throws javax.servlet.ServletException,
                            java.io.IOException
        Display the pager using the specified template.
        This method CANNOT be called as long as the computation is not done.
        Parameters:
        pageContext - the Jsp PageContext for which the page is being displayed
        template - the template name (retrieved using property pager.template.{templateName}: /path/to.jsp
        Throws:
        javax.servlet.ServletException - if an error occurs
        java.io.IOException - if an error occurs
        java.lang.IllegalArgumentException - if the specified template does not exists
        Since:
        jcms-6.0
      • getSort

        public java.lang.String getSort()
        This method can be called when the computation has not yet been done.
        Returns:
        the current sort order as a string
      • isReverse

        public boolean isReverse()
        This method can be called when the computation has not yet been done.
        Returns:
        true if the current sort order is reversed, false otherwise
      • getPageSize

        public int getPageSize()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        the page size of the pager, return itemsNbr if in pager all mode
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getPageSizes

        public int[] getPageSizes()
        Retrieves the page sizes to be displayed for this pager.
        This method CANNOT be called as long as the computation is not done.
        Returns:
        an array of page size.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
        Since:
        jcms-6.0
      • canShowPagerAll

        public boolean canShowPagerAll()
        Check if the pager all link can be displayed.
        This method CANNOT be called as long as the computation is not done.
        Returns:
        true if the items nbr is below the pager all limit, false otherwise.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
        Since:
        jcms-6.0
      • isPagerAll

        public boolean isPagerAll()
        Checks if this pager is in pager all mode.
        This method CANNOT be called as long as the computation is not done.
        Returns:
        true if the pager is in pager all mode AND items nbr is below the pager all limit, false otherwise.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getStart

        public int getStart()
        Retrieves the start item idx of the pager.
        This method CANNOT be called as long as the computation is not done.
        Returns:
        the start item idx of the pager (always >= 0 and < itemNbr), return 0 if in pager all mode
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getItemsNbr

        public int getItemsNbr()
        Retrieves the number of items managed by this pager.
        This method CANNOT be called as long as the computation is not done.
        Returns:
        the number of items managed by this pager.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getPageItemsNbr

        public int getPageItemsNbr()
        Retrieves the number of items displayed in current page.
        This method CANNOT be called as long as the computation is not done.
        Returns:
        the number of items displayed in current page.
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
        Since:
        jcms-9.0.1
      • getPagesNbr

        public int getPagesNbr()
        Retrieves the total number of pages of this pager .
        This method CANNOT be called as long as the computation is not done.
        Returns:
        the total number of pages (1 if we are in pager all mode)
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getCurrentPage

        public int getCurrentPage()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        the current page number (from 1 to pages nbr) (1 if we are in pager all mode)
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • isFirstPage

        public boolean isFirstPage()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        the true if the current page is the first one (always true when in pager all mode)
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • isLastPage

        public boolean isLastPage()
        This method CANNOT be called as long as the computation is not done.
        Returns:
        the true if the current page is the last one (always true when in pager all mode)
        Throws:
        java.lang.IllegalStateException - if this method is called before all parameters have been set
      • getPagesLinksStartNbr

        public int getPagesLinksStartNbr()
        Retrieves the number of the first page link to be displayed.
        This method CANNOT be called as long as the computation is not done.
        Returns:
        a page number
        Since:
        jcms-6.0
      • getPagesLinksNbrs

        public int[] getPagesLinksNbrs()
        Retrieves the page link numbers to be displayed.
        This method CANNOT be called as long as the computation is not done.
        Returns:
        an array of page number
        Since:
        jcms-6.0
      • getPagesLinksEndNbr

        public int getPagesLinksEndNbr()
        Retrieves the number of the last page link to be displayed.
        This method CANNOT be called as long as the computation is not done.
        Returns:
        a page number
        Since:
        jcms-6.0
      • getShowFirstLink

        public boolean getShowFirstLink()
      • setShowFirstLink

        public void setShowFirstLink​(boolean showFirstLink)
      • getShowLastLink

        public boolean getShowLastLink()
      • setShowLastLink

        public void setShowLastLink​(boolean showLastLink)
      • isSizeAccurate

        public boolean isSizeAccurate()
      • setSizeAccurate

        public void setSizeAccurate​(boolean isSizeAccurate)
      • clearSessionParams

        public void clearSessionParams()
        Clear all session parameters of this pager, if the paramPrefix specified is a portlet action param (starts with PortalManager.PORTAL_ACTION).

        Invoking this method will therefore reset the parameters and next request for the same pager (parameter prefix) will not have memorized the pager options (sorting/paging).

        Since:
        jcms-7.0.0
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object