[ 
https://jira.nuxeo.org/browse/NXP-5305?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Work on NXP-5305 started by Anahide Tchertchian.

> Upgrade results provider to add more features and handle any kind of objects
> ----------------------------------------------------------------------------
>
>                 Key: NXP-5305
>                 URL: https://jira.nuxeo.org/browse/NXP-5305
>             Project: Nuxeo Enterprise Platform
>          Issue Type: Sub-task
>          Components: Web Foundations
>            Reporter: Anahide Tchertchian
>            Assignee: Anahide Tchertchian
>             Fix For: 5.3.x
>
>
> The current result provider interface would need to be updated to:
> - handle other kinds of objects than DocumentModel instances
> - provide next/prev entry features (instead of just next/prev page features)
> - handle selection of elements, so that we do not need to create a
>  SelectDataModel instance when rendering a given page => provide additional
>  APIs like "List<SelectDataModelRow<T>> getCurrentPage()" ?
> New interface definition:
> /**
>  * Basic interface for a paged provider, independant of type of items in the
>  * list
>  * <p>
>  * Provides APIs to navigate between result pages
>  *
>  * @author arussel
>  * @author Anahide Tchertchian
>  *
>  * @param <T> any Serializable item
>  */
> public interface PagedListProvider<T extends Serializable> extends
> Serializable {
>    /**
>     * Constant to express that the total number of result elements is unknown.
>     */
>    long UNKNOWN_SIZE = -1;
>    /**
>     * Returns the provider identifier
>     */
>    String getName();
>    /**
>     * Sets the provider identifier
>     */
>    void setName(String name);
>    /**
>     * Returns the number of requested page size.
>     */
>    long getPageSize();
>    /**
>     * Returns the number of result elements if available or
>     * <code>UNKNOWN_SIZE</code> if it is unknown
>     */
>    long getResultsCount();
>    /**
>     * Returns the total number of pages
>     */
>    long getNumberOfPages();
>    /**
>     * Returns the current page of results.
>     * <p>
>     * This method is designed to be called from JSF. It therefore ensures
>     * cheapness of repeated calls, rather than data consistency. There is a
>     * refresh() method for that.
>     * <p>
>     *
>     * @return the current page
>     */
>    List<T> getCurrentPage();
>    /**
>     * Sets the current page of results to the required one and return it.
>     *
>     * @param page the page index, starting from 0
>     */
>    List<T> getPage(long page);
>    /**
>     * Forces refresh of the current page.
>     */
>    void refresh();
>    /**
>     * Returns a boolean expressing if there are further pages.
>     */
>    boolean isNextPageAvailable();
>    /**
>     * Returns a boolean expressing if there is a previous page.
>     */
>    boolean isPreviousPageAvailable();
>    /**
>     * Returns the number of elements in current page.
>     */
>    long getCurrentPageSize();
>    /**
>     * Returns the offset (starting from 0) of the first element in the current
>     * page or <code>UNKNOWN_SIZE</code>
>     */
>    long getCurrentPageOffset();
>    /**
>     * Returns the current page index as a zero-based integer.
>     */
>    long getCurrentPageIndex();
>    /**
>     * Returns a simple formatted string for current pagination status.
>     */
>    String getCurrentPageStatus();
>    /* Easy navigation API */
>    /**
>     * Go to the first page
>     */
>    void rewind();
>    /**
>     * Go to the previous page
>     */
>    void previous();
>    /**
>     * Go to the next page
>     */
>    void next();
>    /**
>     * Go to the last page
>     */
>    void last();
>    // TODO: isNextEntryAvailable, isPreviousEntryAvailable
>    // TODO: first/prev/next/last for current entry in given page
>    /**
>     * Returns if this provider is sortable
>     */
>    boolean isSortable();
>    /**
>     * Returns the sorting info for this provider
>     */
>    List<SortInfo> getSortInfo();
>    /**
>     * Sets the sorting info for this provider
>     */
>    void setSortInfo(List<SortInfo> sortInfo);
> }
> The Farm mechanism, although it would need to be simplified, is currently
> useful => do not touch it for now, because anyway Studio will make it easy
> to define it.
> The simplifaction of selection of elements, through Seam remoting, may also
> be addressed later.
> These changes will be done directly in Nuxeo classes, deprecating old methods 
> using a PagedDocumentsProvider  (like QueryModel and some seam components)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.nuxeo.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets

Reply via email to