diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpharvester/cdssync/cdssynclib/src/cdssyncsqlao.cpp --- a/upnpharvester/cdssync/cdssynclib/src/cdssyncsqlao.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,288 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Cds Sync Active Object -* -*/ - - - - - - -#include "mcmsqlmain.h" -#include "cmsqlbaseitem.h" -#include "cmsqlgenericitem.h" -#include "cdssyncsqlao.h" -#include "cdssyncimplsql.h" -#include "msdebug.h" - -// CONSTANTS -const TInt KCdsSyncMaxImageItemCount = 15000; -const TInt KCdsSyncMaxVideoItemCount = 5000; -const TInt KCdsSyncMaxItemCount = 40000; - -// -------------------------------------------------------------------------- -// CCdsSyncSqlAo::NewL -// -------------------------------------------------------------------------- -// -CCdsSyncSqlAo* CCdsSyncSqlAo::NewL( - MCmSqlMain& aSqlDb, - CCdsSyncImpl& aSync, - RPointerArray& aItemsToAdd, - RPointerArray& aItemsToDelete, - TInt aAddGranularity ) - { - CCdsSyncSqlAo* self = CCdsSyncSqlAo::NewLC( - aSqlDb, - aSync, - aItemsToAdd, - aItemsToDelete, - aAddGranularity ); - CleanupStack::Pop( self ); - return self; - } - -// -------------------------------------------------------------------------- -// CCdsSyncSqlAo::NewLC -// -------------------------------------------------------------------------- -// -CCdsSyncSqlAo* CCdsSyncSqlAo::NewLC( - MCmSqlMain& aSqlDb, - CCdsSyncImpl& aSync, - RPointerArray& aItemsToAdd, - RPointerArray& aItemsToDelete, - TInt aAddGranularity ) - { - LOG(_L("[Cds Sync]\t CCdsSyncSqlAo::NewLC")); - CCdsSyncSqlAo* self = new (ELeave) CCdsSyncSqlAo( - aSqlDb, aSync, aItemsToAdd, aItemsToDelete, aAddGranularity - ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// -------------------------------------------------------------------------- -// CCdsSyncSqlAo::~CCdsSyncSqlAo -// -------------------------------------------------------------------------- -CCdsSyncSqlAo::~CCdsSyncSqlAo() - { - LOG(_L("[Cds Sync]\t CCdsSyncSqlAo::~CCdsSyncSqlAo")); - - if ( IsActive() ) - { - Cancel(); - } - } - -// -------------------------------------------------------------------------- -// CCdsSyncSqlAo::CCdsSyncSqlAo -// -------------------------------------------------------------------------- -CCdsSyncSqlAo::CCdsSyncSqlAo( MCmSqlMain& aSqlDb, - CCdsSyncImpl& aSync, - RPointerArray& aItemsToAdd, - RPointerArray& aItemsToDelete, - TInt aAddGranularity ) : - CActive( CActive::EPriorityIdle ), - iState( ECdsSyncSqlAoIdle ), - iSqlDb( aSqlDb ), - iSync( aSync ), - iItemsToAdd( aItemsToAdd ), - iItemsToDelete( aItemsToDelete ), - iAddGranularity( aAddGranularity ), - iSourceDataComplete( EFalse ) - { - } - -// -------------------------------------------------------------------------- -// CCdsSyncSqlAo::ConstructL -// -------------------------------------------------------------------------- -void CCdsSyncSqlAo::ConstructL() - { - LOG(_L("[Cds Sync]\t CCdsSyncSqlAo::ConstructL")); - CActiveScheduler::Add( this ); - } - -// -------------------------------------------------------------------------- -// CCdsSyncSqlAo::NotifyItemsAddedL -// -------------------------------------------------------------------------- -void CCdsSyncSqlAo::NotifyItemsAddedL( TBool aSourceDataComplete ) - { - LOG(_L("[Cds Sync]\t CCdsSyncSqlAo::NotifyItemsAddedL")); - - // Source data is complete - if ( aSourceDataComplete ) - { - iSourceDataComplete = ETrue; - } - - TRACE( Print( _L("[Cds Sync]\t addarray has %d items, srccomplete %d"), - iItemsToAdd.Count(), iSourceDataComplete )); - - if ( iState == ECdsSyncSqlAoIdle ) - { - if ( iItemsToAdd.Count() >= iAddGranularity || - ( iSourceDataComplete && iItemsToAdd.Count() ) ) - - { - // add more items - iStatus = KRequestPending; - iItemsInAddition = iItemsToAdd.Count(); - - #ifdef _DEBUG - iOperationTime.HomeTime(); - #endif - - TRACE( Print( _L("[Cds Sync]\t starting to add %d items"), - iItemsInAddition )); - iSqlDb.AsyncBatchAdd( iItemsToAdd, iStatus ); - SetActive(); - iState = ECdsSyncSqlAoAdding; - } - else if ( iSourceDataComplete ) - { - // all done, start deleting - #ifdef _DEBUG - iOperationTime.HomeTime(); - #endif - iSqlDb.AsyncBatchDelete( iItemsToDelete, iStatus ); - SetActive(); - iState = ECdsSyncSqlAoDeleting; - } - } - } - -// --------------------------------------------------------------------------- -// CCdsSyncSqlAo::Activate() -// --------------------------------------------------------------------------- -void CCdsSyncSqlAo::Activate() - { - SetActive(); - } - -// -------------------------------------------------------------------------- -// CCdsSyncSqlAo::IfOverLimitDeleteMediaItems() -// -------------------------------------------------------------------------- -void CCdsSyncSqlAo::IfOverLimitDeleteMediaItems() - { - LOG(_L("[Cds Sync]\t CCdsSyncSqlAo::IfOverLimitDeleteMediaItems START")); - TInt64 musicCount( KErrNone ); - TInt64 videoCount( KErrNone ); - TInt64 imageCount( KErrNone ); - TRAP_IGNORE( iSqlDb.GetMediaCountL( musicCount, ECmAudio ) ); - TRAP_IGNORE( iSqlDb.GetMediaCountL( videoCount, ECmVideo ) ); - TRAP_IGNORE( iSqlDb.GetMediaCountL( imageCount, ECmImage ) ); - TRACE( Print( _L("[Cds Sync]\t Amout of music items %ld"), musicCount )); - TRACE( Print( _L("[Cds Sync]\t Amout of image items %ld"), imageCount )); - TRACE( Print( _L("[Cds Sync]\t Amout of video items %ld"), videoCount )); - if( KCdsSyncMaxImageItemCount < imageCount ) - { - TRAP_IGNORE( iSqlDb.DeleteOldestMediaItemsL( ECmImage, - imageCount - KCdsSyncMaxImageItemCount ) ); - TRACE( Print( _L("[Cds Sync]\t deleted %ld image items"), - ( imageCount - KCdsSyncMaxImageItemCount ))); - TRAP_IGNORE( iSqlDb.GetMediaCountL( imageCount, ECmImage ) ); - } - if( KCdsSyncMaxVideoItemCount < videoCount ) - { - TRAP_IGNORE( iSqlDb.DeleteOldestMediaItemsL( ECmVideo, - videoCount - KCdsSyncMaxVideoItemCount ) ); - TRACE( Print( _L("[Cds Sync]\t deleted %ld video items"), - ( videoCount - KCdsSyncMaxVideoItemCount ))); - TRAP_IGNORE( iSqlDb.GetMediaCountL( videoCount, ECmVideo ) ); - } - if( KCdsSyncMaxItemCount < ( imageCount + videoCount + musicCount ) ) - { - TRAP_IGNORE( iSqlDb.DeleteOldestMediaItemsL( ECmAudio, - ( imageCount + videoCount + musicCount ) - - KCdsSyncMaxItemCount ) ); - TRACE( Print( _L("[Cds Sync]\t deleted %ld music items"), - ( ( imageCount + videoCount + musicCount ) - - KCdsSyncMaxItemCount ))); - } - LOG(_L("[Cds Sync]\t CCdsSyncSqlAo::IfOverLimitDeleteMediaItems END")); - } - -// -------------------------------------------------------------------------- -// CCdsSyncSqlAo::RunL() -// -------------------------------------------------------------------------- -void CCdsSyncSqlAo::RunL() - { - TRACE( Print( _L("[Cds Sync]\t CCdsSyncSqlAo::RunL, iStatus %d"), - iStatus.Int() )); - if ( iState == ECdsSyncSqlAoAdding ) - { - iState = ECdsSyncSqlAoIdle; - - #ifdef _DEBUG - - TTime timeAfter; - timeAfter.HomeTime(); - TRACE( Print( - _L("[Cds Sync]\t added %d, took %ld microsec, err %d"), - iItemsToAdd.Count(), - timeAfter.MicroSecondsFrom( iOperationTime ).Int64(), - iStatus.Int() )); - TRACE( Print( _L("[Cds Sync]\t array has %d items"), - iItemsToAdd.Count() )); - - #endif - - TInt itemCount( iItemsToAdd.Count() ); - - for ( TInt i = 0; i < itemCount; i++ ) - { - delete iItemsToAdd[ 0 ]; - iItemsToAdd.Remove( 0 ); - } - - // check if there's more to add - NotifyItemsAddedL(); - - } - else if ( iState == ECdsSyncSqlAoInitializing ) - { - iSync.OperationsCompleteL( KErrNone ); - } - else // ECdsSyncSqlAoDeleting - { - #ifdef _DEBUG - - TTime timeAfter; - timeAfter.HomeTime(); - TRACE( Print( - _L("[Cds Sync]\t removed %d, took %ld microsec, err %d"), - iItemsToDelete.Count(), - timeAfter.MicroSecondsFrom( iOperationTime ).Int64(), - iStatus.Int() )); - #endif - - iItemsToDelete.ResetAndDestroy(); - LOG(_L("[Cds Sync]\t Checking if too much media...")); - IfOverLimitDeleteMediaItems(); - LOG(_L("[Cds Sync]\t Checked!")); - LOG(_L("[Cds Sync]\t Deleting unused propertys")); - iSqlDb.DeleteUnusedPropertys( ); - iState = ECdsSyncSqlAoIdle; - iSync.OperationsCompleteL( KErrNone ); - } - } - -// -------------------------------------------------------------------------- -// CCdsSyncSqlAo::DoCancel() -// -------------------------------------------------------------------------- -void CCdsSyncSqlAo::DoCancel() - { - LOG(_L("[Cds Sync]\t CCdsSyncSqlAo::DoCancel")); - }