2269 for (TUint32 i = 0; i < aCount; ++i) |
2269 for (TUint32 i = 0; i < aCount; ++i) |
2270 { |
2270 { |
2271 TPtrC16 uri = aBuffer.ReceivePtr16L(); |
2271 TPtrC16 uri = aBuffer.ReceivePtr16L(); |
2272 objectId = SearchObjectByUriL( uri, flags ); |
2272 objectId = SearchObjectByUriL( uri, flags ); |
2273 if ( objectId != KNoId && |
2273 if ( objectId != KNoId && |
2274 objectId != KSystemFavouritesAlbumId && |
2274 uri != KSystemFavouritesAlbumUri && |
2275 objectId != KSystemCapturedAlbumId ) |
2275 uri != KSystemCapturedAlbumUri ) |
2276 { |
2276 { |
2277 // unlock object, so update is no possible anymore |
2277 // unlock object, so update is no possible anymore |
2278 if ( iLockList.IsLocked( *iNamespaceDef, objectId ) ) |
2278 if ( iLockList.IsLocked( *iNamespaceDef, objectId ) ) |
2279 { |
2279 { |
2280 iLockList.UnlockById( *iNamespaceDef, objectId ); |
2280 iLockList.UnlockById( *iNamespaceDef, objectId ); |
3429 |
3429 |
3430 // empryRow, rowDataDelContext, rowDataUpdRel, rowDataDelRel, rowDataUpd, |
3430 // empryRow, rowDataDelContext, rowDataUpdRel, rowDataDelRel, rowDataUpd, |
3431 // rowDataDel, commonClauseOne |
3431 // rowDataDel, commonClauseOne |
3432 CleanupStack::PopAndDestroy( 7, &commonClauseOne ); |
3432 CleanupStack::PopAndDestroy( 7, &commonClauseOne ); |
3433 |
3433 |
3434 // When this is reached, all garbage collection steps have been fully executed |
3434 #ifdef MDS_PLAYLIST_HARVESTING_ENABLED |
|
3435 if( updateResult == 0 ) |
|
3436 { |
|
3437 updateResult = CleanPlaylistsL(); |
|
3438 } |
|
3439 #endif |
|
3440 |
3435 return EFalse; |
3441 return EFalse; |
3436 } |
3442 } |
3437 |
3443 |
3438 void CMdSSqlObjectManipulate::AnalyzeL() |
3444 void CMdSSqlObjectManipulate::AnalyzeL() |
3439 { |
3445 { |
3440 CMdSSqLiteConnection& db = MMdSDbConnectionPool::GetDefaultDBL(); |
3446 CMdSSqLiteConnection& db = MMdSDbConnectionPool::GetDefaultDBL(); |
3441 db.DoAnalyzeL(); |
3447 db.DoAnalyzeL(); |
3442 } |
3448 } |
|
3449 |
|
3450 #ifdef MDS_PLAYLIST_HARVESTING_ENABLED |
|
3451 TInt CMdSSqlObjectManipulate::CleanPlaylistsL() |
|
3452 { |
|
3453 _LIT( KDeleteWholePlaylists, "DELETE FROM Object%u WHERE ObjectId IN (SELECT ObjectId FROM AudioPlaylistItem%u WHERE PlaylistID NOT IN (SELECT ObjectId FROM Object%u));" ); |
|
3454 |
|
3455 RClauseBuffer commonClauseOne(*this, KDeleteWholePlaylists().Length()); |
|
3456 CleanupClosePushL( commonClauseOne ); |
|
3457 CMdsClauseBuffer& buffer = commonClauseOne.BufferL(); |
|
3458 |
|
3459 RRowData rowDataDel; |
|
3460 CleanupClosePushL( rowDataDel ); |
|
3461 |
|
3462 const RPointerArray<CMdsNamespaceDef>& namespaceDefs = |
|
3463 iSchema.NamespaceDefs(); |
|
3464 |
|
3465 CMdSSqLiteConnection& connection = MMdSDbConnectionPool::GetDefaultDBL(); |
|
3466 const TInt updateResult = 0; // once all files to be cleaned are handled, no need to continue |
|
3467 |
|
3468 const TInt count = namespaceDefs.Count(); |
|
3469 |
|
3470 for( TInt i = 0; i < count; ++i ) |
|
3471 { |
|
3472 const TDefId nmspId = namespaceDefs[i]->GetId(); |
|
3473 |
|
3474 buffer.BufferL().Format( KDeleteWholePlaylists, nmspId, nmspId, nmspId ); |
|
3475 User::LeaveIfError( connection.ExecuteL( |
|
3476 buffer.ConstBufferL(), rowDataDel ) ); |
|
3477 } |
|
3478 |
|
3479 // rowDataDel, commonClauseOne |
|
3480 CleanupStack::PopAndDestroy( 2, &commonClauseOne ); |
|
3481 |
|
3482 return updateResult; |
|
3483 } |
|
3484 #endif |
3443 |
3485 |
3444 CMdSSqlObjectManipulate::RClauseBuffer::RClauseBuffer( CMdSSqlObjectManipulate& aSOM, TInt aSize ) |
3486 CMdSSqlObjectManipulate::RClauseBuffer::RClauseBuffer( CMdSSqlObjectManipulate& aSOM, TInt aSize ) |
3445 : iBuffers( aSOM.iBuffers ), iBuffer( NULL ), iNr( -1 ), iSize( aSize ) |
3487 : iBuffers( aSOM.iBuffers ), iBuffer( NULL ), iNr( -1 ), iSize( aSize ) |
3446 { |
3488 { |
3447 // search for available buffer |
3489 // search for available buffer |