metadataengine/server/src/mdssqlobjectmanipulate.cpp
branchRCL_3
changeset 20 f23c07ec56e2
parent 19 b73252188534
child 21 85f623e1ef41
equal deleted inserted replaced
19:b73252188534 20:f23c07ec56e2
  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