Top Description Fields Constructors Methods
javax.faces.model

public Class IterableDataModel<E>

extends DataModel<E>
Class Inheritance
Imports
java.util.ArrayList, .Collection, .Iterator, .List, .Set, javax.faces.model.DataModel, .DataModelEvent, .DataModelListener, .ListDataModel

IterableDataModel is an implementation of DataModel that wraps an Iterable.

This can be used to encapsulate nearly every collection type, including Collection derived types such as List and Set. As such this specific DataModel can be used instead of more specific DataModels like ListDataModel and CollectionDataModel.

Field Summary

Modifier and TypeField and Description
private int
index

The current row index.

private Iterable<E>
iterable

The iterable that this data model is primarily wrapping.

private List<E>
list

A list that's optionally used to hold and cache data collected from the iterable that this data model is wrapping.

Constructor Summary

AccessConstructor and Description
public
IterableDataModel()

Construct a new IterableDataModel with no specified wrapped data.

public
IterableDataModel(Iterable<E>
Iterable to be wrapped.
iterable
)

Construct a new IterableDataModel wrapping the specified iterable.

Method Summary

Modifier and TypeMethod and Description
public int
getRowCount()

Implements abstract javax.faces.model.DataModel.getRowCount.

Return the number of rows of data objects represented by this DataModel.

public E
getRowData()

Implements abstract javax.faces.model.DataModel.getRowData.

Return an object representing the data for the currenty selected row index.

private E

Returns:

data for the currently selected row index, or null if there's no data
getRowDataOrNull
()

Return an object representing the data for the currently selected row index.

public int
getRowIndex()

Implements abstract javax.faces.model.DataModel.getRowIndex.

Return the zero-relative index of the currently selected row.

public Object
getWrappedData()

Implements abstract javax.faces.model.DataModel.getWrappedData.

Return the object representing the data wrapped by this DataModel, if any.

public boolean
isRowAvailable()

Implements abstract javax.faces.model.DataModel.isRowAvailable.

Return a flag indicating whether there is rowData available at the current rowIndex.

private static <
The generic iterable element type.
E
>
List<E>

Returns:

The list representation of the given iterable, possibly the same instance as that iterable.
iterableToList
(Iterable<E>
The iterable to be converted.
iterable
)

Converts an iterable into a list.

private void
notifyListeners(int
the previous index
oldRowIndex
,
int
The current zero-relative index (must be non-negative)
rowIndex
)

Notifies all DataModelListeners

public void
setRowIndex(int
The new zero-relative index (must be non-negative)
rowIndex
)

Implements abstract javax.faces.model.DataModel.setRowIndex.

Set the zero-relative index of the currently selected row, or -1 to indicate that we are not positioned on a row.

public void
setWrappedData(Object
Data collection to be wrapped, or null to detach from any previous data collection
data
)

Implements abstract javax.faces.model.DataModel.setWrappedData.

Set the object representing the data collection wrapped by this DataModel.

Inherited from javax.faces.model.DataModel:
addDataModelListenergetDataModelListenersiteratorremoveDataModelListener

Field Detail

indexback to summary
private int index

The current row index.

iterableback to summary
private Iterable<E> iterable

The iterable that this data model is primarily wrapping.

listback to summary
private List<E> list

A list that's optionally used to hold and cache data collected from the iterable that this data model is wrapping.

Constructor Detail

IterableDataModelback to summary
public IterableDataModel()

Construct a new IterableDataModel with no specified wrapped data.

IterableDataModelback to summary
public IterableDataModel(Iterable<E> iterable)

Construct a new IterableDataModel wrapping the specified iterable.

Parameters
iterable:Iterable<E>

Iterable to be wrapped.

Method Detail

getRowCountback to summary
public int getRowCount()

Implements abstract javax.faces.model.DataModel.getRowCount.

Return the number of rows of data objects represented by this DataModel. If the number of rows is unknown, or no wrappedData is available, return -1.

Returns:int

Doc from javax.faces.model.DataModel.getRowCount.

the number of rows of data represented by this DataModel

Annotations
@Override
Exceptions
FacesException:
if an error occurs getting the row count
getRowDataback to summary
public E getRowData()

Implements abstract javax.faces.model.DataModel.getRowData.

Return an object representing the data for the currenty selected row index. If no wrappedData is available, return null.

Returns:E

Doc from javax.faces.model.DataModel.getRowData.

an object representing the data for the currently selected row index

Annotations
@Override
Exceptions
FacesException:
if an error occurs getting the row data
IllegalArgumentException:
if now row data is available at the currently specified row index
getRowDataOrNullback to summary
private E getRowDataOrNull()

Return an object representing the data for the currently selected row index. If either no wrappedData is available or if there is no rowDataavailable at the current rowIndex, return null.

Returns:E

data for the currently selected row index, or null if there's no data

getRowIndexback to summary
public int getRowIndex()

Implements abstract javax.faces.model.DataModel.getRowIndex.

Return the zero-relative index of the currently selected row. If we are not currently positioned on a row, or no wrappedData is available, return -1.

Returns:int

Doc from javax.faces.model.DataModel.getRowIndex.

the index of the currently selected row

Annotations
@Override
Exceptions
FacesException:
if an error occurs getting the row index
getWrappedDataback to summary
public Object getWrappedData()

Implements abstract javax.faces.model.DataModel.getWrappedData.

Return the object representing the data wrapped by this DataModel, if any.

Returns:Object

Doc from javax.faces.model.DataModel.getWrappedData.

the Object that this model wraps.

Annotations
@Override
isRowAvailableback to summary
public boolean isRowAvailable()

Implements abstract javax.faces.model.DataModel.isRowAvailable.

Return a flag indicating whether there is rowData available at the current rowIndex. If no wrappedData is available, return false.

Returns:boolean

Doc from javax.faces.model.DataModel.isRowAvailable.

true if and only if there is data available at the current index, false otherwise.

Annotations
@Override
Exceptions
FacesException:
if an error occurs getting the row availability
iterableToListback to summary
private static <E> List<E> iterableToList(Iterable<E> iterable)

Converts an iterable into a list.

This method makes NO guarantee to whether changes to the source iterable are reflected in the returned list or not. For instance if the given iterable already is a list, it's returned directly.

Parameters
<E>
The generic iterable element type.
iterable:Iterable<E>

The iterable to be converted.

Returns:List<E>

The list representation of the given iterable, possibly the same instance as that iterable.

notifyListenersback to summary
private void notifyListeners(int oldRowIndex, int rowIndex)

Notifies all DataModelListeners

Parameters
oldRowIndex:int

the previous index

rowIndex:int

The current zero-relative index (must be non-negative)

setRowIndexback to summary
public void setRowIndex(int rowIndex)

Implements abstract javax.faces.model.DataModel.setRowIndex.

Set the zero-relative index of the currently selected row, or -1 to indicate that we are not positioned on a row. It is possible to set the row index at a value for which the underlying data collection does not contain any row data. Therefore, callers may use the isRowAvailable() method to detect whether row data will be available for use by the getRowData() method.

If there is no wrappedData available when this method is called, the specified rowIndex is stored (and may be retrieved by a subsequent call to getRowData()), but no event is sent. Otherwise, if the currently selected row index is changed by this call, a DataModelEvent will be sent to the rowSelected() method of all registered DataModelListeners.

Parameters
rowIndex:int

The new zero-relative index (must be non-negative)

Annotations
@Override
Exceptions
FacesException:
if an error occurs setting the row index
IllegalArgumentException:
if rowIndex is less than -1
setWrappedDataback to summary
public void setWrappedData(Object data)

Implements abstract javax.faces.model.DataModel.setWrappedData.

Set the object representing the data collection wrapped by this DataModel. If the specified data is null, detach this DataModel from any previously wrapped data collection instead.

If data is non-null, the currently selected row index must be set to zero, and a DataModelEvent must be sent to the rowSelected() method of all registered DataModelListeners indicating that this row is now selected.

Parameters
data:Object

Data collection to be wrapped, or null to detach from any previous data collection

Annotations
@SuppressWarnings:unchecked
@Override
Exceptions
ClassCastException:
if data is not of the appropriate type for this DataModel implementation