void last( int groupLevel ) throws DataException
public void last( int groupLevel ) throws DataException
	void last( int groupLevel ) throws DataException	{		if ( groupLevel > groups.length || groupLevel < 0 )			throw new DataException( ResourceConstants.INVALID_GROUP_LEVEL,					new Integer( groupLevel ) );		groupLevel--; // change to 0-based index		// First find current group at the specified group level		int currentGroupIdx = -1;		if ( groupLevel >= 0 )			currentGroupIdx = findCurrentGroup( groupLevel );		if ( groupLevel < 0 || // an input of 0 means moving to last row in				// list				currentGroupIdx >= groups[groupLevel].size( ) - 1 )		{			// Move to last row in entire list			// Last row is in the last leaf group			int currentRowID = cacheProvider.getCount( ) - 1;						cacheProvider.moveTo( currentRowID );			if ( groups.length > 0 )				leafGroupIdx = groups[groups.length - 1].size( ) - 1;			return;		}		// Find first row in the next group		++currentGroupIdx;		for ( int i = groupLevel + 1; i < groups.length; i++ )		{			currentGroupIdx = findGroup( i - 1, currentGroupIdx ).firstChild;		}		// Move back one row and one leaf group		int currentRowID = findGroup( groups.length - 1, currentGroupIdx ).firstChild - 1;		cacheProvider.moveTo( currentRowID );		leafGroupIdx = currentGroupIdx - 1;	}