int getStartingGroupLevel( ) throws DataException
public int getStartingGroupLevel( ) throws DataException
	int getStartingGroupLevel( ) throws DataException	{		checkHasCurrentRow( );		// Always return 0 for first row, which starts group 0 - the entire list		if ( cacheProvider.getCurrentIndex( ) == 0 )			return 0;		// If no groups defined, return 1		if ( groups.length == 0 )			return 1;		// Find outermost group that current row starts		int childGroupIdx = cacheProvider.getCurrentIndex( );		int currentGroupIdx = leafGroupIdx;		int level;		for ( level = groups.length - 1; level >= 0; level-- )		{			// Current row is known to start child group with index			// childGroupIdx			// Does it also start this group?			GroupInfo currentGroup = findGroup( level, currentGroupIdx );			if ( childGroupIdx == currentGroup.firstChild )			{				// Yes it also starts this group; check if it starts parent as				// well				childGroupIdx = currentGroupIdx;				currentGroupIdx = currentGroup.parent;				continue;			}			break;		}		// current row starts group (level +1 ). Note that the group index we		// return is 1-based		return level + 2;	}