// ---------------------------------------------------------------------------
// Create an array representing the table that is generated
// ---------------------------------------------------------------------------
//     
RPointerArray<CMPXHarvesterDbItem>* CMPXHarvesterDatabaseTable::CreateTableRepresentationL()
    {
    MPX_DEBUG1("CMPXHarvesterDatabaseTable::CreateTableRepresentationL <---");
    
    RPointerArray<CMPXHarvesterDbItem>* array = 
                              new (ELeave) RPointerArray<CMPXHarvesterDbItem>;
    CleanupStack::PushL( TCleanupItem( CleanupArray, array) );
    
    for (iView.FirstL();iView.AtRow();iView.NextL())
        {
        // Retrieve the row
        iView.GetL();
        
        CMPXHarvesterDbItem* item = new(ELeave) CMPXHarvesterDbItem();
        CleanupStack::PushL( item );
        
        // Setup the item
        HBufC* filepath = ReadLongTextLC( KHarPathNameColumn );
        HBufC* songname = ReadLongTextLC( KHarFileNameColumn );
        item->iFile = HBufC::NewL( filepath->Length() + songname->Length() );
        TPtr buf = item->iFile->Des();
        buf.Append( *filepath );
        buf.Append( *songname );
        CleanupStack::PopAndDestroy( 2, filepath );
        
        item->iLastModifiedTime = iView.ColTime( KHarModTimeColumn );
        item->iColId = iView.ColInt( KHarColDBIDColumn );
        item->iDrm   = iView.ColUint( KHarDRMColumn );
        
        User::LeaveIfError( array->InsertInOrderAllowRepeats( item, 
                            CMPXHarvesterDbItem::Compare ) );
        CleanupStack::Pop( item );
        }
  
    CleanupStack::Pop();  // cleanup
    MPX_DEBUG1("CMPXHarvesterDatabaseTable::CreateTableRepresentationL --->");
    return array;
    }