int currRowIndex = this.odiResult.getCurrentResultIndex( ); if ( lastRowIndex < currRowIndex ) { if ( bindingColumnsEvalUtil == null ) { bindingColumnsEvalUtil = new BindingColumnsEvalUtil( this.odiResult, this.scope, this.getRdSaveHelper( ), this.resultService.getAllBindingExprs( ), this.resultService.getAllAutoBindingExprs( ) ); }  lastRowIndex = currRowIndex; boundColumnValueMap = bindingColumnsEvalUtil.getColumnsValue( ); }
if ( this.isFirstRowPepared == false ) this.prepareCurrentRow( );
	public Object getValue( String exprName ) throws BirtException	{		checkStarted( );				logger.logp( Level.FINE,				ResultIterator.class.getName( ),				"getValue",				"get of value binding column: " + LogUtil.toString( exprName ) );				if ( this.resultService.getBindingExpr( exprName ) == null				&& this.resultService.getAutoBindingExpr( exprName ) == null )			throw new DataException( ResourceConstants.INVALID_BOUND_COLUMN_NAME,					exprName );				// currRowIndex value will be changed driven by this.next method.		int currRowIndex = this.odiResult.getCurrentResultIndex( );		if ( lastRowIndex < currRowIndex )		{			if ( bindingColumnsEvalUtil == null )			{				bindingColumnsEvalUtil = new BindingColumnsEvalUtil( this.odiResult,						this.scope,						this.getRdSaveHelper( ),						this.resultService.getAllBindingExprs( ),						this.resultService.getAllAutoBindingExprs( ) );			}						lastRowIndex = currRowIndex;			boundColumnValueMap = bindingColumnsEvalUtil.getColumnsValue( );		}				Object exprValue = boundColumnValueMap.get( exprName );		if ( exprValue instanceof BirtException )			throw (BirtException) exprValue;		return exprValue;	}