Class LazyDataModel<T>

java.lang.Object
javax.faces.model.DataModel<E>
javax.faces.model.ListDataModel<T>
org.primefaces.model.LazyDataModel<T>
Type Parameters:
T - The model class.
All Implemented Interfaces:
Serializable, Iterable<T>, SelectableDataModel<T>
Direct Known Subclasses:
JpaLazyDataModel

public abstract class LazyDataModel<T> extends javax.faces.model.ListDataModel<T> implements SelectableDataModel<T>, Serializable
DataModel to deal with huge datasets with by lazy loading, page by page.
See Also:
  • Constructor Details

    • LazyDataModel

      public LazyDataModel()
      For serialization only
    • LazyDataModel

      public LazyDataModel(javax.faces.convert.Converter converter)
      This constructor allows to skip the implementation of getRowData(java.lang.String) and getRowKey(java.lang.Object), when selection is used.
      Parameters:
      converter - The converter used to convert rowKey to rowData and vice versa.
  • Method Details

    • count

      public abstract int count(Map<String,FilterMeta> filterBy)
      Counts the all available data for the given filters. In case of SQL, this would execute a "SELECT COUNT ... WHERE ...". In case you dont use SQL and receive both rowCount and data within a single call, this method should just return 0. You must call recalculateFirst(int, int, int) and setRowCount(int) in your load(int, int, java.util.Map, java.util.Map) method.
      Parameters:
      filterBy - a map with all filter information (only relevant for DataTable, not for eg DataView)
      Returns:
      the data count
    • load

      public abstract List<T> load(int first, int pageSize, Map<String,SortMeta> sortBy, Map<String,FilterMeta> filterBy)
      Loads the data for the given parameters.
      Parameters:
      first - the first entry
      pageSize - the page size
      sortBy - a map with all sort information (only relevant for DataTable, not for eg DataView)
      filterBy - a map with all filter information (only relevant for DataTable, not for eg DataView)
      Returns:
      the data
    • getRowData

      public T getRowData(String rowKey)
      Specified by:
      getRowData in interface SelectableDataModel<T>
    • getRowData

      public T getRowData(int rowIndex, Map<String,SortMeta> sortBy, Map<String,FilterMeta> filterBy)
    • recalculateFirst

      protected int recalculateFirst(int first, int pageSize, int rowCount)
      Recalculates first, see #1921. Also see: UIPageableData.calculateFirst()
      Parameters:
      first - the first param from the load(int, int, java.util.Map, java.util.Map) method.
      pageSize - the pageSize param from the load(int, int, java.util.Map, java.util.Map) method.
      rowCount - the new rowCount.
      Returns:
      the recalculated first.
    • getRowKey

      public String getRowKey(T object)
      Specified by:
      getRowKey in interface SelectableDataModel<T>
    • getMessage

      protected String getMessage(String msg)
    • isRowAvailable

      public boolean isRowAvailable()
      Overrides:
      isRowAvailable in class javax.faces.model.ListDataModel<T>
    • getRowData

      public T getRowData()
      Overrides:
      getRowData in class javax.faces.model.ListDataModel<T>
    • getWrappedData

      public List<T> getWrappedData()
      Overrides:
      getWrappedData in class javax.faces.model.ListDataModel<T>
    • setWrappedData

      public void setWrappedData(Object list)
      Overrides:
      setWrappedData in class javax.faces.model.ListDataModel<T>
    • getRowIndex

      public int getRowIndex()
      Overrides:
      getRowIndex in class javax.faces.model.ListDataModel<T>
    • setRowIndex

      public void setRowIndex(int rowIndex)
      Overrides:
      setRowIndex in class javax.faces.model.ListDataModel<T>
    • iterator

      public Iterator<T> iterator()
      Specified by:
      iterator in interface Iterable<T>
      Overrides:
      iterator in class javax.faces.model.DataModel<T>
    • iterator

      public Iterator<T> iterator(Map<String,SortMeta> sortBy, Map<String,FilterMeta> filterBy)
    • getRowCount

      public int getRowCount()
      Overrides:
      getRowCount in class javax.faces.model.ListDataModel<T>
    • getPageSize

      public int getPageSize()
    • setPageSize

      public void setPageSize(int pageSize)
    • setRowCount

      public void setRowCount(int rowCount)
    • getConverter

      public javax.faces.convert.Converter getConverter()
    • setConverter

      public void setConverter(javax.faces.convert.Converter converter)