package org.jboss.seam.databinding;
import java.util.Map;
import javax.faces.model.DataModel;
import org.jboss.seam.annotations.datamodel.DataModelSelectionIndex;
/**
* Extracts the selected "index" (the row index, or the key of a map) from a JSF DataModel.
*
* @author Gavin King
*/
public class DataModelIndexSelector implements DataSelector<DataModelSelectionIndex, DataModel>
{
public String getVariableName(DataModelSelectionIndex in)
{
return in.value();
}
public Object getSelection(DataModelSelectionIndex in, DataModel wrapper)
{
if ( wrapper.getRowCount()==0 || wrapper.getRowIndex()<0 )
{
return null;
}
else
{
Object rowData = wrapper.getRowData();
if (rowData instanceof Map.Entry)
{
return ( (Map.Entry) rowData ).getKey();
}
else
{
return wrapper.getRowIndex();
}
}
}
}