Package org.apache.tapestry5.jpa

## Class JpaGridDataSource<E>

- java.lang.Object
- - org.apache.tapestry5.jpa.JpaGridDataSource<E>

- All Implemented Interfaces:
    `GridDataSource`

      public class JpaGridDataSource<E>
      extends Object
      implements GridDataSource

  A simple implementation of `GridDataSource` based on a EntityManager and a known entity class. This implementation does support multiple `sort constraints`. This class is not thread-safe; it maintains internal state. Typically, an instance of this object is created fresh as needed (that is, it is not stored between requests).
  Since:
    5.3

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JpaGridDataSource​(EntityManager entityManager, Class<E> entityType)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `applyAdditionalConstraints​(CriteriaQuery<?> criteria, Root<E> root, CriteriaBuilder builder)` |
    `int` | `getAvailableRows()` | Returns the number of rows available in the data source.
    `Class<E>` | `getRowType()` | Returns the type of value in the rows, or null if not known.
    `Object` | `getRowValue​(int index)` | Returns the row value at the provided index.
    `void` | `prepare​(int startIndex, int endIndex, List<SortConstraint> sortConstraints)` | Invoked to allow the source to prepare to present values.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.tapestry5.grid.GridDataSource

      `getAvailableRows, isEmpty`

- - ### Constructor Detail

    - #### JpaGridDataSource

          public JpaGridDataSource​(EntityManager entityManager,
                                   Class<E> entityType)

  - ### Method Detail

    - #### getAvailableRows

          public int getAvailableRows()

      Returns the number of rows available in the data source.
      Specified by:
        `getAvailableRows` in interface `GridDataSource`

    - #### prepare

          public void prepare​(int startIndex,
                              int endIndex,
                              List<SortConstraint> sortConstraints)

      Invoked to allow the source to prepare to present values. This gives the source a chance to pre-fetch data (when appropriate) and informs the source of the desired sort order. Sorting comes first, then extraction by range.
      Specified by:
        `prepare` in interface `GridDataSource`
      Parameters:
        `startIndex` - the starting index to be retrieved
        `endIndex` - the ending index to be retrieved
        `sortConstraints` - identify how data is to be sorted

    - #### applyAdditionalConstraints

          protected void applyAdditionalConstraints​(CriteriaQuery<?> criteria,
                                                    Root<E> root,
                                                    CriteriaBuilder builder)

    - #### getRowValue

          public Object getRowValue​(int index)

      Returns the row value at the provided index. This method will be invoked in sequential order. In rare instances, `GridDataSource.getAvailableRows()` may return a different number of rows than are actually available (i.e., the database was changed between calls to `GridDataSource.getAvailableRows()` and the call to `GridDataSource.prepare(int, int, java.util.List)`). In that case, this method should return null for any out-of-range indexes.
      Specified by:
        `getRowValue` in interface `GridDataSource`

    - #### getRowType

          public Class<E> getRowType()

      Returns the type of value in the rows, or null if not known. This value is used to create a default `BeanModel` when no such model is explicitly provided.
      Specified by:
        `getRowType` in interface `GridDataSource`
      Returns:
        the row type, or null