accumulatorManagers[i] = new AccumulatorManager( this.aggrTable.getAggrInfo( i ).func );
accumulatorManagers[i] = new AccumulatorManager( this.aggrTable.getAggrInfo( i ).aggregation );
	public void calculate( Scriptable scope ) throws DataException	{		logger.entering( AggregateCalculator.class.getName( ), "calculate" );		List validAggregations = new ArrayList();		boolean[] populateAggrValue = new boolean[this.aggrTable.getCount()];			int count = 1;		for( int i = 0; i < this.aggrTable.getCount( ); i++)		{			validAggregations.add( new Integer(i));			if( this.aggrTable.getAggrInfo( i ).func instanceof Aggregation 					&& ((Aggregation) this.aggrTable.getAggrInfo( i ).func ).getNumberOfPasses( ) > 1)				populateAggrValue[i] = false;			else				populateAggrValue[i] = true;			accumulatorManagers[i] = new AccumulatorManager( this.aggrTable.getAggrInfo( i ).func );		}				while ( validAggregations.size( ) > 0 )		{			int[] validAggregationArray = new int[validAggregations.size( )];			for ( int i = 0; i < validAggregations.size( ); i++ )			{				validAggregationArray[i] = ( (Integer) validAggregations.get( i ) ).intValue( );			}			assert odiResult.getCurrentResultIndex( ) == 0;			if ( odiResult.getCurrentResult( ) == null )			{				// Empty result set; nothing to do				this.hasOdiResultDataRows = false;				return;			}			this.hasOdiResultDataRows = true;			pass(scope, populateAggrValue, validAggregationArray);			// Rewind to first row			odiResult.first( 0 );			count++;			prepareNextIteration(validAggregations, populateAggrValue, count);		}		logger.exiting( AggregateCalculator.class.getName( ), "calculate" );	}