imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailstore.cpp
changeset 39 1a8af2cd6858
parent 33 221be23823c5
child 42 2e2a89493e2b
equal deleted inserted replaced
34:1c05ae5a7e41 39:1a8af2cd6858
    31 #include "thumbnailmanageruids.hrh"
    31 #include "thumbnailmanageruids.hrh"
    32 #include "thumbnailcenrep.h"
    32 #include "thumbnailcenrep.h"
    33 #include "thumbnailpanic.h"
    33 #include "thumbnailpanic.h"
    34 #include "thumbnailmanagerconstants.h"
    34 #include "thumbnailmanagerconstants.h"
    35 #include "thumbnailserver.h"
    35 #include "thumbnailserver.h"
       
    36 #include "OstTraceDefinitions.h"
       
    37 #ifdef OST_TRACE_COMPILER_IN_USE
       
    38 #include "thumbnailstoreTraces.h"
       
    39 #endif
       
    40 
    36 
    41 
    37 
    42 
    38 _LIT8( KThumbnailSqlConfig, "page_size=32768; cache_size=64;" );
    43 _LIT8( KThumbnailSqlConfig, "page_size=32768; cache_size=64;" );
    39 
    44 
    40 const TInt KStreamBufferSize = 1024 * 8;
    45 const TInt KStreamBufferSize = 1024 * 8;
    70 void RThumbnailTransaction::BeginL()
    75 void RThumbnailTransaction::BeginL()
    71     {    
    76     {    
    72     if (iDatabase.InTransaction())
    77     if (iDatabase.InTransaction())
    73         {
    78         {
    74         TN_DEBUG1( "RThumbnailTransaction::BeginL() - error: old transaction open!" );
    79         TN_DEBUG1( "RThumbnailTransaction::BeginL() - error: old transaction open!" );
       
    80         OstTrace0( TRACE_NORMAL, RTHUMBNAILTRANSACTION_BEGINL, "RThumbnailTransaction::BeginL - error: old transaction open!" );
    75         __ASSERT_DEBUG(( !iDatabase.InTransaction() ), ThumbnailPanic( EThumbnailSQLTransaction ));
    81         __ASSERT_DEBUG(( !iDatabase.InTransaction() ), ThumbnailPanic( EThumbnailSQLTransaction ));
    76         
    82         
    77         // old transaction already open, don't open another
    83         // old transaction already open, don't open another
    78         iState = EOldOpen;
    84         iState = EOldOpen;
    79         
    85         
    89         {
    95         {
    90         iState = EError;
    96         iState = EError;
    91 #ifdef _DEBUG
    97 #ifdef _DEBUG
    92     TPtrC errorMsg = iDatabase.LastErrorMessage();
    98     TPtrC errorMsg = iDatabase.LastErrorMessage();
    93     TN_DEBUG3( "RThumbnailTransaction::BeginL() lastError %S, ret = %d" , &errorMsg, err);
    99     TN_DEBUG3( "RThumbnailTransaction::BeginL() lastError %S, ret = %d" , &errorMsg, err);
       
   100     OstTraceExt2( TRACE_NORMAL, DUP1_RTHUMBNAILTRANSACTION_BEGINL, "RThumbnailTransaction::BeginL - lastError;errorMsg=%S;err=%d", errorMsg, err );
    94 #endif
   101 #endif
    95         User::Leave( err );
   102         User::Leave( err );
    96         }
   103         }
    97     }
   104     }
    98 
   105 
   119         TInt ret = iDatabase.Exec( KThumbnailCommitTransaction );
   126         TInt ret = iDatabase.Exec( KThumbnailCommitTransaction );
   120     
   127     
   121 #ifdef _DEBUG
   128 #ifdef _DEBUG
   122     TPtrC errorMsg = iDatabase.LastErrorMessage();
   129     TPtrC errorMsg = iDatabase.LastErrorMessage();
   123     TN_DEBUG3( "RThumbnailTransaction::CommitL() lastError %S, ret = %d" , &errorMsg, ret);
   130     TN_DEBUG3( "RThumbnailTransaction::CommitL() lastError %S, ret = %d" , &errorMsg, ret);
       
   131     OstTraceExt2( TRACE_NORMAL, DUP2_RTHUMBNAILTRANSACTION_BEGINL, "RThumbnailTransaction::BeginL - lastError;errorMsg=%S;ret=%d", errorMsg, ret );
   124 #endif  
   132 #endif  
   125     User::LeaveIfError( ret );
   133     User::LeaveIfError( ret );
   126         }
   134         }
   127     
   135     
   128     iState = EClosed;
   136     iState = EClosed;
   148             return err;
   156             return err;
   149             }
   157             }
   150         else
   158         else
   151             {
   159             {
   152             TN_DEBUG1( "RThumbnailTransaction::Rollback() - automatic rollback already done!" );
   160             TN_DEBUG1( "RThumbnailTransaction::Rollback() - automatic rollback already done!" );
       
   161             OstTrace0( TRACE_NORMAL, RTHUMBNAILTRANSACTION_ROLLBACK, "RThumbnailTransaction::Rollback - automatic rollback already done!" );
   153             }
   162             }
   154         }
   163         }
   155     
   164     
   156     iState = EClosed;
   165     iState = EClosed;
   157     
   166     
   182 // ---------------------------------------------------------------------------
   191 // ---------------------------------------------------------------------------
   183 //
   192 //
   184 CThumbnailStore::~CThumbnailStore()
   193 CThumbnailStore::~CThumbnailStore()
   185     {
   194     {
   186     TN_DEBUG2( "CThumbnailStore::~CThumbnailStore() drive: %d", iDrive );
   195     TN_DEBUG2( "CThumbnailStore::~CThumbnailStore() drive: %d", iDrive );
       
   196     OstTrace1( TRACE_NORMAL, CTHUMBNAILSTORE_CTHUMBNAILSTORE, "CThumbnailStore::~CThumbnailStore;iDrive=%d", iDrive );
   187     
   197     
   188     if(iActivityManager)
   198     if(iActivityManager)
   189         {
   199         {
   190         delete iActivityManager;
   200         delete iActivityManager;
   191         iActivityManager = NULL;
   201         iActivityManager = NULL;
   213     
   223     
   214     CloseStatements();   
   224     CloseStatements();   
   215     iDatabase.Close();
   225     iDatabase.Close();
   216     
   226     
   217     TN_DEBUG1( "CThumbnailStore::~CThumbnailStore() - database closed" );
   227     TN_DEBUG1( "CThumbnailStore::~CThumbnailStore() - database closed" );
       
   228     OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_CTHUMBNAILSTORE, "CThumbnailStore::~CThumbnailStore - database closed" );
   218     }
   229     }
   219 
   230 
   220 // ---------------------------------------------------------------------------
   231 // ---------------------------------------------------------------------------
   221 // CThumbnailStore::CThumbnailStore()
   232 // CThumbnailStore::CThumbnailStore()
   222 // C++ default constructor can NOT contain any code, that might leave.
   233 // C++ default constructor can NOT contain any code, that might leave.
   235 // ---------------------------------------------------------------------------
   246 // ---------------------------------------------------------------------------
   236 //
   247 //
   237 void CThumbnailStore::ConstructL()
   248 void CThumbnailStore::ConstructL()
   238     {
   249     {
   239     TN_DEBUG1( "CThumbnailStore::ConstructL()" );
   250     TN_DEBUG1( "CThumbnailStore::ConstructL()" );
       
   251     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_CONSTRUCTL, "CThumbnailStore::ConstructL" );
   240 
   252 
   241 #ifdef _DEBUG
   253 #ifdef _DEBUG
   242     iThumbCounter = 0;
   254     iThumbCounter = 0;
   243 #endif
   255 #endif
   244     if(!iReadOnly)
   256     if(!iReadOnly)
   255                                                 pathPtr );
   267                                                 pathPtr );
   256 
   268 
   257         CleanupStack::PopAndDestroy( databasePath );
   269         CleanupStack::PopAndDestroy( databasePath );
   258     
   270     
   259         TN_DEBUG2( "CThumbnailStore::ConstructL() drive: %d", iDrive );
   271         TN_DEBUG2( "CThumbnailStore::ConstructL() drive: %d", iDrive );
       
   272         OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_CONSTRUCTL, "CThumbnailStore::ConstructL;iDrive=%d", iDrive );
   260     
   273     
   261         OpenDatabaseL();
   274         OpenDatabaseL();
   262     
   275     
   263         // to monitor device activity
   276         // to monitor device activity
   264         iActivityManager = CTMActivityManager::NewL( this, KStoreMaintenanceIdle);
   277         iActivityManager = CTMActivityManager::NewL( this, KStoreMaintenanceIdle);
   268         iCheckFilesExist = ETrue;
   281         iCheckFilesExist = ETrue;
   269         }
   282         }
   270     else
   283     else
   271         {
   284         {
   272 	    TN_DEBUG1( "CThumbnailStore::ConstructL() - read only, dymmy mode..." );
   285 	    TN_DEBUG1( "CThumbnailStore::ConstructL() - read only, dymmy mode..." );
       
   286         OstTrace0( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_CONSTRUCTL, "CThumbnailStore::ConstructL - read only, dymmy mode..." );
   273         iDeleteThumbs = EFalse;
   287         iDeleteThumbs = EFalse;
   274         iCheckFilesExist = EFalse;
   288         iCheckFilesExist = EFalse;
   275         iLastCheckedRowID = -1;
   289         iLastCheckedRowID = -1;
   276         }
   290         }
   277     }
   291     }
   280 // OpenDatabaseL database file
   294 // OpenDatabaseL database file
   281 // ---------------------------------------------------------------------------
   295 // ---------------------------------------------------------------------------
   282 TInt CThumbnailStore::OpenDatabaseFileL()
   296 TInt CThumbnailStore::OpenDatabaseFileL()
   283     {
   297     {
   284     TN_DEBUG1( "CThumbnailStore::OpenDatabaseFile()" );
   298     TN_DEBUG1( "CThumbnailStore::OpenDatabaseFile()" );
       
   299     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_OPENDATABASEFILEL, "CThumbnailStore::OpenDatabaseFileL" );
   285     
   300     
   286     HBufC* databasePath = HBufC::NewLC( KMaxFileName );
   301     HBufC* databasePath = HBufC::NewLC( KMaxFileName );
   287     TPtr pathPtr = databasePath->Des();
   302     TPtr pathPtr = databasePath->Des();
   288     TChar driveChar = 0;
   303     TChar driveChar = 0;
   289     User::LeaveIfError( RFs::DriveToChar( iDrive, driveChar ));
   304     User::LeaveIfError( RFs::DriveToChar( iDrive, driveChar ));
   299 // OpenDatabaseL database
   314 // OpenDatabaseL database
   300 // ---------------------------------------------------------------------------
   315 // ---------------------------------------------------------------------------
   301 TInt CThumbnailStore::OpenDatabaseL( TBool aNewDatabase )
   316 TInt CThumbnailStore::OpenDatabaseL( TBool aNewDatabase )
   302     {
   317     {
   303     TN_DEBUG2( "CThumbnailStore::OpenDatabaseL() drive: %d", iDrive );
   318     TN_DEBUG2( "CThumbnailStore::OpenDatabaseL() drive: %d", iDrive );
       
   319     OstTrace1( TRACE_NORMAL, CTHUMBNAILSTORE_OPENDATABASEL, "CThumbnailStore::OpenDatabaseL;iDrive=%d", iDrive );
   304         
   320         
   305     CloseStatements();
   321     CloseStatements();
   306     iDatabase.Close();
   322     iDatabase.Close();
   307     iUnrecoverable = ETrue;
   323     iUnrecoverable = ETrue;
   308     
   324     
   323         {
   339         {
   324         // just open old
   340         // just open old
   325         err = OpenDatabaseFileL();
   341         err = OpenDatabaseFileL();
   326         
   342         
   327         TN_DEBUG2( "CThumbnailStore::OpenDatabaseL() -- err = %d", err);
   343         TN_DEBUG2( "CThumbnailStore::OpenDatabaseL() -- err = %d", err);
       
   344         OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_OPENDATABASEL, "CThumbnailStore::OpenDatabaseL;err=%d", err );
   328                
   345                
   329         if ( err == KErrNone)
   346         if ( err == KErrNone)
   330             {
   347             {
   331             // db found, check version and rowids
   348             // db found, check version and rowids
   332             checkError = CheckVersion();
   349             checkError = CheckVersion();
   393 // ---------------------------------------------------------------------------
   410 // ---------------------------------------------------------------------------
   394 //
   411 //
   395 void CThumbnailStore::PrepareDbL()
   412 void CThumbnailStore::PrepareDbL()
   396     {
   413     {
   397     TN_DEBUG1( "CThumbnailStore::PrepareDbL()" );
   414     TN_DEBUG1( "CThumbnailStore::PrepareDbL()" );
       
   415     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_PREPAREDBL, "CThumbnailStore::PrepareDbL" );
   398     
   416     
   399     // add persistent tables
   417     // add persistent tables
   400     CreateTablesL();
   418     CreateTablesL();
   401       
   419       
   402     AddVersionAndImeiL();
   420     AddVersionAndImeiL();
   410 // ---------------------------------------------------------------------------
   428 // ---------------------------------------------------------------------------
   411 //
   429 //
   412 void CThumbnailStore::CreateTablesL()
   430 void CThumbnailStore::CreateTablesL()
   413     {
   431     {
   414     TN_DEBUG1( "CThumbnailStore::CreateTablesL()" );
   432     TN_DEBUG1( "CThumbnailStore::CreateTablesL()" );
       
   433     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_CREATETABLESL, "CThumbnailStore::CreateTablesL" );
   415     
   434     
   416     TInt err = KErrNone;
   435     TInt err = KErrNone;
   417     err = iDatabase.Exec( KThumbnailCreateInfoTable );
   436     err = iDatabase.Exec( KThumbnailCreateInfoTable );
   418     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailCreateInfoTable err=%d", err );
   437     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailCreateInfoTable err=%d", err );
       
   438     OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_CREATETABLESL, "CThumbnailStore::CreateTablesL - KThumbnailCreateInfoTable;err=%d", err );
   419     User::LeaveIfError( err );
   439     User::LeaveIfError( err );
   420     
   440     
   421     err = iDatabase.Exec( KThumbnailCreateInfoDataTable );
   441     err = iDatabase.Exec( KThumbnailCreateInfoDataTable );
   422     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailCreateInfoDataTable err=%d", err );
   442     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailCreateInfoDataTable err=%d", err );
       
   443     OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_CREATETABLESL, "CThumbnailStore::CreateTablesL - KThumbnailCreateInfoDataTable;err=%d", err );
   423     User::LeaveIfError( err );
   444     User::LeaveIfError( err );
   424     
   445     
   425     err = iDatabase.Exec(KThumbnailDeletedTable);
   446     err = iDatabase.Exec(KThumbnailDeletedTable);
   426     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailDeletedTable err=%d", err );
   447     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailDeletedTable err=%d", err );
       
   448     OstTrace1( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_CREATETABLESL, "CThumbnailStore::CreateTablesL - KThumbnailDeletedTable;err=%d", err );
   427     User::LeaveIfError( err );
   449     User::LeaveIfError( err );
   428     
   450     
   429     err = iDatabase.Exec( KThumbnailCreateInfoTableIndex1 );
   451     err = iDatabase.Exec( KThumbnailCreateInfoTableIndex1 );
   430     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailCreateInfoTableIndex1 err=%d", err );
   452     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailCreateInfoTableIndex1 err=%d", err );
   431     User::LeaveIfError( err );
   453     User::LeaveIfError( err );
   432     
   454     
   433     err = iDatabase.Exec(KThumbnailVersionTable);
   455     err = iDatabase.Exec(KThumbnailVersionTable);
   434     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailVersionTable err=%d", err );
   456     TN_DEBUG2( "CThumbnailStore::CreateTablesL() KThumbnailVersionTable err=%d", err );
       
   457     OstTrace1( TRACE_NORMAL, DUP4_CTHUMBNAILSTORE_CREATETABLESL, "CThumbnailStore::CreateTablesL;err=%d", err );
   435     User::LeaveIfError( err );
   458     User::LeaveIfError( err );
   436     }
   459     }
   437 
   460 
   438 // ---------------------------------------------------------------------------
   461 // ---------------------------------------------------------------------------
   439 // Create temp tables
   462 // Create temp tables
   440 // ---------------------------------------------------------------------------
   463 // ---------------------------------------------------------------------------
   441 //
   464 //
   442 void CThumbnailStore::CreateTempTablesL()
   465 void CThumbnailStore::CreateTempTablesL()
   443     {
   466     {
   444     TN_DEBUG1( "CThumbnailStore::CreateTempTablesL()" );
   467     TN_DEBUG1( "CThumbnailStore::CreateTempTablesL()" );
       
   468     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_CREATETEMPTABLESL, "CThumbnailStore::CreateTempTablesL" );
   445 
   469 
   446     TInt err = iDatabase.Exec( KThumbnailCreateTempInfoTable );
   470     TInt err = iDatabase.Exec( KThumbnailCreateTempInfoTable );
   447 
   471 
   448 #ifdef _DEBUG
   472 #ifdef _DEBUG
   449     if(err < 0)
   473     if(err < 0)
   450         {
   474         {
   451         TPtrC errorMsg = iDatabase.LastErrorMessage();
   475         TPtrC errorMsg = iDatabase.LastErrorMessage();
   452         TN_DEBUG2( "CThumbnailStore::PrepareDbL() KThumbnailCreateTempInfoTable %S" , &errorMsg);
   476         TN_DEBUG2( "CThumbnailStore::PrepareDbL() KThumbnailCreateTempInfoTable %S" , &errorMsg);
       
   477         OstTraceExt1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_CREATETEMPTABLESL, "CThumbnailStore::CreateTempTablesL - KThumbnailCreateTempInfoTable;errorMsg=%S", errorMsg );
   453         }
   478         }
   454 #endif
   479 #endif
   455     
   480     
   456     User::LeaveIfError( err );
   481     User::LeaveIfError( err );
   457 
   482 
   460 #ifdef _DEBUG
   485 #ifdef _DEBUG
   461     if(err < 0)
   486     if(err < 0)
   462         {
   487         {
   463         TPtrC errorMsg = iDatabase.LastErrorMessage();
   488         TPtrC errorMsg = iDatabase.LastErrorMessage();
   464         TN_DEBUG2( "CThumbnailStore::PrepareDbL() KThumbnailCreateTempInfoDataTable %S" , &errorMsg);
   489         TN_DEBUG2( "CThumbnailStore::PrepareDbL() KThumbnailCreateTempInfoDataTable %S" , &errorMsg);
       
   490         OstTraceExt1( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_CREATETEMPTABLESL, "CThumbnailStore::CreateTempTablesL - KThumbnailCreateTempInfoDataTable;errorMsg=%S", errorMsg );
   465         }
   491         }
   466 #endif
   492 #endif
   467     
   493     
   468     User::LeaveIfError( err );
   494     User::LeaveIfError( err );
   469     }
   495     }
   470 
   496 
   471 void CThumbnailStore::RecreateDatabaseL(const TBool aDelete)
   497 void CThumbnailStore::RecreateDatabaseL(const TBool aDelete)
   472     {
   498     {
   473     TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() drive: %d", iDrive );
   499     TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() drive: %d", iDrive );
       
   500     OstTrace1( TRACE_NORMAL, CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL;iDrive=%d", iDrive );
   474     
   501     
   475     TVolumeInfo volumeinfo;
   502     TVolumeInfo volumeinfo;
   476     User::LeaveIfError( iFs.Volume(volumeinfo, iDrive) );
   503     User::LeaveIfError( iFs.Volume(volumeinfo, iDrive) );
   477     TUint id = volumeinfo.iUniqueID;
   504     TUint id = volumeinfo.iUniqueID;
   478     TBuf<50> mediaid;
   505     TBuf<50> mediaid;
   481     CloseStatements();
   508     CloseStatements();
   482     iDatabase.Close();
   509     iDatabase.Close();
   483     iUnrecoverable = ETrue;
   510     iUnrecoverable = ETrue;
   484     
   511     
   485     TN_DEBUG1( "CThumbnailStore::RecreateDatabaseL() database closed" );
   512     TN_DEBUG1( "CThumbnailStore::RecreateDatabaseL() database closed" );
       
   513     OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL - database closed" );
   486     
   514     
   487     HBufC* databasePath = HBufC::NewLC( KMaxFileName );
   515     HBufC* databasePath = HBufC::NewLC( KMaxFileName );
   488     TPtr pathPtr = databasePath->Des();
   516     TPtr pathPtr = databasePath->Des();
   489     User::LeaveIfError( RFs::DriveToChar( iDrive, iDriveChar ));
   517     User::LeaveIfError( RFs::DriveToChar( iDrive, iDriveChar ));
   490     pathPtr.Append( iDriveChar );
   518     pathPtr.Append( iDriveChar );
   494     
   522     
   495     // delete old if necessary
   523     // delete old if necessary
   496     if(aDelete)
   524     if(aDelete)
   497         {
   525         {
   498         TN_DEBUG1( "CThumbnailStore::RecreateDatabaseL() delete database" );
   526         TN_DEBUG1( "CThumbnailStore::RecreateDatabaseL() delete database" );
       
   527         OstTrace0( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL - delete database" );
   499         TInt del = iDatabase.Delete(pathPtr);     
   528         TInt del = iDatabase.Delete(pathPtr);     
   500         TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() deleted database, err: %d", del );       
   529         TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() deleted database, err: %d", del );       
       
   530         OstTrace0( TRACE_NORMAL, DUP4_CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL" );
   501         }
   531         }
   502         
   532         
   503     const TDesC8& config = KThumbnailSqlConfig;
   533     const TDesC8& config = KThumbnailSqlConfig;
   504 
   534 
   505     RSqlSecurityPolicy securityPolicy;
   535     RSqlSecurityPolicy securityPolicy;
   506     CleanupClosePushL( securityPolicy );
   536     CleanupClosePushL( securityPolicy );
   507     securityPolicy.CreateL( KThumbnailDatabaseSecurityPolicy );
   537     securityPolicy.CreateL( KThumbnailDatabaseSecurityPolicy );
   508 
   538 
   509     // create new
   539     // create new
   510     TN_DEBUG1( "CThumbnailStore::RecreateDatabaseL() create new" );
   540     TN_DEBUG1( "CThumbnailStore::RecreateDatabaseL() create new" );
       
   541     OstTrace0( TRACE_FATAL, DUP3_CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL - create new" );
   511     TRAP(err, iDatabase.CreateL( pathPtr, securityPolicy, &config ));    
   542     TRAP(err, iDatabase.CreateL( pathPtr, securityPolicy, &config ));    
   512     TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() -- database created, err = %d", err );
   543     TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() -- database created, err = %d", err );
       
   544     OstTrace1( TRACE_FATAL, DUP5_CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL;err=%d", err );
   513     User::LeaveIfError(err);
   545     User::LeaveIfError(err);
   514     
   546     
   515     CleanupStack::PopAndDestroy( &securityPolicy );
   547     CleanupStack::PopAndDestroy( &securityPolicy );
   516     
   548     
   517     // add tables
   549     // add tables
   518     TRAPD(prepareErr, PrepareDbL() );
   550     TRAPD(prepareErr, PrepareDbL() );
   519     
   551     
   520     TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() -- prepare tables, err = %d", prepareErr );
   552     TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() -- prepare tables, err = %d", prepareErr );
       
   553     OstTrace1( TRACE_FATAL, DUP6_CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL - prepare tables;prepareErr=%d", prepareErr );
   521     
   554     
   522     TInt mediaidErr(KErrNone);
   555     TInt mediaidErr(KErrNone);
   523     
   556     
   524     // write media id file if doesn't exist
   557     // write media id file if doesn't exist
   525     if(!BaflUtils::FileExists( iFs, mediaid ))
   558     if(!BaflUtils::FileExists( iFs, mediaid ))
   527         RFile64 file;
   560         RFile64 file;
   528         mediaidErr = file.Create(iFs, mediaid, EFileShareReadersOrWriters );
   561         mediaidErr = file.Create(iFs, mediaid, EFileShareReadersOrWriters );
   529         file.Close();
   562         file.Close();
   530         
   563         
   531         TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() -- mediaID file created, err = %d", mediaidErr );
   564         TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() -- mediaID file created, err = %d", mediaidErr );
       
   565         OstTrace1( TRACE_FATAL, DUP7_CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL;mediaidErr=%d", mediaidErr );
   532         }
   566         }
   533     
   567     
   534     // delete db if not fully complete
   568     // delete db if not fully complete
   535     if (prepareErr < 0 || mediaidErr < 0)
   569     if (prepareErr < 0 || mediaidErr < 0)
   536         {
   570         {
   537         CloseStatements();
   571         CloseStatements();
   538         iDatabase.Close();
   572         iDatabase.Close();
   539         TN_DEBUG1( "CThumbnailStore::RecreateDatabaseL() delete database" );
   573         TN_DEBUG1( "CThumbnailStore::RecreateDatabaseL() delete database" );
       
   574         OstTrace0( TRACE_FATAL, DUP8_CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL - delete database" );
   540         TInt del = iDatabase.Delete(pathPtr);     
   575         TInt del = iDatabase.Delete(pathPtr);     
   541         TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() deleted database, err: %d", del );
   576         TN_DEBUG2( "CThumbnailStore::RecreateDatabaseL() deleted database, err: %d", del );
       
   577         OstTrace1( TRACE_FATAL, DUP9_CTHUMBNAILSTORE_RECREATEDATABASEL, "CThumbnailStore::RecreateDatabaseL - delete database;del=%d", del );
   542         }
   578         }
   543     
   579     
   544     User::LeaveIfError( prepareErr );
   580     User::LeaveIfError( prepareErr );
   545     User::LeaveIfError( mediaidErr );
   581     User::LeaveIfError( mediaidErr );
   546     
   582     
   548     }
   584     }
   549 
   585 
   550 TInt CThumbnailStore::CheckRowIDs()
   586 TInt CThumbnailStore::CheckRowIDs()
   551     {
   587     {
   552     TN_DEBUG1( "CThumbnailStore::CheckRowIDs()");
   588     TN_DEBUG1( "CThumbnailStore::CheckRowIDs()");
       
   589     OstTrace0( TRACE_FATAL, CTHUMBNAILSTORE_CHECKROWIDS, "CThumbnailStore::CheckRowIDs" );
   553     
   590     
   554     RSqlStatement stmt;
   591     RSqlStatement stmt;
   555     TInt column = 0;   
   592     TInt column = 0;   
   556     TInt rowStatus = 0;
   593     TInt rowStatus = 0;
   557     TInt64 inforows = -1;
   594     TInt64 inforows = -1;
   560     TInt ret = stmt.Prepare( iDatabase, KGetInfoRowID );
   597     TInt ret = stmt.Prepare( iDatabase, KGetInfoRowID );
   561     if(ret < 0)
   598     if(ret < 0)
   562         {
   599         {
   563         stmt.Close();
   600         stmt.Close();
   564         TN_DEBUG1( "CThumbnailStore::CheckRowIDs() KGetInfoRowID failed %d");
   601         TN_DEBUG1( "CThumbnailStore::CheckRowIDs() KGetInfoRowID failed %d");
       
   602         OstTrace1( TRACE_FATAL, DUP1_CTHUMBNAILSTORE_CHECKROWIDS, "CThumbnailStore::CheckRowIDs KGetInfoRowID failed;ret=%d", ret );
   565         return KErrNotSupported;
   603         return KErrNotSupported;
   566         }
   604         }
   567     rowStatus = stmt.Next();
   605     rowStatus = stmt.Next();
   568                 
   606                 
   569     if ( rowStatus == KSqlAtRow)    
   607     if ( rowStatus == KSqlAtRow)    
   576     if(rowStatus < 0)
   614     if(rowStatus < 0)
   577         {
   615         {
   578 #ifdef _DEBUG
   616 #ifdef _DEBUG
   579         TPtrC errorMsg2 = iDatabase.LastErrorMessage();
   617         TPtrC errorMsg2 = iDatabase.LastErrorMessage();
   580         TN_DEBUG2( "RThumbnailTransaction::ResetThumbnailIDs() lastError %S, ret = %d" , &errorMsg2);
   618         TN_DEBUG2( "RThumbnailTransaction::ResetThumbnailIDs() lastError %S, ret = %d" , &errorMsg2);
       
   619         OstTraceExt1( TRACE_FATAL, DUP2_CTHUMBNAILSTORE_CHECKROWIDS, "CThumbnailStore::CheckRowIDs - lastError;errorMsg2=%S", errorMsg2 );
   581 #endif
   620 #endif
   582         return KErrNotSupported;
   621         return KErrNotSupported;
   583         }
   622         }
   584               
   623               
   585     ret = stmt.Prepare( iDatabase, KGetDataRowID );
   624     ret = stmt.Prepare( iDatabase, KGetDataRowID );
   586     if(ret < 0)
   625     if(ret < 0)
   587         {
   626         {
   588         stmt.Close();
   627         stmt.Close();
   589         TN_DEBUG1( "CThumbnailStore::CheckRowIDs() KGetDataRowID failed");
   628         TN_DEBUG1( "CThumbnailStore::CheckRowIDs() KGetDataRowID failed");
       
   629         OstTrace0( TRACE_FATAL, DUP3_CTHUMBNAILSTORE_CHECKROWIDS, "CThumbnailStore::CheckRowIDs - KGetDataRowID failed" );
   590         return KErrNotSupported;
   630         return KErrNotSupported;
   591         }
   631         }
   592     rowStatus = stmt.Next();
   632     rowStatus = stmt.Next();
   593                        
   633                        
   594     if ( rowStatus == KSqlAtRow)    
   634     if ( rowStatus == KSqlAtRow)    
   601     if( rowStatus < 0)
   641     if( rowStatus < 0)
   602         {
   642         {
   603 #ifdef _DEBUG
   643 #ifdef _DEBUG
   604         TPtrC errorMsg2 = iDatabase.LastErrorMessage();
   644         TPtrC errorMsg2 = iDatabase.LastErrorMessage();
   605         TN_DEBUG2( "RThumbnailTransaction::ResetThumbnailIDs() lastError %S, ret = %d" , &errorMsg2);
   645         TN_DEBUG2( "RThumbnailTransaction::ResetThumbnailIDs() lastError %S, ret = %d" , &errorMsg2);
       
   646         OstTraceExt1( TRACE_FATAL, DUP4_CTHUMBNAILSTORE_CHECKROWIDS, "CThumbnailStore::CheckRowIDs - lastError;errorMsg2=%S", errorMsg2 );
   606 #endif
   647 #endif
   607         return KErrNotSupported;
   648         return KErrNotSupported;
   608         }
   649         }
   609     
   650     
   610     TN_DEBUG2( "CThumbnailStore::CheckRowIDsL() - inforows %Ld", inforows );
   651     TN_DEBUG2( "CThumbnailStore::CheckRowIDsL() - inforows %Ld", inforows );
       
   652     OstTraceExt1( TRACE_FATAL, DUP5_CTHUMBNAILSTORE_CHECKROWIDS, "CThumbnailStore::CheckRowIDs;inforows=%g", inforows );
   611     TN_DEBUG2( "CThumbnailStore::CheckRowIDsL() - datarows %Ld", datarows );
   653     TN_DEBUG2( "CThumbnailStore::CheckRowIDsL() - datarows %Ld", datarows );
       
   654     OstTraceExt1( TRACE_FATAL, DUP6_CTHUMBNAILSTORE_CHECKROWIDS, "CThumbnailStore::CheckRowIDs;datarows=%Ld", datarows );
   612             
   655             
   613     if( inforows != datarows )
   656     if( inforows != datarows )
   614         {
   657         {
   615         TN_DEBUG1( "CThumbnailStore::CheckRowIDsL() - tables out of sync" );
   658         TN_DEBUG1( "CThumbnailStore::CheckRowIDsL() - tables out of sync" );
   616         return KErrNotSupported;
   659         return KErrNotSupported;
   626 // -----------------------------------------------------------------------------
   669 // -----------------------------------------------------------------------------
   627 //
   670 //
   628 TInt CThumbnailStore::CheckVersion()
   671 TInt CThumbnailStore::CheckVersion()
   629     {
   672     {
   630     TN_DEBUG1( "CThumbnailStore::CheckVersion()" );
   673     TN_DEBUG1( "CThumbnailStore::CheckVersion()" );
       
   674     OstTrace0( TRACE_FATAL, CTHUMBNAILSTORE_CHECKVERSION, "CThumbnailStore::CheckVersion" );
   631     RSqlStatement stmt;
   675     RSqlStatement stmt;
   632          
   676          
   633     TInt rowStatus = 0;
   677     TInt rowStatus = 0;
   634     TInt column = 0;
   678     TInt column = 0;
   635     TInt minor = 0;
   679     TInt minor = 0;
   638     TInt ret = stmt.Prepare( iDatabase, KThumbnailSelectFromVersion );
   682     TInt ret = stmt.Prepare( iDatabase, KThumbnailSelectFromVersion );
   639     if(ret < 0 )
   683     if(ret < 0 )
   640        {  
   684        {  
   641        stmt.Close();
   685        stmt.Close();
   642        TN_DEBUG1( "CThumbnailStore::CheckVersion() unknown version" );
   686        TN_DEBUG1( "CThumbnailStore::CheckVersion() unknown version" );
       
   687        OstTrace0( TRACE_FATAL, DUP1_CTHUMBNAILSTORE_CHECKVERSION, "CThumbnailStore::CheckVersion - unknown version" );
   643        return KErrNotSupported;
   688        return KErrNotSupported;
   644        }
   689        }
   645               
   690               
   646     rowStatus = stmt.Next();
   691     rowStatus = stmt.Next();
   647     
   692     
   656     if( rowStatus < 0 )
   701     if( rowStatus < 0 )
   657         {
   702         {
   658 #ifdef _DEBUG
   703 #ifdef _DEBUG
   659          TPtrC errorMsg = iDatabase.LastErrorMessage();
   704          TPtrC errorMsg = iDatabase.LastErrorMessage();
   660         TN_DEBUG2( "RThumbnailTransaction::CheckVersion() lastError %S, ret = %d" , &errorMsg);
   705         TN_DEBUG2( "RThumbnailTransaction::CheckVersion() lastError %S, ret = %d" , &errorMsg);
       
   706         OstTrace0( TRACE_FATAL, DUP2_CTHUMBNAILSTORE_CHECKVERSION, "CThumbnailStore::CheckVersion" );
   661 #endif
   707 #endif
   662         return ret;
   708         return ret;
   663         }
   709         }
   664     
   710     
   665     if(major == KMajor && minor == KMinor )
   711     if(major == KMajor && minor == KMinor )
   667       return KErrNone;  
   713       return KErrNone;  
   668       }
   714       }
   669     else
   715     else
   670       {
   716       {
   671       TN_DEBUG1( "CThumbnailStore::CheckVersion() - wrong DB version" );
   717       TN_DEBUG1( "CThumbnailStore::CheckVersion() - wrong DB version" );
       
   718       OstTrace0( TRACE_FATAL, DUP3_CTHUMBNAILSTORE_CHECKVERSION, "CThumbnailStore::CheckVersion" );
   672       return KErrNotSupported;  
   719       return KErrNotSupported;  
   673       }
   720       }
   674     }
   721     }
   675 
   722 
   676 // -----------------------------------------------------------------------------
   723 // -----------------------------------------------------------------------------
   678 // -----------------------------------------------------------------------------
   725 // -----------------------------------------------------------------------------
   679 //
   726 //
   680 TInt CThumbnailStore::CheckImei()
   727 TInt CThumbnailStore::CheckImei()
   681     {
   728     {
   682     TN_DEBUG1( "CThumbnailStore::CheckImei()" );
   729     TN_DEBUG1( "CThumbnailStore::CheckImei()" );
       
   730     OstTrace0( TRACE_FATAL, CTHUMBNAILSTORE_CHECKIMEI, "CThumbnailStore::CheckImei" );
   683     RSqlStatement stmt;
   731     RSqlStatement stmt;
   684          
   732          
   685     TInt rowStatus = 0;
   733     TInt rowStatus = 0;
   686     TInt column = 0;
   734     TInt column = 0;
   687     TBuf<KImeiBufferSize> imei;
   735     TBuf<KImeiBufferSize> imei;
   689     TInt ret = stmt.Prepare( iDatabase, KThumbnailSelectFromVersion );
   737     TInt ret = stmt.Prepare( iDatabase, KThumbnailSelectFromVersion );
   690     if(ret < 0 )
   738     if(ret < 0 )
   691        {  
   739        {  
   692         stmt.Close();
   740         stmt.Close();
   693        TN_DEBUG1( "CThumbnailStore::CheckImei() failed" );
   741        TN_DEBUG1( "CThumbnailStore::CheckImei() failed" );
       
   742        OstTrace0( TRACE_FATAL, DUP1_CTHUMBNAILSTORE_CHECKIMEI, "CThumbnailStore::CheckImei - failed" );
   694        return KErrNotSupported;
   743        return KErrNotSupported;
   695        }
   744        }
   696               
   745               
   697     rowStatus = stmt.Next();
   746     rowStatus = stmt.Next();
   698     
   747     
   707     if( rowStatus < 0 )
   756     if( rowStatus < 0 )
   708         {
   757         {
   709 #ifdef _DEBUG
   758 #ifdef _DEBUG
   710          TPtrC errorMsg = iDatabase.LastErrorMessage();
   759          TPtrC errorMsg = iDatabase.LastErrorMessage();
   711         TN_DEBUG2( "RThumbnailTransaction::CheckImei() lastError %S, ret = %d" , &errorMsg);
   760         TN_DEBUG2( "RThumbnailTransaction::CheckImei() lastError %S, ret = %d" , &errorMsg);
       
   761         OstTraceExt1( TRACE_FATAL, DUP2_CTHUMBNAILSTORE_CHECKIMEI, "CThumbnailStore::CheckImei - lastError;errorMsg=%S", errorMsg );
   712 #endif
   762 #endif
   713         return ret;
   763         return ret;
   714         }
   764         }
   715     
   765     
   716     if( imei == iImei )
   766     if( imei == iImei )
   718       return KErrNone;  
   768       return KErrNone;  
   719       }
   769       }
   720     else
   770     else
   721       {
   771       {
   722       TN_DEBUG1( "CThumbnailStore::CheckImei() mismatch" );
   772       TN_DEBUG1( "CThumbnailStore::CheckImei() mismatch" );
       
   773       OstTrace0( TRACE_FATAL, DUP3_CTHUMBNAILSTORE_CHECKIMEI, "CThumbnailStore::CheckImei - mismatch" );
   723       return KErrNotSupported;  
   774       return KErrNotSupported;  
   724       }
   775       }
   725     }
   776     }
   726 
   777 
   727 // -----------------------------------------------------------------------------
   778 // -----------------------------------------------------------------------------
   729 // -----------------------------------------------------------------------------
   780 // -----------------------------------------------------------------------------
   730 //
   781 //
   731 TInt CThumbnailStore::CheckMediaIDL()
   782 TInt CThumbnailStore::CheckMediaIDL()
   732     {
   783     {
   733     TN_DEBUG1( "CThumbnailStore::CheckMediaIDL()" );
   784     TN_DEBUG1( "CThumbnailStore::CheckMediaIDL()" );
       
   785     OstTrace0( TRACE_FATAL, CTHUMBNAILSTORE_CHECKMEDIAIDL, "CThumbnailStore::CheckMediaIDL" );
   734     
   786     
   735     TVolumeInfo volumeinfo;
   787     TVolumeInfo volumeinfo;
   736     User::LeaveIfError( iFs.Volume(volumeinfo, iDrive) );
   788     User::LeaveIfError( iFs.Volume(volumeinfo, iDrive) );
   737     TUint id = volumeinfo.iUniqueID;
   789     TUint id = volumeinfo.iUniqueID;
   738     TBuf<50> mediaid;
   790     TBuf<50> mediaid;
   742        {
   794        {
   743        RFile64 file;
   795        RFile64 file;
   744        TInt err = file.Create(iFs, mediaid, EFileShareReadersOrWriters );
   796        TInt err = file.Create(iFs, mediaid, EFileShareReadersOrWriters );
   745        file.Close();
   797        file.Close();
   746        TN_DEBUG2( "CThumbnailStore::CheckMediaIDL() -- mediaID file created, err = %d", err );
   798        TN_DEBUG2( "CThumbnailStore::CheckMediaIDL() -- mediaID file created, err = %d", err );
       
   799        OstTrace1( TRACE_FATAL, DUP1_CTHUMBNAILSTORE_CHECKMEDIAIDL, "CThumbnailStore::CheckMediaIDL - mediaID file created;err=%d", err );
   747        
   800        
   748        return KErrNotSupported;
   801        return KErrNotSupported;
   749        } 
   802        } 
   750 
   803 
   751     return KErrNone;  
   804     return KErrNone;  
   756 // -----------------------------------------------------------------------------
   809 // -----------------------------------------------------------------------------
   757 //
   810 //
   758 void CThumbnailStore::AddVersionAndImeiL()
   811 void CThumbnailStore::AddVersionAndImeiL()
   759     {
   812     {
   760     TN_DEBUG1( "CThumbnailStore::AddVersionAndImei()" );
   813     TN_DEBUG1( "CThumbnailStore::AddVersionAndImei()" );
       
   814     OstTrace0( TRACE_FATAL, CTHUMBNAILSTORE_ADDVERSIONANDIMEIL, "CThumbnailStore::AddVersionAndImeiL" );
   761     RSqlStatement stmt;
   815     RSqlStatement stmt;
   762     CleanupClosePushL( stmt );
   816     CleanupClosePushL( stmt );
   763             
   817             
   764     TInt paramIndex = 0;
   818     TInt paramIndex = 0;
   765             
   819             
   785 // -----------------------------------------------------------------------------
   839 // -----------------------------------------------------------------------------
   786 //
   840 //
   787 void CThumbnailStore::UpdateImeiL()
   841 void CThumbnailStore::UpdateImeiL()
   788     {
   842     {
   789     TN_DEBUG1( "CThumbnailStore::UpdateImeiL()" );
   843     TN_DEBUG1( "CThumbnailStore::UpdateImeiL()" );
       
   844     OstTrace0( TRACE_FATAL, CTHUMBNAILSTORE_UPDATEIMEIL, "CThumbnailStore::UpdateImeiL" );
   790     RSqlStatement stmt;
   845     RSqlStatement stmt;
   791     CleanupClosePushL( stmt );
   846     CleanupClosePushL( stmt );
   792             
   847             
   793     User::LeaveIfError( stmt.Prepare( iDatabase, KThumbnailUpdateIMEI ) );
   848     User::LeaveIfError( stmt.Prepare( iDatabase, KThumbnailUpdateIMEI ) );
   794     
   849     
   801     if(err < 0)
   856     if(err < 0)
   802         {
   857         {
   803 #ifdef _DEBUG
   858 #ifdef _DEBUG
   804         TPtrC errorMsg = iDatabase.LastErrorMessage();
   859         TPtrC errorMsg = iDatabase.LastErrorMessage();
   805         TN_DEBUG2( "RThumbnailTransaction::UpdateImeiL() lastError %S" , &errorMsg);
   860         TN_DEBUG2( "RThumbnailTransaction::UpdateImeiL() lastError %S" , &errorMsg);
       
   861         OstTraceExt1( TRACE_FATAL, DUP1_CTHUMBNAILSTORE_UPDATEIMEIL, "CThumbnailStore::UpdateImeiL - lastError;errorMsg=%S", errorMsg );
   806 #endif
   862 #endif
   807         User::Leave(err);
   863         User::Leave(err);
   808         }
   864         }
   809     
   865     
   810     CleanupStack::PopAndDestroy( &stmt );
   866     CleanupStack::PopAndDestroy( &stmt );
   815 // ---------------------------------------------------------------------------
   871 // ---------------------------------------------------------------------------
   816 //
   872 //
   817 void CThumbnailStore::PrepareStatementsL()
   873 void CThumbnailStore::PrepareStatementsL()
   818     {
   874     {
   819     TN_DEBUG1("CThumbnailStore::PrepareStatementsL()");
   875     TN_DEBUG1("CThumbnailStore::PrepareStatementsL()");
       
   876     OstTrace0( TRACE_FATAL, CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL" );
   820     
   877     
   821     TInt err = KErrNone;  
   878     TInt err = KErrNone;  
   822 #ifdef _DEBUG
   879 #ifdef _DEBUG
   823     TFileName msg;
   880     TFileName msg;
   824 #endif
   881 #endif
   825     
   882     
   826     err = iStmt_KThumbnailSelectInfoByPath.Prepare( iDatabase, KThumbnailSelectInfoByPath );
   883     err = iStmt_KThumbnailSelectInfoByPath.Prepare( iDatabase, KThumbnailSelectInfoByPath );
   827 #ifdef _DEBUG
   884 #ifdef _DEBUG
   828     msg.Append( iDatabase.LastErrorMessage() );
   885     msg.Append( iDatabase.LastErrorMessage() );
   829     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectInfoByPath %S" , &msg );
   886     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectInfoByPath %S" , &msg );
       
   887     OstTraceExt1( TRACE_FATAL, DUP1_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSelectInfoByPath;msg=%S", msg );
   830     msg.Zero();
   888     msg.Zero();
   831 #endif
   889 #endif
   832     User::LeaveIfError( err );
   890     User::LeaveIfError( err );
   833     
   891     
   834     err = iStmt_KThumbnailSelectTempInfoByPath.Prepare( iDatabase, KThumbnailSelectTempInfoByPath );
   892     err = iStmt_KThumbnailSelectTempInfoByPath.Prepare( iDatabase, KThumbnailSelectTempInfoByPath );
   835 #ifdef _DEBUG
   893 #ifdef _DEBUG
   836     msg.Append( iDatabase.LastErrorMessage() );
   894     msg.Append( iDatabase.LastErrorMessage() );
   837     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectTempInfoByPath %S" , &msg );
   895     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectTempInfoByPath %S" , &msg );
       
   896     OstTraceExt1( TRACE_FATAL, DUP2_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSelectTempInfoByPath;msg=%S", msg );
   838     msg.Zero();
   897     msg.Zero();
   839 #endif
   898 #endif
   840     User::LeaveIfError( err );
   899     User::LeaveIfError( err );
   841 
   900 
   842     err = iStmt_KThumbnailInsertTempThumbnailInfo.Prepare( iDatabase, KThumbnailInsertTempThumbnailInfo );
   901     err = iStmt_KThumbnailInsertTempThumbnailInfo.Prepare( iDatabase, KThumbnailInsertTempThumbnailInfo );
   843 #ifdef _DEBUG
   902 #ifdef _DEBUG
   844     msg.Append( iDatabase.LastErrorMessage() );
   903     msg.Append( iDatabase.LastErrorMessage() );
   845     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailInsertTempThumbnailInfo %S" , &msg );
   904     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailInsertTempThumbnailInfo %S" , &msg );
       
   905     OstTraceExt1( TRACE_FATAL, DUP3_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailInsertTempThumbnailInfo ;msg=%S", msg );
   846     msg.Zero();
   906     msg.Zero();
   847 #endif
   907 #endif
   848     User::LeaveIfError( err );
   908     User::LeaveIfError( err );
   849     
   909     
   850     err = iStmt_KThumbnailInsertTempThumbnailInfoData.Prepare( iDatabase, KThumbnailInsertTempThumbnailInfoData );
   910     err = iStmt_KThumbnailInsertTempThumbnailInfoData.Prepare( iDatabase, KThumbnailInsertTempThumbnailInfoData );
   851 #ifdef _DEBUG
   911 #ifdef _DEBUG
   852     msg.Append( iDatabase.LastErrorMessage() );
   912     msg.Append( iDatabase.LastErrorMessage() );
   853     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailInsertTempThumbnailInfoData %S" , &msg );
   913     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailInsertTempThumbnailInfoData %S" , &msg );
       
   914     OstTraceExt1( TRACE_FATAL, DUP4_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailInsertTempThumbnailInfoData;msg=%S", msg );
   854     msg.Zero();
   915     msg.Zero();
   855 #endif
   916 #endif
   856     User::LeaveIfError( err );
   917     User::LeaveIfError( err );
   857     
   918     
   858     err = iStmt_KThumbnailSelectModifiedByPath.Prepare( iDatabase, KThumbnailSelectModifiedByPath );
   919     err = iStmt_KThumbnailSelectModifiedByPath.Prepare( iDatabase, KThumbnailSelectModifiedByPath );
   859 #ifdef _DEBUG
   920 #ifdef _DEBUG
   860     msg.Append( iDatabase.LastErrorMessage() );
   921     msg.Append( iDatabase.LastErrorMessage() );
   861     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectModifiedByPath %S" , &msg );
   922     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectModifiedByPath %S" , &msg );
       
   923     OstTraceExt1( TRACE_FATAL, DUP5_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL;msg=%S", msg );
   862     msg.Zero();
   924     msg.Zero();
   863 #endif
   925 #endif
   864     User::LeaveIfError( err );
   926     User::LeaveIfError( err );
   865     
   927     
   866     err = iStmt_KThumbnailSelectTempModifiedByPath.Prepare( iDatabase, KThumbnailSelectTempModifiedByPath );
   928     err = iStmt_KThumbnailSelectTempModifiedByPath.Prepare( iDatabase, KThumbnailSelectTempModifiedByPath );
   867 #ifdef _DEBUG
   929 #ifdef _DEBUG
   868     msg.Append( iDatabase.LastErrorMessage() );
   930     msg.Append( iDatabase.LastErrorMessage() );
   869     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectTempModifiedByPath %S" , &msg );
   931     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectTempModifiedByPath %S" , &msg );
       
   932     OstTraceExt1( TRACE_FATAL, DUP6_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSelectTempModifiedByPath;msg=%S", msg );
   870     msg.Zero();
   933     msg.Zero();
   871 #endif
   934 #endif
   872     User::LeaveIfError( err );
   935     User::LeaveIfError( err );
   873     
   936     
   874     err = iStmt_KThumbnailFindDuplicate.Prepare( iDatabase, KThumbnailFindDuplicate );
   937     err = iStmt_KThumbnailFindDuplicate.Prepare( iDatabase, KThumbnailFindDuplicate );
   875 #ifdef _DEBUG
   938 #ifdef _DEBUG
   876     msg.Append( iDatabase.LastErrorMessage() );
   939     msg.Append( iDatabase.LastErrorMessage() );
   877     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailFindDuplicate %S" , &msg );
   940     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailFindDuplicate %S" , &msg );
       
   941     OstTraceExt1( TRACE_FATAL, DUP7_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailFindDuplicate;msg=%S", msg );
   878     msg.Zero();
   942     msg.Zero();
   879 #endif
   943 #endif
   880     User::LeaveIfError( err );
   944     User::LeaveIfError( err );
   881     
   945     
   882     err = iStmt_KThumbnailTempFindDuplicate.Prepare( iDatabase, KThumbnailTempFindDuplicate );
   946     err = iStmt_KThumbnailTempFindDuplicate.Prepare( iDatabase, KThumbnailTempFindDuplicate );
   883 #ifdef _DEBUG
   947 #ifdef _DEBUG
   884     msg.Append( iDatabase.LastErrorMessage() );
   948     msg.Append( iDatabase.LastErrorMessage() );
   885     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailTempFindDuplicate %S" , &msg );
   949     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailTempFindDuplicate %S" , &msg );
       
   950     OstTraceExt1( TRACE_FATAL, DUP8_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailTempFindDuplicate;msg=%S", msg );
   886     msg.Zero();
   951     msg.Zero();
   887 #endif
   952 #endif
   888     User::LeaveIfError( err );
   953     User::LeaveIfError( err );
   889     
   954     
   890     err = iStmt_KThumbnailSqlFindDeleted.Prepare( iDatabase, KThumbnailSqlFindDeleted );
   955     err = iStmt_KThumbnailSqlFindDeleted.Prepare( iDatabase, KThumbnailSqlFindDeleted );
   891 #ifdef _DEBUG
   956 #ifdef _DEBUG
   892     msg.Append( iDatabase.LastErrorMessage() );
   957     msg.Append( iDatabase.LastErrorMessage() );
   893     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlFindDeleted %S" , &msg );
   958     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlFindDeleted %S" , &msg );
       
   959     OstTraceExt1( TRACE_FATAL, DUP9_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSqlFindDeleted;msg=%S", msg );
   894     msg.Zero();
   960     msg.Zero();
   895 #endif
   961 #endif
   896     User::LeaveIfError( err );
   962     User::LeaveIfError( err );
   897     
   963     
   898     err = iStmt_KThumbnailSelectSizeByPath.Prepare( iDatabase, KThumbnailSelectSizeByPath );
   964     err = iStmt_KThumbnailSelectSizeByPath.Prepare( iDatabase, KThumbnailSelectSizeByPath );
   899 #ifdef _DEBUG
   965 #ifdef _DEBUG
   900     msg.Append( iDatabase.LastErrorMessage() );
   966     msg.Append( iDatabase.LastErrorMessage() );
   901     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectSizeByPath %S" , &msg );
   967     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectSizeByPath %S" , &msg );
       
   968     OstTraceExt1( TRACE_FATAL, DUP10_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSelectSizeByPath;msg=%S", msg );
   902     msg.Zero();
   969     msg.Zero();
   903 #endif
   970 #endif
   904     User::LeaveIfError( err );
   971     User::LeaveIfError( err );
   905     
   972     
   906     err = iStmt_KThumbnailSelectTempSizeByPath.Prepare( iDatabase, KThumbnailSelectTempSizeByPath );
   973     err = iStmt_KThumbnailSelectTempSizeByPath.Prepare( iDatabase, KThumbnailSelectTempSizeByPath );
   907 #ifdef _DEBUG
   974 #ifdef _DEBUG
   908     msg.Append( iDatabase.LastErrorMessage() );
   975     msg.Append( iDatabase.LastErrorMessage() );
   909     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectTempSizeByPath %S" , &msg );
   976     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectTempSizeByPath %S" , &msg );
       
   977     OstTraceExt1( TRACE_FATAL, DUP11_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSelectTempSizeByPath;msg=%S", msg );
   910     msg.Zero();
   978     msg.Zero();
   911 #endif
   979 #endif
   912     User::LeaveIfError( err );
   980     User::LeaveIfError( err );
   913     
   981     
   914     err = iStmt_KThumbnailSqlSelectRowIDInfoByPath.Prepare( iDatabase, KThumbnailSqlSelectRowIDInfoByPath );
   982     err = iStmt_KThumbnailSqlSelectRowIDInfoByPath.Prepare( iDatabase, KThumbnailSqlSelectRowIDInfoByPath );
   915 #ifdef _DEBUG
   983 #ifdef _DEBUG
   916     msg.Append( iDatabase.LastErrorMessage() );
   984     msg.Append( iDatabase.LastErrorMessage() );
   917     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlSelectRowIDInfoByPath %S" , &msg );
   985     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlSelectRowIDInfoByPath %S" , &msg );
       
   986     OstTraceExt1( TRACE_FATAL, DUP12_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSqlSelectRowIDInfoByPath;msg=%S", msg );
   918     msg.Zero();
   987     msg.Zero();
   919 #endif
   988 #endif
   920     User::LeaveIfError( err );
   989     User::LeaveIfError( err );
   921     
   990     
   922     err = iStmt_KThumbnailSqlDeleteInfoByPath.Prepare( iDatabase, KThumbnailSqlDeleteInfoByPath );
   991     err = iStmt_KThumbnailSqlDeleteInfoByPath.Prepare( iDatabase, KThumbnailSqlDeleteInfoByPath );
   923 #ifdef _DEBUG
   992 #ifdef _DEBUG
   924     msg.Append( iDatabase.LastErrorMessage() );
   993     msg.Append( iDatabase.LastErrorMessage() );
   925     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlDeleteInfoByPath %S" , &msg );
   994     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlDeleteInfoByPath %S" , &msg );
       
   995     OstTraceExt1( TRACE_FATAL, DUP13_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSqlDeleteInfoByPath;msg=%S", msg );
   926     msg.Zero();
   996     msg.Zero();
   927 #endif
   997 #endif
   928     User::LeaveIfError( err );
   998     User::LeaveIfError( err );
   929 
   999 
   930     err = iStmt_KThumbnailSqlDeleteInfoDataByPath.Prepare( iDatabase, KThumbnailSqlDeleteInfoDataByPath );
  1000     err = iStmt_KThumbnailSqlDeleteInfoDataByPath.Prepare( iDatabase, KThumbnailSqlDeleteInfoDataByPath );
   931 #ifdef _DEBUG
  1001 #ifdef _DEBUG
   932     msg.Append( iDatabase.LastErrorMessage() );
  1002     msg.Append( iDatabase.LastErrorMessage() );
   933     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlDeleteInfoDataByPath %S" , &msg );
  1003     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlDeleteInfoDataByPath %S" , &msg );
       
  1004     OstTraceExt1( TRACE_FATAL, DUP14_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSqlDeleteInfoDataByPath;msg=%S", msg );
   934     msg.Zero();
  1005     msg.Zero();
   935 #endif
  1006 #endif
   936     User::LeaveIfError( err );
  1007     User::LeaveIfError( err );
   937 
  1008 
   938     err = iStmt_KTempThumbnailSqlSelectRowIDInfoByPath.Prepare( iDatabase, KTempThumbnailSqlSelectRowIDInfoByPath );
  1009     err = iStmt_KTempThumbnailSqlSelectRowIDInfoByPath.Prepare( iDatabase, KTempThumbnailSqlSelectRowIDInfoByPath );
   939 #ifdef _DEBUG
  1010 #ifdef _DEBUG
   940     msg.Append( iDatabase.LastErrorMessage() );
  1011     msg.Append( iDatabase.LastErrorMessage() );
   941     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KTempThumbnailSqlSelectRowIDInfoByPath %S" , &msg );
  1012     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KTempThumbnailSqlSelectRowIDInfoByPath %S" , &msg );
       
  1013     OstTraceExt1( TRACE_FATAL, DUP15_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KTempThumbnailSqlSelectRowIDInfoByPath;msg=%S", msg );
   942     msg.Zero();
  1014     msg.Zero();
   943 #endif
  1015 #endif
   944     User::LeaveIfError( err );
  1016     User::LeaveIfError( err );
   945 
  1017 
   946     err = iStmt_KTempThumbnailSqlDeleteInfoByPath.Prepare( iDatabase, KTempThumbnailSqlDeleteInfoByPath );
  1018     err = iStmt_KTempThumbnailSqlDeleteInfoByPath.Prepare( iDatabase, KTempThumbnailSqlDeleteInfoByPath );
   947 #ifdef _DEBUG
  1019 #ifdef _DEBUG
   948     msg.Append( iDatabase.LastErrorMessage() );
  1020     msg.Append( iDatabase.LastErrorMessage() );
   949     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KTempThumbnailSqlDeleteInfoByPath %S" , &msg );
  1021     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KTempThumbnailSqlDeleteInfoByPath %S" , &msg );
       
  1022     OstTraceExt1( TRACE_FATAL, DUP16_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KTempThumbnailSqlDeleteInfoByPath;msg=%S", msg );
   950     msg.Zero();
  1023     msg.Zero();
   951 #endif
  1024 #endif
   952     User::LeaveIfError( err );
  1025     User::LeaveIfError( err );
   953 
  1026 
   954     err = iStmt_KTempThumbnailSqlDeleteInfoDataByPath.Prepare( iDatabase, KTempThumbnailSqlDeleteInfoDataByPath );
  1027     err = iStmt_KTempThumbnailSqlDeleteInfoDataByPath.Prepare( iDatabase, KTempThumbnailSqlDeleteInfoDataByPath );
   955 #ifdef _DEBUG
  1028 #ifdef _DEBUG
   956     msg.Append( iDatabase.LastErrorMessage() );
  1029     msg.Append( iDatabase.LastErrorMessage() );
   957     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KTempThumbnailSqlDeleteInfoDataByPath %S" , &msg );
  1030     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KTempThumbnailSqlDeleteInfoDataByPath %S" , &msg );
       
  1031     OstTraceExt1( TRACE_FATAL, DUP17_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KTempThumbnailSqlDeleteInfoDataByPath;msg=%S", msg );
   958     msg.Zero();
  1032     msg.Zero();
   959 #endif
  1033 #endif
   960     User::LeaveIfError( err );
  1034     User::LeaveIfError( err );
   961 
  1035 
   962     err = iStmt_KThumbnailSqlInsertDeleted.Prepare( iDatabase, KThumbnailSqlInsertDeleted );
  1036     err = iStmt_KThumbnailSqlInsertDeleted.Prepare( iDatabase, KThumbnailSqlInsertDeleted );
   963 #ifdef _DEBUG
  1037 #ifdef _DEBUG
   964     msg.Append( iDatabase.LastErrorMessage() );
  1038     msg.Append( iDatabase.LastErrorMessage() );
   965     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlInsertDeleted %S" , &msg );
  1039     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlInsertDeleted %S" , &msg );
       
  1040     OstTraceExt1( TRACE_FATAL, DUP18_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSqlInsertDeleted;msg=%S", msg );
   966     msg.Zero();
  1041     msg.Zero();
   967 #endif
  1042 #endif
   968     User::LeaveIfError( err );
  1043     User::LeaveIfError( err );
   969     
  1044     
   970     err = iStmt_KThumbnailSqlSelectMarked.Prepare( iDatabase, KThumbnailSqlSelectMarked );
  1045     err = iStmt_KThumbnailSqlSelectMarked.Prepare( iDatabase, KThumbnailSqlSelectMarked );
   971 #ifdef _DEBUG
  1046 #ifdef _DEBUG
   972     msg.Append( iDatabase.LastErrorMessage() );
  1047     msg.Append( iDatabase.LastErrorMessage() );
   973     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlSelectMarked %S" , &msg );
  1048     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlSelectMarked %S" , &msg );
       
  1049     OstTraceExt1( TRACE_NORMAL, DUP19_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSqlSelectMarked;msg=%S", msg );
   974     msg.Zero();
  1050     msg.Zero();
   975 #endif
  1051 #endif
   976     User::LeaveIfError( err );
  1052     User::LeaveIfError( err );
   977 
  1053 
   978     err = iStmt_KThumbnailSqlDeleteInfoByRowID.Prepare( iDatabase, KThumbnailSqlDeleteInfoByRowID );
  1054     err = iStmt_KThumbnailSqlDeleteInfoByRowID.Prepare( iDatabase, KThumbnailSqlDeleteInfoByRowID );
   979 #ifdef _DEBUG
  1055 #ifdef _DEBUG
   980     msg.Append( iDatabase.LastErrorMessage() );
  1056     msg.Append( iDatabase.LastErrorMessage() );
   981     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlDeleteInfoByRowID %S" , &msg );
  1057     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlDeleteInfoByRowID %S" , &msg );
       
  1058     OstTraceExt1( TRACE_NORMAL, DUP20_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSqlDeleteInfoByRowID;msg=%S", msg );
   982     msg.Zero();
  1059     msg.Zero();
   983 #endif
  1060 #endif
   984     User::LeaveIfError( err );
  1061     User::LeaveIfError( err );
   985 
  1062 
   986     err = iStmt_KThumbnailSqlDeleteInfoDataByRowID.Prepare( iDatabase, KThumbnailSqlDeleteInfoDataByRowID );
  1063     err = iStmt_KThumbnailSqlDeleteInfoDataByRowID.Prepare( iDatabase, KThumbnailSqlDeleteInfoDataByRowID );
   987 #ifdef _DEBUG
  1064 #ifdef _DEBUG
   988     msg.Append( iDatabase.LastErrorMessage() );
  1065     msg.Append( iDatabase.LastErrorMessage() );
   989     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlDeleteInfoDataByRowID %S" , &msg );
  1066     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSqlDeleteInfoDataByRowID %S" , &msg );
       
  1067     OstTraceExt1( TRACE_NORMAL, DUP21_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSqlDeleteInfoDataByRowID;msg=%S", msg );
   990     msg.Zero();
  1068     msg.Zero();
   991 #endif
  1069 #endif
   992     User::LeaveIfError( err );
  1070     User::LeaveIfError( err );
   993     
  1071     
   994     err = iStmt_KThumbnailSelectAllPaths.Prepare( iDatabase, KThumbnailSelectAllPaths );
  1072     err = iStmt_KThumbnailSelectAllPaths.Prepare( iDatabase, KThumbnailSelectAllPaths );
   995 #ifdef _DEBUG
  1073 #ifdef _DEBUG
   996     msg.Append( iDatabase.LastErrorMessage() );
  1074     msg.Append( iDatabase.LastErrorMessage() );
   997     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectAllPaths %S" , &msg );
  1075     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailSelectAllPaths %S" , &msg );
       
  1076     OstTraceExt1( TRACE_NORMAL, DUP22_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailSelectAllPaths;msg=%S", msg );
   998     msg.Zero();
  1077     msg.Zero();
   999 #endif
  1078 #endif
  1000     User::LeaveIfError( err );
  1079     User::LeaveIfError( err );
  1001     
  1080     
  1002     err = iStmt_KThumbnailRename.Prepare( iDatabase, KThumbnailRename );
  1081     err = iStmt_KThumbnailRename.Prepare( iDatabase, KThumbnailRename );
  1003 #ifdef _DEBUG
  1082 #ifdef _DEBUG
  1004     msg.Append( iDatabase.LastErrorMessage() );
  1083     msg.Append( iDatabase.LastErrorMessage() );
  1005     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailRename %S" , &msg );
  1084     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailRename %S" , &msg );
       
  1085     OstTraceExt1( TRACE_NORMAL, DUP23_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailRename;msg=%S", msg );
  1006     msg.Zero();
  1086     msg.Zero();
  1007 #endif
  1087 #endif
  1008     User::LeaveIfError( err );
  1088     User::LeaveIfError( err );
  1009     
  1089     
  1010     err = iStmt_KThumbnailTempRename.Prepare( iDatabase, KThumbnailTempRename );
  1090     err = iStmt_KThumbnailTempRename.Prepare( iDatabase, KThumbnailTempRename );
  1011 #ifdef _DEBUG
  1091 #ifdef _DEBUG
  1012     msg.Append( iDatabase.LastErrorMessage() );
  1092     msg.Append( iDatabase.LastErrorMessage() );
  1013     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailTempRename %S" , &msg );
  1093     TN_DEBUG2( "CThumbnailStore::PrepareStatementsL() KThumbnailTempRename %S" , &msg );
       
  1094     OstTraceExt1( TRACE_NORMAL, DUP24_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - KThumbnailTempRename;msg=%S", msg );
  1014     msg.Zero();
  1095     msg.Zero();
  1015 #endif
  1096 #endif
  1016     User::LeaveIfError( err );
  1097     User::LeaveIfError( err );
  1017     
  1098     
  1018     TN_DEBUG1("CThumbnailStore::PrepareStatementsL() end");
  1099     TN_DEBUG1("CThumbnailStore::PrepareStatementsL() end");
       
  1100     OstTrace0( TRACE_NORMAL, DUP25_CTHUMBNAILSTORE_PREPARESTATEMENTSL, "CThumbnailStore::PrepareStatementsL - end" );
  1019     }
  1101     }
  1020 
  1102 
  1021 // ---------------------------------------------------------------------------
  1103 // ---------------------------------------------------------------------------
  1022 // CThumbnailStore::ResetStatement()
  1104 // CThumbnailStore::ResetStatement()
  1023 // ---------------------------------------------------------------------------
  1105 // ---------------------------------------------------------------------------
  1034 // ---------------------------------------------------------------------------
  1116 // ---------------------------------------------------------------------------
  1035 //
  1117 //
  1036 void CThumbnailStore::CloseStatements()
  1118 void CThumbnailStore::CloseStatements()
  1037     {
  1119     {
  1038     TN_DEBUG1("CThumbnailStore::CloseStatements()");
  1120     TN_DEBUG1("CThumbnailStore::CloseStatements()");
       
  1121     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_CLOSESTATEMENTS, "CThumbnailStore::CloseStatements" );
  1039     
  1122     
  1040     iStmt_KThumbnailSelectInfoByPath.Close();
  1123     iStmt_KThumbnailSelectInfoByPath.Close();
  1041     iStmt_KThumbnailSelectTempInfoByPath.Close();   
  1124     iStmt_KThumbnailSelectTempInfoByPath.Close();   
  1042     iStmt_KThumbnailInsertTempThumbnailInfo.Close();
  1125     iStmt_KThumbnailInsertTempThumbnailInfo.Close();
  1043     iStmt_KThumbnailInsertTempThumbnailInfoData.Close();  
  1126     iStmt_KThumbnailInsertTempThumbnailInfoData.Close();  
  1061     iStmt_KThumbnailSelectAllPaths.Close();
  1144     iStmt_KThumbnailSelectAllPaths.Close();
  1062     iStmt_KThumbnailRename.Close();
  1145     iStmt_KThumbnailRename.Close();
  1063     iStmt_KThumbnailTempRename.Close();
  1146     iStmt_KThumbnailTempRename.Close();
  1064     
  1147     
  1065     TN_DEBUG1("CThumbnailStore::CloseStatements() end");
  1148     TN_DEBUG1("CThumbnailStore::CloseStatements() end");
       
  1149     OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_CLOSESTATEMENTS, "CThumbnailStore::CloseStatements - end" );
  1066     }
  1150     }
  1067 
  1151 
  1068 // ---------------------------------------------------------------------------
  1152 // ---------------------------------------------------------------------------
  1069 // CThumbnailStore::StoreThumbnailL()
  1153 // CThumbnailStore::StoreThumbnailL()
  1070 // Stores thumbnail image.
  1154 // Stores thumbnail image.
  1142     
  1226     
  1143     // try getting modification time from file
  1227     // try getting modification time from file
  1144     TTime timeStamp;
  1228     TTime timeStamp;
  1145     
  1229     
  1146     TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) timeStamp aModified %Ld", aModified );
  1230     TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) timeStamp aModified %Ld", aModified );
       
  1231     OstTraceExt1( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - timeStamp aModified;aModified=%Ld", aModified );
  1147         
  1232         
  1148     if( aModified )
  1233     if( aModified )
  1149         {
  1234         {
  1150         timeStamp = aModified;
  1235         timeStamp = aModified;
  1151         }
  1236         }
  1164             timeErr = iFs.Modified(path, timeStamp);
  1249             timeErr = iFs.Modified(path, timeStamp);
  1165             
  1250             
  1166             if (timeErr != KErrNone)
  1251             if (timeErr != KErrNone)
  1167                 {
  1252                 {
  1168                 TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) error getting timeStamp: %d", timeErr );
  1253                 TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) error getting timeStamp: %d", timeErr );
       
  1254                 OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - error getting timeStamp;timeErr=%d", timeErr );
  1169                 }
  1255                 }
  1170             else
  1256             else
  1171                 {
  1257                 {
  1172                 TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) timeStamp       iFs %Ld", timeStamp.Int64() );
  1258                 TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) timeStamp       iFs %Ld", timeStamp.Int64() );
       
  1259                 OstTraceExt1( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - timeStamp;timeStamp.Int64()=%Ld", timeStamp.Int64() );
  1173                 }
  1260                 }
  1174             }
  1261             }
  1175         
  1262         
  1176         if (!aPath.Length() || timeErr != KErrNone)
  1263         if (!aPath.Length() || timeErr != KErrNone)
  1177             {
  1264             {
  1178             // otherwise current time
  1265             // otherwise current time
  1179             timeStamp.UniversalTime();
  1266             timeStamp.UniversalTime();
  1180             TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) timeStamp   current %Ld", timeStamp.Int64() );
  1267             TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) timeStamp   current %Ld", timeStamp.Int64() );
       
  1268             OstTraceExt1( TRACE_NORMAL, DUP4_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - timeStamp   current;timeStamp.Int64()=%Ld", timeStamp.Int64() );
  1181             }
  1269             }
  1182         }
  1270         }
  1183         
  1271         
  1184    TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) timeStamp       set %Ld", timeStamp.Int64());
  1272    TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) timeStamp       set %Ld", timeStamp.Int64());
       
  1273    OstTraceExt1( TRACE_NORMAL, DUP5_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - timeStamp       set;timeStamp.Int64()=%Ld", timeStamp.Int64() );
  1185    
  1274    
  1186     paramIndex = stmt->ParameterIndex( KThumbnailSqlParamModified );
  1275     paramIndex = stmt->ParameterIndex( KThumbnailSqlParamModified );
  1187     User::LeaveIfError( paramIndex );
  1276     User::LeaveIfError( paramIndex );
  1188     User::LeaveIfError( stmt->BindInt64( paramIndex, timeStamp.Int64() ));
  1277     User::LeaveIfError( stmt->BindInt64( paramIndex, timeStamp.Int64() ));
  1189     
  1278     
  1211     FlushCacheTable();
  1300     FlushCacheTable();
  1212 
  1301 
  1213 #ifdef _DEBUG
  1302 #ifdef _DEBUG
  1214     iThumbCounter++;
  1303     iThumbCounter++;
  1215     TN_DEBUG2( "CThumbnailStore::THUMBSTORE-COUNTER----------, Thumbs = %d", iThumbCounter );
  1304     TN_DEBUG2( "CThumbnailStore::THUMBSTORE-COUNTER----------, Thumbs = %d", iThumbCounter );
       
  1305     OstTrace1( TRACE_NORMAL, DUP6_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::THUMBSTORE-COUNTER----------, Thumbs =;iThumbCounter=%d", iThumbCounter );
  1216     
  1306     
  1217     aStop.UniversalTime();
  1307     aStop.UniversalTime();
       
  1308     TInt tookTime = aStop.MicroSecondsFrom(aStart).Int64()/1000;
  1218     TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) insert to table %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
  1309     TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( private ) insert to table %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
       
  1310     OstTrace1( TRACE_NORMAL, DUP7_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - insert to table;tookTime=%d", tookTime );
  1219 #endif 
  1311 #endif 
  1220     TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( private ) out" );
  1312     TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( private ) out" );
       
  1313     OstTrace0( TRACE_NORMAL, DUP8_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - out" );
  1221     }
  1314     }
  1222 
  1315 
  1223 
  1316 
  1224 // ---------------------------------------------------------------------------
  1317 // ---------------------------------------------------------------------------
  1225 // CThumbnailStore::StoreThumbnailL()
  1318 // CThumbnailStore::StoreThumbnailL()
  1230     aThumbnail, const TSize& aOriginalSize, TBool /*aCropped*/, const TThumbnailSize aThumbnailSize, 
  1323     aThumbnail, const TSize& aOriginalSize, TBool /*aCropped*/, const TThumbnailSize aThumbnailSize, 
  1231     const TInt64 aModified, TBool aThumbFromPath, TBool aBlackListed )
  1324     const TInt64 aModified, TBool aThumbFromPath, TBool aBlackListed )
  1232     {
  1325     {
  1233     TSize thumbSize = aThumbnail->SizeInPixels();
  1326     TSize thumbSize = aThumbnail->SizeInPixels();
  1234     TN_DEBUG4( "CThumbnailStore::StoreThumbnailL( public ) aThumbnailSize = %d, aThumbnailSize(%d,%d) IN", aThumbnailSize, thumbSize.iWidth, thumbSize.iHeight );
  1327     TN_DEBUG4( "CThumbnailStore::StoreThumbnailL( public ) aThumbnailSize = %d, aThumbnailSize(%d,%d) IN", aThumbnailSize, thumbSize.iWidth, thumbSize.iHeight );
  1235     
  1328     OstTraceExt3( TRACE_NORMAL, DUP9_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - IN;aThumbnailSize=%u;thumbSize.iWidth=%d;thumbSize.iHeight=%d", aThumbnailSize, thumbSize.iWidth, thumbSize.iHeight );    
  1236     if(iReadOnly)
  1329     if(iReadOnly)
  1237         {
  1330         {
  1238         TN_DEBUG1( "CThumbnailStore::StoreThumbnailL() read only, skip..." );
  1331         TN_DEBUG1( "CThumbnailStore::StoreThumbnailL() read only, skip..." );
  1239         return;
  1332         return;
  1240         }
  1333         }
  1246     // don't store custom/unknown sizes or zero sizes
  1339     // don't store custom/unknown sizes or zero sizes
  1247     if(aThumbnailSize == ECustomThumbnailSize || aThumbnailSize == EUnknownThumbnailSize 
  1340     if(aThumbnailSize == ECustomThumbnailSize || aThumbnailSize == EUnknownThumbnailSize 
  1248             || thumbSize.iWidth <= 0 || thumbSize.iHeight <= 0 )
  1341             || thumbSize.iWidth <= 0 || thumbSize.iHeight <= 0 )
  1249         {
  1342         {
  1250         TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) not stored");
  1343         TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) not stored");
       
  1344         OstTrace0( TRACE_NORMAL, DUP10_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - not stored" );
  1251         return;
  1345         return;
  1252         }
  1346         }
  1253     
  1347     
  1254     HBufC* path = aPath.AllocLC();
  1348     HBufC* path = aPath.AllocLC();
  1255     TPtr ptr(path->Des());
  1349     TPtr ptr(path->Des());
  1278             
  1372             
  1279             if( (aThumbnailSize == EImageFullScreenThumbnailSize || aThumbnailSize == EVideoFullScreenThumbnailSize ||
  1373             if( (aThumbnailSize == EImageFullScreenThumbnailSize || aThumbnailSize == EVideoFullScreenThumbnailSize ||
  1280                  aThumbnailSize == EAudioFullScreenThumbnailSize) && !aBlackListed )
  1374                  aThumbnailSize == EAudioFullScreenThumbnailSize) && !aBlackListed )
  1281                 {
  1375                 {
  1282                 TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - encode jpg" );
  1376                 TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - encode jpg" );
       
  1377                 OstTrace0( TRACE_NORMAL, DUP11_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - encode jpg" );
  1283             
  1378             
  1284                 HBufC8* data = NULL;
  1379                 HBufC8* data = NULL;
  1285                 CleanupStack::PushL( data );
  1380                 CleanupStack::PushL( data );
  1286                 
  1381                 
  1287                 CImageEncoder* encoder = NULL;
  1382                 CImageEncoder* encoder = NULL;
  1290 				
  1385 				
  1291                 TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::EHwImplementation, data, options ) );
  1386                 TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::EHwImplementation, data, options ) );
  1292                 if ( decErr != KErrNone )
  1387                 if ( decErr != KErrNone )
  1293                     {
  1388                     {
  1294                     TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - HW CExtJpegEncoder failed %d", decErr);
  1389                     TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - HW CExtJpegEncoder failed %d", decErr);
       
  1390                     OstTrace1( TRACE_NORMAL, DUP12_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - HW CExtJpegEncoder failed;decErr=%d", decErr );
  1295                 
  1391                 
  1296                     TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::ESwImplementation, data, options ) );
  1392                     TRAPD( decErr, encoder = CExtJpegEncoder::DataNewL( CExtJpegEncoder::ESwImplementation, data, options ) );
  1297                     if ( decErr != KErrNone )
  1393                     if ( decErr != KErrNone )
  1298                         {
  1394                         {
  1299                         TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - SW CExtJpegEncoder failed %d", decErr);
  1395                         TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - SW CExtJpegEncoder failed %d", decErr);
       
  1396                         OstTrace1( TRACE_NORMAL, DUP13_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - SW CExtJpegEncoder failed;decErr=%d", decErr );
  1300                     
  1397                     
  1301                         TRAPD( decErr, encoder = CImageEncoder::DataNewL( data,  KJpegMime(), options ) );
  1398                         TRAPD( decErr, encoder = CImageEncoder::DataNewL( data,  KJpegMime(), options ) );
  1302                         if ( decErr != KErrNone )
  1399                         if ( decErr != KErrNone )
  1303                             {
  1400                             {
  1304                             TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - CImageEncoder failed %d", decErr);
  1401                             TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - CImageEncoder failed %d", decErr);
       
  1402                             OstTrace1( TRACE_NORMAL, DUP14_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - CImageEncoder failed;decErr=%d", decErr );
  1305                             
  1403                             
  1306                             User::Leave(decErr);
  1404                             User::Leave(decErr);
  1307                             }
  1405                             }
  1308                         else
  1406                         else
  1309                             {
  1407                             {
  1310                             TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - CImageEncoder created" );
  1408                             TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - CImageEncoder created" );
       
  1409                             OstTrace0( TRACE_NORMAL, DUP15_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - CImageEncoder created" );
  1311                             }
  1410                             }
  1312                         }
  1411                         }
  1313                     else
  1412                     else
  1314                         {
  1413                         {
  1315                         TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - SW CExtJpegEncoder created" );
  1414                         TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - SW CExtJpegEncoder created" );
       
  1415                         OstTrace0( TRACE_NORMAL, DUP16_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - SW CExtJpegEncoder created" );
  1316                         }
  1416                         }
  1317                     }
  1417                     }
  1318                 else
  1418                 else
  1319                     {
  1419                     {
  1320                     TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - HW CExtJpegEncoder created" );
  1420                     TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - HW CExtJpegEncoder created" );
       
  1421                     OstTrace0( TRACE_NORMAL, DUP17_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - HW CExtJpegEncoder created" );
  1321                     }             
  1422                     }             
  1322                 
  1423                 
  1323                 CleanupStack::Pop( data );
  1424                 CleanupStack::Pop( data );
  1324                 CleanupStack::PushL( encoder );
  1425                 CleanupStack::PushL( encoder );
  1325              
  1426              
  1352                 CleanupStack::PopAndDestroy( encoder );
  1453                 CleanupStack::PopAndDestroy( encoder );
  1353                 
  1454                 
  1354                 if(request == KErrNone)
  1455                 if(request == KErrNone)
  1355                     {           
  1456                     {           
  1356                     TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - encoding ok" );    
  1457                     TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) - encoding ok" );    
       
  1458                     OstTrace0( TRACE_NORMAL, DUP18_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - encoding ok" );
  1357                 
  1459                 
  1358                     CleanupStack::PushL( data );
  1460                     CleanupStack::PushL( data );
  1359                     TPtr8 ptr = data->Des(); 
  1461                     TPtr8 ptr = data->Des(); 
  1360                     StoreThumbnailL( *path, ptr, aThumbnail->SizeInPixels(), 
  1462                     StoreThumbnailL( *path, ptr, aThumbnail->SizeInPixels(), 
  1361                                      aOriginalSize, EThumbnailFormatJpeg, flags, 
  1463                                      aOriginalSize, EThumbnailFormatJpeg, flags, 
  1363                     CleanupStack::Pop( data );
  1465                     CleanupStack::Pop( data );
  1364                     }
  1466                     }
  1365                 else
  1467                 else
  1366                     {
  1468                     {
  1367                     TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - encoding failed: %d", request.Int() );
  1469                     TN_DEBUG2( "CThumbnailStore::StoreThumbnailL( public ) - encoding failed: %d", request.Int() );
       
  1470                     OstTrace1( TRACE_NORMAL, DUP19_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - encoding failed;request.Int()=%d", request.Int() );
  1368                     }
  1471                     }
  1369                 
  1472                 
  1370                 delete data;
  1473                 delete data;
  1371                 data = NULL;
  1474                 data = NULL;
  1372                 }
  1475                 }
  1390         }
  1493         }
  1391     
  1494     
  1392     CleanupStack::PopAndDestroy( path );
  1495     CleanupStack::PopAndDestroy( path );
  1393     
  1496     
  1394     TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) out" );
  1497     TN_DEBUG1( "CThumbnailStore::StoreThumbnailL( public ) out" );
       
  1498     OstTrace0( TRACE_NORMAL, DUP20_CTHUMBNAILSTORE_STORETHUMBNAILL, "CThumbnailStore::StoreThumbnailL - out" );
  1395     }
  1499     }
  1396 
  1500 
  1397 // ---------------------------------------------------------------------------
  1501 // ---------------------------------------------------------------------------
  1398 // Finds possible existing duplicate thumbnail.
  1502 // Finds possible existing duplicate thumbnail.
  1399 // ---------------------------------------------------------------------------
  1503 // ---------------------------------------------------------------------------
  1400 //
  1504 //
  1401 TBool CThumbnailStore::FindDuplicateL( const TDesC& aPath, const TThumbnailSize& aThumbnailSize )
  1505 TBool CThumbnailStore::FindDuplicateL( const TDesC& aPath, const TThumbnailSize& aThumbnailSize )
  1402     {
  1506     {
  1403     TN_DEBUG1( "CThumbnailStore::FindDuplicateL()" );
  1507     TN_DEBUG1( "CThumbnailStore::FindDuplicateL()" );
  1404 	
  1508     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_FINDDUPLICATEL, "CThumbnailStore::FindDuplicateL" );
  1405 	if(iReadOnly)
  1509 	if(iReadOnly)
  1406 		{
  1510 		{
  1407 		TN_DEBUG1( "CThumbnailStore::FindDuplicateL() read only, skip..." );
  1511 		TN_DEBUG1( "CThumbnailStore::FindDuplicateL() read only, skip..." );
  1408 		return EFalse;
  1512 		return EFalse;
  1409 		}
  1513 		}
  1446         rowStatus = stmt->Next();
  1550         rowStatus = stmt->Next();
  1447         
  1551         
  1448         if(rowStatus == KSqlAtRow)
  1552         if(rowStatus == KSqlAtRow)
  1449             {
  1553             {
  1450             TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - duplicate in main table" );
  1554             TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - duplicate in main table" );
       
  1555             OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_FINDDUPLICATEL, "CThumbnailStore::FindDuplicateL - duplicate in main table" );
  1451             
  1556             
  1452             found = ETrue;
  1557             found = ETrue;
  1453             }
  1558             }
  1454         else
  1559         else
  1455             {
  1560             {
  1456             TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - no duplicate" );
  1561             TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - no duplicate" );
       
  1562             OstTrace0( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_FINDDUPLICATEL, "CThumbnailStore::FindDuplicateL - no duplicate" );
  1457             }
  1563             }
  1458         }
  1564         }
  1459     else
  1565     else
  1460         {
  1566         {
  1461         TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - duplicate in temp table" );
  1567         TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - duplicate in temp table" );
       
  1568         OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_FINDDUPLICATEL, "CThumbnailStore::FindDuplicateL - duplicate in temp table" );
  1462         
  1569         
  1463         found = ETrue;
  1570         found = ETrue;
  1464         }
  1571         }
  1465     
  1572     
  1466     CleanupStack::PopAndDestroy( stmt );
  1573     CleanupStack::PopAndDestroy( stmt );
  1480         CleanupStack::PopAndDestroy( stmt );
  1587         CleanupStack::PopAndDestroy( stmt );
  1481         
  1588         
  1482         if(rowStatus == KSqlAtRow)
  1589         if(rowStatus == KSqlAtRow)
  1483             {
  1590             {
  1484             TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - duplicate marked deleted" );
  1591             TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - duplicate marked deleted" );
       
  1592             OstTrace0( TRACE_NORMAL, DUP4_CTHUMBNAILSTORE_FINDDUPLICATEL, "CThumbnailStore::FindDuplicateL - duplicate marked deleted" );
  1485             
  1593             
  1486             DeleteThumbnailsL(aPath, ETrue);
  1594             DeleteThumbnailsL(aPath, ETrue);
  1487             
  1595             
  1488             TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - duplicate force-deleted" );
  1596             TN_DEBUG1( "CThumbnailStore::FindDuplicateL() - duplicate force-deleted" );
       
  1597             OstTrace0( TRACE_NORMAL, DUP5_CTHUMBNAILSTORE_FINDDUPLICATEL, "CThumbnailStore::FindDuplicateL - duplicate force-deleted" );
  1489             
  1598             
  1490             found = EFalse;
  1599             found = EFalse;
  1491             }
  1600             }
  1492         }
  1601         }
  1493     
  1602     
  1500 //     
  1609 //     
  1501 void CThumbnailStore::GetMissingSizesL( const TDesC& aPath, TInt aSourceType, RArray <
  1610 void CThumbnailStore::GetMissingSizesL( const TDesC& aPath, TInt aSourceType, RArray <
  1502     TThumbnailPersistentSize > & aMissingSizes, TBool aCheckGridSizeOnly )
  1611     TThumbnailPersistentSize > & aMissingSizes, TBool aCheckGridSizeOnly )
  1503     {
  1612     {
  1504     TN_DEBUG2( "CThumbnailStore::GetMissingSizesL() aSourceType == %d", aSourceType );
  1613     TN_DEBUG2( "CThumbnailStore::GetMissingSizesL() aSourceType == %d", aSourceType );
  1505     
  1614     OstTrace1( TRACE_NORMAL, CTHUMBNAILSTORE_GETMISSINGSIZESL, "CThumbnailStore::GetMissingSizesL;aSourceType=%d", aSourceType );
  1506     if(iReadOnly)
  1615     if(iReadOnly)
  1507         {
  1616         {
  1508         TN_DEBUG1( "CThumbnailStore::GetMissingSizesL() read only, skip..." );
  1617         TN_DEBUG1( "CThumbnailStore::GetMissingSizesL() read only, skip..." );
  1509 		return;
  1618 		return;
  1510         }
  1619         }
  1528 				if( (iPersistentSizes[i].iSourceType == TThumbnailPersistentSize::EImage || iPersistentSizes[i].iSourceType == TThumbnailPersistentSize::EVideo )&&
  1637 				if( (iPersistentSizes[i].iSourceType == TThumbnailPersistentSize::EImage || iPersistentSizes[i].iSourceType == TThumbnailPersistentSize::EVideo )&&
  1529                      iPersistentSizes[i].iSizeType != TThumbnailPersistentSize::EGrid )
  1638                      iPersistentSizes[i].iSizeType != TThumbnailPersistentSize::EGrid )
  1530                     {
  1639                     {
  1531                     TN_DEBUG4( "CThumbnailStore::GetMissingSizesL() skip, aCheckGridSizeOnly = %d and  iPersistentSizes[%d].iSizeType == %d", 
  1640                     TN_DEBUG4( "CThumbnailStore::GetMissingSizesL() skip, aCheckGridSizeOnly = %d and  iPersistentSizes[%d].iSizeType == %d", 
  1532                             aCheckGridSizeOnly, i, iPersistentSizes[i].iSizeType );
  1641                             aCheckGridSizeOnly, i, iPersistentSizes[i].iSizeType );
       
  1642                     OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_GETMISSINGSIZESL, "CThumbnailStore::GetMissingSizesL;aCheckGridSizeOnly=%u", aCheckGridSizeOnly );
  1533                     }
  1643                     }
  1534 				else
  1644 				else
  1535 				    {
  1645 				    {
  1536                     aMissingSizes.AppendL( iPersistentSizes[ i ] );
  1646                     aMissingSizes.AppendL( iPersistentSizes[ i ] );
  1537 				    }
  1647 				    }
  1544         }
  1654         }
  1545     
  1655     
  1546     TInt missingSizeCount = aMissingSizes.Count();
  1656     TInt missingSizeCount = aMissingSizes.Count();
  1547         
  1657         
  1548     TN_DEBUG2( "CThumbnailStore::GetMissingSizesL() missingSizeCount == %d", missingSizeCount );
  1658     TN_DEBUG2( "CThumbnailStore::GetMissingSizesL() missingSizeCount == %d", missingSizeCount );
       
  1659     OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_GETMISSINGSIZESL, "CThumbnailStore::GetMissingSizesL;missingSizeCount=%d", missingSizeCount );
  1549     
  1660     
  1550     // check temp table first
  1661     // check temp table first
  1551     RSqlStatement* stmt = NULL;
  1662     RSqlStatement* stmt = NULL;
  1552     stmt = &iStmt_KThumbnailSelectTempSizeByPath;
  1663     stmt = &iStmt_KThumbnailSelectTempSizeByPath;
  1553     CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1664     CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1571             for ( TInt i = 0; i < missingSizeCount; i++ )
  1682             for ( TInt i = 0; i < missingSizeCount; i++ )
  1572                 {
  1683                 {
  1573                 if ( aMissingSizes[ i ].iType == size )
  1684                 if ( aMissingSizes[ i ].iType == size )
  1574                     {
  1685                     {
  1575                     TN_DEBUG1( "CThumbnailStore::GetMissingSizesL() -- thumbnail found" );
  1686                     TN_DEBUG1( "CThumbnailStore::GetMissingSizesL() -- thumbnail found" );
       
  1687                     OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_GETMISSINGSIZESL, "CThumbnailStore::GetMissingSizesL - thumbnail found" );
  1576                     aMissingSizes.Remove( i );
  1688                     aMissingSizes.Remove( i );
  1577                     missingSizeCount--;
  1689                     missingSizeCount--;
  1578                     break;
  1690                     break;
  1579                     }
  1691                     }
  1580                 }
  1692                 }
  1615 //
  1727 //
  1616 void CThumbnailStore::FetchThumbnailL( const TDesC& aPath, CFbsBitmap* &
  1728 void CThumbnailStore::FetchThumbnailL( const TDesC& aPath, CFbsBitmap* &
  1617     aThumbnail, TDesC8* & aData, const TThumbnailSize aThumbnailSize, TSize &aThumbnailRealSize )
  1729     aThumbnail, TDesC8* & aData, const TThumbnailSize aThumbnailSize, TSize &aThumbnailRealSize )
  1618     {
  1730     {
  1619     TN_DEBUG3( "CThumbnailStore::FetchThumbnailL(%S) aThumbnailSize==%d", &aPath, aThumbnailSize );
  1731     TN_DEBUG3( "CThumbnailStore::FetchThumbnailL(%S) aThumbnailSize==%d", &aPath, aThumbnailSize );
  1620     
  1732     OstTraceExt2( TRACE_NORMAL, CTHUMBNAILSTORE_FETCHTHUMBNAILL, "CThumbnailStore::FetchThumbnailL;aPath=%S;aThumbnailSize=%u", aPath, aThumbnailSize );
  1621     if(iReadOnly)
  1733     if(iReadOnly)
  1622         {
  1734         {
  1623         TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() read only, skip..." );
  1735         TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() read only, skip..." );
  1624         User::Leave( KErrNotFound );
  1736         User::Leave( KErrNotFound );
  1625         }
  1737         }
  1634     TInt found = KErrNotFound;
  1746     TInt found = KErrNotFound;
  1635     TInt rowStatus = 0;
  1747     TInt rowStatus = 0;
  1636     TInt column = 0;
  1748     TInt column = 0;
  1637     
  1749     
  1638     TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() -- TEMP TABLE lookup" );
  1750     TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() -- TEMP TABLE lookup" );
       
  1751     OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_FETCHTHUMBNAILL, "CThumbnailStore::FetchThumbnailL - TEMP TABLE lookup" );
  1639 
  1752 
  1640     RSqlStatement* stmt = NULL;
  1753     RSqlStatement* stmt = NULL;
  1641     stmt = &iStmt_KThumbnailSelectTempInfoByPath;
  1754     stmt = &iStmt_KThumbnailSelectTempInfoByPath;
  1642     CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1755     CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1643     
  1756     
  1653 
  1766 
  1654     //if not found from temp table, look from real table
  1767     //if not found from temp table, look from real table
  1655     if(rowStatus != KSqlAtRow)
  1768     if(rowStatus != KSqlAtRow)
  1656        {
  1769        {
  1657        TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() -- MAIN TABLE lookup" );
  1770        TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() -- MAIN TABLE lookup" );
       
  1771        OstTrace0( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_FETCHTHUMBNAILL, "CThumbnailStore::FetchThumbnailL - MAIN TABLE lookup" );
  1658       
  1772       
  1659        CleanupStack::PopAndDestroy( stmt );
  1773        CleanupStack::PopAndDestroy( stmt );
  1660        stmt = &iStmt_KThumbnailSelectInfoByPath;
  1774        stmt = &iStmt_KThumbnailSelectInfoByPath;
  1661        CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1775        CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1662     
  1776     
  1672        }
  1786        }
  1673 
  1787 
  1674     if(rowStatus == KSqlAtRow)
  1788     if(rowStatus == KSqlAtRow)
  1675        {
  1789        {
  1676         TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() -- thumbnail found" );
  1790         TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() -- thumbnail found" );
       
  1791         OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_FETCHTHUMBNAILL, "CThumbnailStore::FetchThumbnailL - thumbnail found" );
  1677         
  1792         
  1678         // Check whether blacklisted thumbnail entry modified. 
  1793         // Check whether blacklisted thumbnail entry modified. 
  1679         // If thumbnail is marked as blacklisted and timestamp has 
  1794         // If thumbnail is marked as blacklisted and timestamp has 
  1680         // changed, delete thumbnails from tables and leave with 
  1795         // changed, delete thumbnails from tables and leave with 
  1681         // KErrNotFound to get thumbnail regenerated.
  1796         // KErrNotFound to get thumbnail regenerated.
  1729             }
  1844             }
  1730         }
  1845         }
  1731     else
  1846     else
  1732         {
  1847         {
  1733         TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() -- thumbnail NOT found" );
  1848         TN_DEBUG1( "CThumbnailStore::FetchThumbnailL() -- thumbnail NOT found" );
       
  1849         OstTrace0( TRACE_NORMAL, DUP4_CTHUMBNAILSTORE_FETCHTHUMBNAILL, "CThumbnailStore::FetchThumbnailL - thumbnail NOT found" );
  1734         }
  1850         }
  1735         
  1851         
  1736     CleanupStack::PopAndDestroy( stmt );
  1852     CleanupStack::PopAndDestroy( stmt );
  1737     CleanupStack::PopAndDestroy( path );
  1853     CleanupStack::PopAndDestroy( path );
  1738     
  1854     
  1745 //
  1861 //
  1746 void CThumbnailStore::DeleteThumbnailsL( const TDesC& aPath, TBool aForce, 
  1862 void CThumbnailStore::DeleteThumbnailsL( const TDesC& aPath, TBool aForce, 
  1747                                          TBool aTransaction )
  1863                                          TBool aTransaction )
  1748     {
  1864     {
  1749     TN_DEBUG2( "CThumbnailStore::DeleteThumbnailsL(%S)", &aPath );
  1865     TN_DEBUG2( "CThumbnailStore::DeleteThumbnailsL(%S)", &aPath );
       
  1866     OstTraceExt1( TRACE_NORMAL, CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL;aPath=%S", aPath );
  1750 
  1867 
  1751     if(iReadOnly)
  1868     if(iReadOnly)
  1752         {
  1869         {
  1753         TN_DEBUG1( "CThumbnailStore::DeleteThumbnailsL() read only, skip..." );
  1870         TN_DEBUG1( "CThumbnailStore::DeleteThumbnailsL() read only, skip..." );
  1754         return;
  1871         return;
  1779         CleanupClosePushL( transaction );    
  1896         CleanupClosePushL( transaction );    
  1780         transaction.BeginL();
  1897         transaction.BeginL();
  1781         }
  1898         }
  1782         
  1899         
  1783     TN_DEBUG1( "CThumbnailStore::DeleteThumbnailsByPathL() -- TEMP TABLE lookup" );
  1900     TN_DEBUG1( "CThumbnailStore::DeleteThumbnailsByPathL() -- TEMP TABLE lookup" );
       
  1901     OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL - TEMP TABLE lookup" );
  1784     
  1902     
  1785     RSqlStatement* stmt = NULL;
  1903     RSqlStatement* stmt = NULL;
  1786     RSqlStatement* stmt_info = NULL;
  1904     RSqlStatement* stmt_info = NULL;
  1787     RSqlStatement* stmt_infodata = NULL;
  1905     RSqlStatement* stmt_infodata = NULL;
  1788     
  1906     
  1817         err = stmt_infodata->Exec();
  1935         err = stmt_infodata->Exec();
  1818         stmt_infodata->Reset();
  1936         stmt_infodata->Reset();
  1819         User::LeaveIfError( err );
  1937         User::LeaveIfError( err );
  1820         
  1938         
  1821         TN_DEBUG1( "CThumbnailStore::DeleteThumbnailsByPathL() -- TEMP TABLE lookup - thumbnail deleted" );
  1939         TN_DEBUG1( "CThumbnailStore::DeleteThumbnailsByPathL() -- TEMP TABLE lookup - thumbnail deleted" );
       
  1940         OstTrace0( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL - TEMP TABLE lookup - thumbnail deleted" );
  1822        
  1941        
  1823         // fetch another row (temp table rowIDs are updated immediately)
  1942         // fetch another row (temp table rowIDs are updated immediately)
  1824         stmt->Reset();
  1943         stmt->Reset();
  1825        
  1944        
  1826         paramIndex = stmt->ParameterIndex( KThumbnailSqlParamPath );
  1945         paramIndex = stmt->ParameterIndex( KThumbnailSqlParamPath );
  1837     // if forcing instant delete
  1956     // if forcing instant delete
  1838     if (aForce)
  1957     if (aForce)
  1839         {
  1958         {
  1840         //look from real table 
  1959         //look from real table 
  1841         TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- MAIN TABLE lookup" );
  1960         TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- MAIN TABLE lookup" );
       
  1961         OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL - MAIN TABLE lookup" );
  1842         
  1962         
  1843         stmt = &iStmt_KThumbnailSqlSelectRowIDInfoByPath;
  1963         stmt = &iStmt_KThumbnailSqlSelectRowIDInfoByPath;
  1844         CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1964         CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1845         stmt_info = &iStmt_KThumbnailSqlDeleteInfoByPath;
  1965         stmt_info = &iStmt_KThumbnailSqlDeleteInfoByPath;
  1846         CleanupStack::PushL(TCleanupItem(ResetStatement, stmt_info));    
  1966         CleanupStack::PushL(TCleanupItem(ResetStatement, stmt_info));    
  1871             err = stmt_infodata->Exec();
  1991             err = stmt_infodata->Exec();
  1872             stmt_infodata->Reset();
  1992             stmt_infodata->Reset();
  1873             User::LeaveIfError( err );
  1993             User::LeaveIfError( err );
  1874            
  1994            
  1875             TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- MAIN TABLE lookup - thumbnail deleted" );
  1995             TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- MAIN TABLE lookup - thumbnail deleted" );
       
  1996             OstTrace0( TRACE_NORMAL, DUP4_CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL - MAIN TABLE lookup - thumbnail deleted" );
  1876             
  1997             
  1877             rowStatus = stmt->Next();
  1998             rowStatus = stmt->Next();
  1878             }
  1999             }
  1879         
  2000         
  1880         CleanupStack::PopAndDestroy( stmt_infodata );
  2001         CleanupStack::PopAndDestroy( stmt_infodata );
  1885         User::LeaveIfError( iDatabase.Exec( KThumbnailSqlDeleteFromDeleted ) );
  2006         User::LeaveIfError( iDatabase.Exec( KThumbnailSqlDeleteFromDeleted ) );
  1886         } 
  2007         } 
  1887     else
  2008     else
  1888         {
  2009         {
  1889         TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- MAIN TABLE lookup" );        
  2010         TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- MAIN TABLE lookup" );        
       
  2011         OstTrace0( TRACE_NORMAL, DUP5_CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL - MAIN TABLE lookup" );
  1890     
  2012     
  1891         stmt = &iStmt_KThumbnailSqlSelectRowIDInfoByPath;
  2013         stmt = &iStmt_KThumbnailSqlSelectRowIDInfoByPath;
  1892         CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  2014         CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1893 
  2015 
  1894         paramIndex = stmt->ParameterIndex( KThumbnailSqlParamPath );
  2016         paramIndex = stmt->ParameterIndex( KThumbnailSqlParamPath );
  1901         
  2023         
  1902         // there were matching rows in main table
  2024         // there were matching rows in main table
  1903         if (rowStatus == KSqlAtRow)
  2025         if (rowStatus == KSqlAtRow)
  1904             {        
  2026             {        
  1905             TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- add to Deleted" );
  2027             TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- add to Deleted" );
       
  2028             OstTrace0( TRACE_NORMAL, DUP6_CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL - add to Deleted" );
  1906         
  2029         
  1907             // only add path to deleted table
  2030             // only add path to deleted table
  1908             stmt = &iStmt_KThumbnailSqlInsertDeleted;
  2031             stmt = &iStmt_KThumbnailSqlInsertDeleted;
  1909             CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  2032             CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1910             
  2033             
  1917             CleanupStack::PopAndDestroy( stmt );
  2040             CleanupStack::PopAndDestroy( stmt );
  1918             }
  2041             }
  1919         else
  2042         else
  1920             {
  2043             {
  1921             TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- no thumbs in MAIN" );
  2044             TN_DEBUG1( "CThumbnailStore::DeleteThumbnailByPathL() -- no thumbs in MAIN" );
       
  2045             OstTrace0( TRACE_NORMAL, DUP7_CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL - no thumbs in MAIN" );
  1922             }
  2046             }
  1923         }    
  2047         }    
  1924     
  2048     
  1925     if (aTransaction)
  2049     if (aTransaction)
  1926         {
  2050         {
  1928         CleanupStack::PopAndDestroy( &transaction );
  2052         CleanupStack::PopAndDestroy( &transaction );
  1929         }
  2053         }
  1930     
  2054     
  1931 #ifdef _DEBUG
  2055 #ifdef _DEBUG
  1932     aStop.UniversalTime();
  2056     aStop.UniversalTime();
       
  2057     TInt tookTime = (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000;
  1933     TN_DEBUG2( "CThumbnailStore::DeleteThumbnailByPathL() took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
  2058     TN_DEBUG2( "CThumbnailStore::DeleteThumbnailByPathL() took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
       
  2059     OstTrace1( TRACE_NORMAL, DUP8_CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL - took;tookTime=%d", tookTime );
  1934 #endif
  2060 #endif
  1935     
  2061     
  1936     // start maintenance if rows in main table were marked
  2062     // start maintenance if rows in main table were marked
  1937     if (!aForce && count > 0)
  2063     if (!aForce && count > 0)
  1938         {
  2064         {
  1939         TN_DEBUG2( "CThumbnailStore::DeleteThumbnailByPathL() -- MAIN TABLE lookup - %d rows marked deleted", count);
  2065         TN_DEBUG2( "CThumbnailStore::DeleteThumbnailByPathL() -- MAIN TABLE lookup - %d rows marked deleted", count);
       
  2066         OstTrace1( TRACE_NORMAL, DUP9_CTHUMBNAILSTORE_DELETETHUMBNAILSL, "CThumbnailStore::DeleteThumbnailsL -- MAIN TABLE lookup - rows marked deleted;count=%d", count );
  1940         
  2067         
  1941         iDeleteThumbs = ETrue;
  2068         iDeleteThumbs = ETrue;
  1942         iActivityManager->Start();
  2069         iActivityManager->Start();
  1943         }
  2070         }
  1944     
  2071     
  1950 // -----------------------------------------------------------------------------
  2077 // -----------------------------------------------------------------------------
  1951 //
  2078 //
  1952 void CThumbnailStore::RenameThumbnailsL( const TDesC& aCurrentPath, const TDesC& aNewPath )
  2079 void CThumbnailStore::RenameThumbnailsL( const TDesC& aCurrentPath, const TDesC& aNewPath )
  1953     {
  2080     {
  1954     TN_DEBUG2( "CThumbnailStore::RenameThumbnailsL(%S)", &aCurrentPath );
  2081     TN_DEBUG2( "CThumbnailStore::RenameThumbnailsL(%S)", &aCurrentPath );
  1955     
  2082     OstTraceExt1( TRACE_NORMAL, CTHUMBNAILSTORE_RENAMETHUMBNAILSL, "CThumbnailStore::RenameThumbnailsL;aCurrentPath=%S", aCurrentPath );
  1956     if(iReadOnly)
  2083     if(iReadOnly)
  1957         {
  2084         {
  1958         TN_DEBUG1( "CThumbnailStore::RenameThumbnailsL() read only, skip..." );
  2085         TN_DEBUG1( "CThumbnailStore::RenameThumbnailsL() read only, skip..." );
  1959         return;
  2086         return;
  1960         }
  2087         }
  1979     RThumbnailTransaction transaction( iDatabase );
  2106     RThumbnailTransaction transaction( iDatabase );
  1980     CleanupClosePushL( transaction );    
  2107     CleanupClosePushL( transaction );    
  1981     transaction.BeginL();
  2108     transaction.BeginL();
  1982         
  2109         
  1983     TN_DEBUG1( "CThumbnailStore::RenameThumbnailsL() -- TEMP TABLE" );
  2110     TN_DEBUG1( "CThumbnailStore::RenameThumbnailsL() -- TEMP TABLE" );
       
  2111     OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_RENAMETHUMBNAILSL, "CThumbnailStore::RenameThumbnailsL - TEMP TABLE" );
  1984     
  2112     
  1985     RSqlStatement* stmt = NULL;
  2113     RSqlStatement* stmt = NULL;
  1986     stmt = &iStmt_KThumbnailTempRename;
  2114     stmt = &iStmt_KThumbnailTempRename;
  1987     CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  2115     CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  1988     
  2116     
  1995     User::LeaveIfError( stmt->BindText( paramIndex, *newPath ));
  2123     User::LeaveIfError( stmt->BindText( paramIndex, *newPath ));
  1996     
  2124     
  1997     User::LeaveIfError( stmt->Exec() );
  2125     User::LeaveIfError( stmt->Exec() );
  1998     
  2126     
  1999     TN_DEBUG1( "CThumbnailStore::RenameThumbnailsL() -- MAIN TABLE" );
  2127     TN_DEBUG1( "CThumbnailStore::RenameThumbnailsL() -- MAIN TABLE" );
       
  2128     OstTrace0( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_RENAMETHUMBNAILSL, "CThumbnailStore::RenameThumbnailsL - MAIN TABLE" );
  2000     
  2129     
  2001     CleanupStack::PopAndDestroy( stmt );
  2130     CleanupStack::PopAndDestroy( stmt );
  2002     stmt = &iStmt_KThumbnailRename;
  2131     stmt = &iStmt_KThumbnailRename;
  2003     CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  2132     CleanupStack::PushL(TCleanupItem(ResetStatement, stmt));
  2004     
  2133     
  2023     CleanupStack::PopAndDestroy( newPath );
  2152     CleanupStack::PopAndDestroy( newPath );
  2024     CleanupStack::PopAndDestroy( path );
  2153     CleanupStack::PopAndDestroy( path );
  2025     
  2154     
  2026 #ifdef _DEBUG
  2155 #ifdef _DEBUG
  2027     aStop.UniversalTime();
  2156     aStop.UniversalTime();
       
  2157     TInt tookTime = (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000;
  2028     TN_DEBUG2( "CThumbnailStore::RenameThumbnailsL() took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
  2158     TN_DEBUG2( "CThumbnailStore::RenameThumbnailsL() took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
       
  2159     OstTrace1( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_RENAMETHUMBNAILSL, "CThumbnailStore::RenameThumbnailsL;tookTime=%d", tookTime );
  2029 #endif      
  2160 #endif      
  2030     }
  2161     }
  2031 
  2162 
  2032 // ---------------------------------------------------------------------------
  2163 // ---------------------------------------------------------------------------
  2033 // CThumbnailStore::PersistentSizes()
  2164 // CThumbnailStore::PersistentSizes()
  2043 // ---------------------------------------------------------------------------
  2174 // ---------------------------------------------------------------------------
  2044 //
  2175 //
  2045 void CThumbnailStore::FlushCacheTable( TBool aForce )
  2176 void CThumbnailStore::FlushCacheTable( TBool aForce )
  2046     {
  2177     {
  2047     TN_DEBUG1("CThumbnailStore::FlushCacheTable() in");
  2178     TN_DEBUG1("CThumbnailStore::FlushCacheTable() in");
       
  2179     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - in" );
  2048     
  2180     
  2049     StopAutoFlush();
  2181     StopAutoFlush();
  2050     
  2182     
  2051     if(iReadOnly)
  2183     if(iReadOnly)
  2052         {
  2184         {
  2056     
  2188     
  2057     if(iBatchItemCount <= 0 || CheckDbState() != KErrNone)
  2189     if(iBatchItemCount <= 0 || CheckDbState() != KErrNone)
  2058         {
  2190         {
  2059         // cache empty or db unusable
  2191         // cache empty or db unusable
  2060         TN_DEBUG1( "CThumbnailStore::FlushCacheTable() error ");
  2192         TN_DEBUG1( "CThumbnailStore::FlushCacheTable() error ");
       
  2193         OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - error" );
  2061         return;
  2194         return;
  2062         }
  2195         }
  2063     
  2196     
  2064     // longer flush allowed if MTP sync on
  2197     // longer flush allowed if MTP sync on
  2065     TInt MPXHarvesting(0);
  2198     TInt MPXHarvesting(0);
  2066     TInt ret = RProperty::Get(KTAGDPSNotification, KMPXHarvesting, MPXHarvesting);
  2199     TInt ret = RProperty::Get(KTAGDPSNotification, KMPXHarvesting, MPXHarvesting);
  2067     if(ret != KErrNone)
  2200     if(ret != KErrNone)
  2068        {
  2201        {
  2069        TN_DEBUG2( "CThumbnailStore::FlushCacheTable() error checking MTP sync: %d", ret);
  2202        TN_DEBUG2( "CThumbnailStore::FlushCacheTable() error checking MTP sync: %d", ret);
       
  2203        OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - error checking MTP sync;ret=%d", ret );
  2070        }
  2204        }
  2071     
  2205     
  2072     //set init max flush delay
  2206     //set init max flush delay
  2073     TReal32 aMaxFlushDelay(KMaxFlushDelay);
  2207     TReal32 aMaxFlushDelay(KMaxFlushDelay);
  2074     TReal32 aPreviousFlushDelay(iPreviousFlushDelay);
  2208     TReal32 aPreviousFlushDelay(iPreviousFlushDelay);
  2076     
  2210     
  2077     if(MPXHarvesting)
  2211     if(MPXHarvesting)
  2078         {
  2212         {
  2079         //MTP or MPX harvesting active, allow longer flush -> bigger batch size
  2213         //MTP or MPX harvesting active, allow longer flush -> bigger batch size
  2080         TN_DEBUG1("CThumbnailStore::FlushCacheTable() MTP sync, longer flush..");
  2214         TN_DEBUG1("CThumbnailStore::FlushCacheTable() MTP sync, longer flush..");
       
  2215         OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - MTP sync, longer flush.." );
  2081         aMaxFlushDelay = KMaxMTPFlushDelay;
  2216         aMaxFlushDelay = KMaxMTPFlushDelay;
  2082         }
  2217         }
  2083     
  2218     
  2084     //1st item in batch    
  2219     //1st item in batch    
  2085     if( iBatchItemCount == 1)
  2220     if( iBatchItemCount == 1)
  2086         {
  2221         {
  2087         TN_DEBUG2("CThumbnailStore::FlushCacheTable() calculate new batch size iPreviousFlushDelay = %d", iPreviousFlushDelay);
  2222         TN_DEBUG2("CThumbnailStore::FlushCacheTable() calculate new batch size iPreviousFlushDelay = %d", iPreviousFlushDelay);
       
  2223         OstTrace1( TRACE_NORMAL, DUP4_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable;iPreviousFlushDelay=%d", iPreviousFlushDelay );
  2088         //adjust batch size dynamically between min and max based on previous flush speed
  2224         //adjust batch size dynamically between min and max based on previous flush speed
  2089         if( iPreviousFlushDelay > 0 )
  2225         if( iPreviousFlushDelay > 0 )
  2090             {
  2226             {
  2091             TReal32 aNewBatchFlushItemCount = aMaxFlushDelay / aPreviousFlushDelay * aBatchFlushItemCount;
  2227             TReal32 aNewBatchFlushItemCount = aMaxFlushDelay / aPreviousFlushDelay * aBatchFlushItemCount;
  2092             iBatchFlushItemCount = (TInt)aNewBatchFlushItemCount;
  2228             iBatchFlushItemCount = (TInt)aNewBatchFlushItemCount;
  2093 
  2229 
  2094             TN_DEBUG2("CThumbnailStore::FlushCacheTable() aMaxFlushDelay %e", aMaxFlushDelay);      
  2230             TN_DEBUG2("CThumbnailStore::FlushCacheTable() aMaxFlushDelay %e", aMaxFlushDelay);      
       
  2231             OstTrace1( TRACE_NORMAL, DUP5_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable;aMaxFlushDelay=%d", aMaxFlushDelay );
  2095             TN_DEBUG2("CThumbnailStore::FlushCacheTable() aPreviousFlushDelay %e", aPreviousFlushDelay);      
  2232             TN_DEBUG2("CThumbnailStore::FlushCacheTable() aPreviousFlushDelay %e", aPreviousFlushDelay);      
       
  2233 			OstTrace1( TRACE_NORMAL, DUP6_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable;aPreviousFlushDelay=%d", aPreviousFlushDelay );
  2096 			TN_DEBUG2("CThumbnailStore::FlushCacheTable() aBatchFlushItemCount %e", aBatchFlushItemCount);      
  2234 			TN_DEBUG2("CThumbnailStore::FlushCacheTable() aBatchFlushItemCount %e", aBatchFlushItemCount);      
       
  2235             OstTrace1( TRACE_NORMAL, DUP7_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable;aBatchFlushItemCount=%d", aBatchFlushItemCount );
  2097             TN_DEBUG2("CThumbnailStore::FlushCacheTable() aNewBatchFlushItemCount %e", aNewBatchFlushItemCount);
  2236             TN_DEBUG2("CThumbnailStore::FlushCacheTable() aNewBatchFlushItemCount %e", aNewBatchFlushItemCount);
       
  2237             OstTrace1( TRACE_NORMAL, DUP8_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable;aNewBatchFlushItemCount=%d", aNewBatchFlushItemCount );
  2098             TN_DEBUG2("CThumbnailStore::FlushCacheTable() iBatchFlushItemCount %d", iBatchFlushItemCount);
  2238             TN_DEBUG2("CThumbnailStore::FlushCacheTable() iBatchFlushItemCount %d", iBatchFlushItemCount);
       
  2239             OstTrace1( TRACE_NORMAL, DUP9_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable;iBatchFlushItemCount=%d", iBatchFlushItemCount );
  2099             
  2240             
  2100             if( iBatchFlushItemCount < KMInBatchItems )
  2241             if( iBatchFlushItemCount < KMInBatchItems )
  2101                 {
  2242                 {
  2102                 iBatchFlushItemCount = KMInBatchItems;
  2243                 iBatchFlushItemCount = KMInBatchItems;
  2103                 }
  2244                 }
  2112             iBatchFlushItemCount = KMInBatchItems;
  2253             iBatchFlushItemCount = KMInBatchItems;
  2113             }
  2254             }
  2114         }
  2255         }
  2115     
  2256     
  2116     TN_DEBUG3("CThumbnailStore::FlushCacheTable() iBatchFlushItemCount = %d, iBatchItemCount = %d", iBatchFlushItemCount, iBatchItemCount);
  2257     TN_DEBUG3("CThumbnailStore::FlushCacheTable() iBatchFlushItemCount = %d, iBatchItemCount = %d", iBatchFlushItemCount, iBatchItemCount);
       
  2258     OstTrace0( TRACE_NORMAL, DUP10_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable" );
  2117     
  2259     
  2118     if( iBatchItemCount < iBatchFlushItemCount && !aForce)
  2260     if( iBatchItemCount < iBatchFlushItemCount && !aForce)
  2119        {
  2261        {
  2120        //some items in cache
  2262        //some items in cache
  2121        StartAutoFlush();
  2263        StartAutoFlush();
  2125     iStartFlush.UniversalTime();
  2267     iStartFlush.UniversalTime();
  2126     
  2268     
  2127     // Move data from temp table to main....
  2269     // Move data from temp table to main....
  2128     TInt err_begin = iDatabase.Exec( KThumbnailBeginTransaction );
  2270     TInt err_begin = iDatabase.Exec( KThumbnailBeginTransaction );
  2129     TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailBeginTransaction %d", err_begin);
  2271     TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailBeginTransaction %d", err_begin);
       
  2272     OstTrace1( TRACE_NORMAL, DUP11_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - KThumbnailBeginTransaction;err_begin=%d", err_begin );
  2130     
  2273     
  2131     TInt err_tempinfo = iDatabase.Exec( KThumbnailMoveFromTempInfoToMainTable );
  2274     TInt err_tempinfo = iDatabase.Exec( KThumbnailMoveFromTempInfoToMainTable );
  2132     TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailMoveFromTempInfoToMainTable %d", err_tempinfo);
  2275     TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailMoveFromTempInfoToMainTable %d", err_tempinfo);
       
  2276     OstTrace1( TRACE_NORMAL, DUP12_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - KThumbnailMoveFromTempInfoToMainTable;err_tempinfo=%d", err_tempinfo );
  2133     
  2277     
  2134 #ifdef _DEBUG
  2278 #ifdef _DEBUG
  2135     if(err_tempinfo < 0)
  2279     if(err_tempinfo < 0)
  2136         {
  2280         {
  2137         TPtrC errorMsg = iDatabase.LastErrorMessage();
  2281         TPtrC errorMsg = iDatabase.LastErrorMessage();
  2138         TN_DEBUG2( "CThumbnailStore::FlushCacheTable() lastError %S", &errorMsg);
  2282         TN_DEBUG2( "CThumbnailStore::FlushCacheTable() lastError %S", &errorMsg);
       
  2283         OstTraceExt1( TRACE_NORMAL, DUP13_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - lastError;errorMsg=%S", errorMsg );
  2139         }
  2284         }
  2140 #endif
  2285 #endif
  2141     
  2286     
  2142     TInt err_tempdata = iDatabase.Exec( KThumbnailMoveFromTempDataToMainTable );
  2287     TInt err_tempdata = iDatabase.Exec( KThumbnailMoveFromTempDataToMainTable );
  2143     
  2288     
  2144 #ifdef _DEBUG
  2289 #ifdef _DEBUG
  2145     if(err_tempdata < 0)
  2290     if(err_tempdata < 0)
  2146         {
  2291         {
  2147         TPtrC errorMsg2 = iDatabase.LastErrorMessage();
  2292         TPtrC errorMsg2 = iDatabase.LastErrorMessage();
  2148         TN_DEBUG2( "CThumbnailStore::FlushCacheTable() KThumbnailMoveFromTempDataToMainTable %S", &errorMsg2);
  2293         TN_DEBUG2( "CThumbnailStore::FlushCacheTable() KThumbnailMoveFromTempDataToMainTable %S", &errorMsg2);
       
  2294         OstTraceExt1( TRACE_NORMAL, DUP14_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - KThumbnailMoveFromTempDataToMainTable;errorMsg2=%S", errorMsg2 );
  2149         }
  2295         }
  2150 #endif
  2296 #endif
  2151     
  2297     
  2152     TInt err_delinfo = iDatabase.Exec( KThumbnailDeleteFromTempInfoTable );
  2298     TInt err_delinfo = iDatabase.Exec( KThumbnailDeleteFromTempInfoTable );
  2153     TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailDeleteFromTempInfoTable %d", err_delinfo);
  2299     TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailDeleteFromTempInfoTable %d", err_delinfo);
       
  2300     OstTrace1( TRACE_NORMAL, DUP15_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - KThumbnailDeleteFromTempInfoTable;err_delinfo=%d", err_delinfo );
  2154     
  2301     
  2155     TInt err_deldata = iDatabase.Exec( KThumbnailDeleteFromTempDataTable );
  2302     TInt err_deldata = iDatabase.Exec( KThumbnailDeleteFromTempDataTable );
  2156     TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailDeleteFromTempDataTable %d", err_deldata);
  2303     TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailDeleteFromTempDataTable %d", err_deldata);
       
  2304     OstTrace1( TRACE_NORMAL, DUP16_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable;err_deldata=%d", err_deldata );
  2157    
  2305    
  2158     if( err_tempinfo < 0 || err_tempdata < 0  || err_delinfo < 0  || err_deldata < 0 )
  2306     if( err_tempinfo < 0 || err_tempdata < 0  || err_delinfo < 0  || err_deldata < 0 )
  2159         {
  2307         {
  2160         TInt err = iDatabase.Exec( KThumbnailRollbackTransaction );
  2308         TInt err = iDatabase.Exec( KThumbnailRollbackTransaction );
  2161         TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailRollbackTransaction %d", err);
  2309         TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailRollbackTransaction %d", err);
       
  2310         OstTrace1( TRACE_NORMAL, DUP17_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - KThumbnailRollbackTransaction;err=%d", err );
  2162         }
  2311         }
  2163     else
  2312     else
  2164         {
  2313         {
  2165         TInt err_commit = iDatabase.Exec( KThumbnailCommitTransaction );
  2314         TInt err_commit = iDatabase.Exec( KThumbnailCommitTransaction );
  2166         TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailCommitTransaction %d", err_commit);
  2315         TN_DEBUG2("CThumbnailStore::FlushCacheTable() KThumbnailCommitTransaction %d", err_commit);
       
  2316         OstTrace0( TRACE_NORMAL, DUP18_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable" );
  2167         }
  2317         }
  2168     
  2318     
  2169     // db got corrupted
  2319     // db got corrupted
  2170     if(err_tempinfo == KSqlErrCorrupt || err_tempinfo == KErrCorrupt ||
  2320     if(err_tempinfo == KSqlErrCorrupt || err_tempinfo == KErrCorrupt ||
  2171        err_tempdata == KSqlErrCorrupt || err_tempdata == KErrCorrupt)
  2321        err_tempdata == KSqlErrCorrupt || err_tempdata == KErrCorrupt)
  2172         {
  2322         {
  2173         TN_DEBUG1("CThumbnailStore::FlushCacheTable() db corrupted");
  2323         TN_DEBUG1("CThumbnailStore::FlushCacheTable() db corrupted");
       
  2324         OstTrace0( TRACE_NORMAL, DUP19_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - db corrupted" );
  2174     
  2325     
  2175         // open new
  2326         // open new
  2176         TRAP_IGNORE(OpenDatabaseL(ETrue));
  2327         TRAP_IGNORE(OpenDatabaseL(ETrue));
  2177         }
  2328         }
  2178    
  2329    
  2179     iStopFlush.UniversalTime();
  2330     iStopFlush.UniversalTime();
  2180     iPreviousFlushDelay = (TInt)iStopFlush.MicroSecondsFrom(iStartFlush).Int64()/1000;
  2331     iPreviousFlushDelay = (TInt)iStopFlush.MicroSecondsFrom(iStartFlush).Int64()/1000;
  2181     
  2332     
  2182     TN_DEBUG2( "CThumbnailStore::FlushCacheTable() took %d ms", iPreviousFlushDelay);
  2333     TN_DEBUG2( "CThumbnailStore::FlushCacheTable() took %d ms", iPreviousFlushDelay);
       
  2334     OstTrace1( TRACE_NORMAL, DUP20_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - took ms ;iPreviousFlushDelay=%d", iPreviousFlushDelay );
  2183         
  2335         
  2184     //cache flushed
  2336     //cache flushed
  2185     iBatchItemCount = 0;
  2337     iBatchItemCount = 0;
  2186 
  2338 
  2187     TN_DEBUG1("CThumbnailStore::FlushCacheTable() out");
  2339     TN_DEBUG1("CThumbnailStore::FlushCacheTable() out");
       
  2340     OstTrace0( TRACE_NORMAL, DUP21_CTHUMBNAILSTORE_FLUSHCACHETABLE, "CThumbnailStore::FlushCacheTable - out" );
  2188     }
  2341     }
  2189 
  2342 
  2190 // -----------------------------------------------------------------------------
  2343 // -----------------------------------------------------------------------------
  2191 // StartAutoFlush()
  2344 // StartAutoFlush()
  2192 // -----------------------------------------------------------------------------
  2345 // -----------------------------------------------------------------------------
  2193 //
  2346 //
  2194 void CThumbnailStore::StartAutoFlush()
  2347 void CThumbnailStore::StartAutoFlush()
  2195     {
  2348     {
  2196     TN_DEBUG1( "CThumbnailStore::StartAutoFlush()" );
  2349     TN_DEBUG1( "CThumbnailStore::StartAutoFlush()" );
  2197     
  2350     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_STARTAUTOFLUSH, "CThumbnailStore::StartAutoFlush" );
  2198     if(iReadOnly)
  2351     if(iReadOnly)
  2199         {
  2352         {
  2200         TN_DEBUG1( "CThumbnailStore::StartAutoFlush() read only, skip..." );
  2353         TN_DEBUG1( "CThumbnailStore::StartAutoFlush() read only, skip..." );
  2201         return;
  2354         return;
  2202         }
  2355         }
  2213         }
  2366         }
  2214     
  2367     
  2215     if (err != KErrNone)
  2368     if (err != KErrNone)
  2216         {
  2369         {
  2217         TN_DEBUG2( "CThumbnailStore::StartAutoFlush() - Error creating timer (%d)", err );
  2370         TN_DEBUG2( "CThumbnailStore::StartAutoFlush() - Error creating timer (%d)", err );
       
  2371         OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_STARTAUTOFLUSH, "CThumbnailStore::StartAutoFlush - - Error creating timer;err=%d", err );
  2218         }
  2372         }
  2219     else
  2373     else
  2220         {
  2374         {
  2221         iAutoFlushTimer->Start( KAutoFlushTimeout * 1000000, KAutoFlushTimeout * 1000000, 
  2375         iAutoFlushTimer->Start( KAutoFlushTimeout * 1000000, KAutoFlushTimeout * 1000000, 
  2222                                 TCallBack(AutoFlushTimerCallBack, this));
  2376                                 TCallBack(AutoFlushTimerCallBack, this));
  2228 // -----------------------------------------------------------------------------
  2382 // -----------------------------------------------------------------------------
  2229 //
  2383 //
  2230 void CThumbnailStore::StopAutoFlush()
  2384 void CThumbnailStore::StopAutoFlush()
  2231     {
  2385     {
  2232     TN_DEBUG1( "CThumbnailStore::StopAutoFlush()" );
  2386     TN_DEBUG1( "CThumbnailStore::StopAutoFlush()" );
       
  2387     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_STOPAUTOFLUSH, "CThumbnailStore::StopAutoFlush" );
  2233     if( iAutoFlushTimer )
  2388     if( iAutoFlushTimer )
  2234         {
  2389         {
  2235         iAutoFlushTimer->Cancel();
  2390         iAutoFlushTimer->Cancel();
  2236         }
  2391         }
  2237     }
  2392     }
  2241 // -----------------------------------------------------------------------------
  2396 // -----------------------------------------------------------------------------
  2242 //
  2397 //
  2243 void CThumbnailStore::StartMaintenance()
  2398 void CThumbnailStore::StartMaintenance()
  2244     {
  2399     {
  2245     TN_DEBUG1( "CThumbnailStore::StartMaintenance()");
  2400     TN_DEBUG1( "CThumbnailStore::StartMaintenance()");
       
  2401     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_STARTMAINTENANCE, "CThumbnailStore::StartMaintenance" );
  2246     TInt err = KErrNone;
  2402     TInt err = KErrNone;
  2247     
  2403     
  2248     if( iMaintenanceTimer && iMaintenanceTimer->IsActive() )
  2404     if( iMaintenanceTimer && iMaintenanceTimer->IsActive() )
  2249         {
  2405         {
  2250         return;
  2406         return;
  2255         }
  2411         }
  2256     
  2412     
  2257     if (err != KErrNone && !iMaintenanceTimer)
  2413     if (err != KErrNone && !iMaintenanceTimer)
  2258         {
  2414         {
  2259         TN_DEBUG2( "CThumbnailStore::StartMaintenanceTimer() - Error creating timer (%d)", err );
  2415         TN_DEBUG2( "CThumbnailStore::StartMaintenanceTimer() - Error creating timer (%d)", err );
       
  2416         OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_STARTMAINTENANCE, "CThumbnailStore::StartMaintenance - Error creating timer ;err=%d", err );
  2260         }
  2417         }
  2261     else
  2418     else
  2262         {
  2419         {
  2263         iMaintenanceTimer->Start( KStoreMaintenancePeriodic, KStoreMaintenancePeriodic, 
  2420         iMaintenanceTimer->Start( KStoreMaintenancePeriodic, KStoreMaintenancePeriodic, 
  2264                                   TCallBack(MaintenanceTimerCallBack, this));
  2421                                   TCallBack(MaintenanceTimerCallBack, this));
  2270 // ---------------------------------------------------------------------------
  2427 // ---------------------------------------------------------------------------
  2271 //
  2428 //
  2272 TInt CThumbnailStore::AutoFlushTimerCallBack(TAny* aAny)
  2429 TInt CThumbnailStore::AutoFlushTimerCallBack(TAny* aAny)
  2273     {
  2430     {
  2274     TN_DEBUG1( "CThumbnailStore::AutoFlushTimerCallBack()");
  2431     TN_DEBUG1( "CThumbnailStore::AutoFlushTimerCallBack()");
       
  2432     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_AUTOFLUSHTIMERCALLBACK, "CThumbnailStore::AutoFlushTimerCallBack" );
  2275     CThumbnailStore* self = static_cast<CThumbnailStore*>( aAny );
  2433     CThumbnailStore* self = static_cast<CThumbnailStore*>( aAny );
  2276     
  2434     
  2277     self->FlushCacheTable(ETrue);
  2435     self->FlushCacheTable(ETrue);
  2278 
  2436 
  2279     return KErrNone; // Return value ignored by CPeriodic
  2437     return KErrNone; // Return value ignored by CPeriodic
  2293     TInt DaemonProcessing(0);
  2451     TInt DaemonProcessing(0);
  2294     TInt ret = RProperty::Get(KTAGDPSNotification, KMPXHarvesting, MPXHarvesting);
  2452     TInt ret = RProperty::Get(KTAGDPSNotification, KMPXHarvesting, MPXHarvesting);
  2295     if(ret != KErrNone || MPXHarvesting)
  2453     if(ret != KErrNone || MPXHarvesting)
  2296         {
  2454         {
  2297         TN_DEBUG3( "CThumbnailStore::MaintenanceTimerCallBack() KMPXHarvesting err == %d, MPXHarvesting == %d", ret, MPXHarvesting);
  2455         TN_DEBUG3( "CThumbnailStore::MaintenanceTimerCallBack() KMPXHarvesting err == %d, MPXHarvesting == %d", ret, MPXHarvesting);
       
  2456         OstTraceExt2( TRACE_NORMAL, CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack;ret=%d;MPXHarvesting=%d", ret, MPXHarvesting );
  2298         self->iIdle = EFalse;
  2457         self->iIdle = EFalse;
  2299         }
  2458         }
  2300     TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() KMPXHarvesting == %d", MPXHarvesting);
  2459     TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() KMPXHarvesting == %d", MPXHarvesting);
       
  2460     OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack;MPXHarvesting=%d", MPXHarvesting );
  2301 
  2461 
  2302     ret = RProperty::Get(KTAGDPSNotification, KDaemonProcessing, DaemonProcessing);
  2462     ret = RProperty::Get(KTAGDPSNotification, KDaemonProcessing, DaemonProcessing);
  2303     if(ret != KErrNone || DaemonProcessing)
  2463     if(ret != KErrNone || DaemonProcessing)
  2304         {
  2464         {
  2305         TN_DEBUG3( "CThumbnailStore::MaintenanceTimerCallBack() KDaemonProcessing err == %d, DaemonProcessing == %d", ret, DaemonProcessing);
  2465         TN_DEBUG3( "CThumbnailStore::MaintenanceTimerCallBack() KDaemonProcessing err == %d, DaemonProcessing == %d", ret, DaemonProcessing);
       
  2466         OstTraceExt2( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack;ret=%d;DaemonProcessing=%d", ret, DaemonProcessing );
  2306         self->iIdle = EFalse;
  2467         self->iIdle = EFalse;
  2307         }
  2468         }
  2308     TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() DaemonProcessing == %d", DaemonProcessing);
  2469     TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() DaemonProcessing == %d", DaemonProcessing);
       
  2470     OstTrace1( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack;DaemonProcessing=%d", DaemonProcessing );
  2309     
  2471     
  2310     if (self->iIdle)
  2472     if (self->iIdle)
  2311         {
  2473         {
  2312         TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - maintenance, store %d", self->iDrive);
  2474         TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - maintenance, store %d", self->iDrive);
       
  2475         OstTrace1( TRACE_NORMAL, DUP4_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - maintenance, store;self->iDrive=%d", self->iDrive );
  2313     
  2476     
  2314         // thumbmnail deletion
  2477         // thumbmnail deletion
  2315         if (self->iDeleteThumbs)
  2478         if (self->iDeleteThumbs)
  2316             {
  2479             {
  2317             TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - cleanup");
  2480             TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - cleanup");
       
  2481             OstTrace0( TRACE_NORMAL, DUP5_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - cleanup" );
  2318         
  2482         
  2319             TInt deleteCount = 0;
  2483             TInt deleteCount = 0;
  2320             
  2484             
  2321             // delete marked rows from database
  2485             // delete marked rows from database
  2322             TRAPD( err, deleteCount = self->DeleteMarkedL() );
  2486             TRAPD( err, deleteCount = self->DeleteMarkedL() );
  2323             if (err != KErrNone)
  2487             if (err != KErrNone)
  2324                 {
  2488                 {
  2325                 TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - cleanup failed, err %d", err);
  2489                 TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - cleanup failed, err %d", err);
       
  2490                 OstTrace1( TRACE_NORMAL, DUP6_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - cleanup failed;err=%d", err );
  2326                 return err;
  2491                 return err;
  2327                 }
  2492                 }
  2328             
  2493             
  2329             // no more marked rows
  2494             // no more marked rows
  2330             if (deleteCount < KStoreMaintenanceDeleteLimit || deleteCount == 0)
  2495             if (deleteCount < KStoreMaintenanceDeleteLimit || deleteCount == 0)
  2331                 {
  2496                 {
  2332                 TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - cleanup finished, store %d", self->iDrive);
  2497                 TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - cleanup finished, store %d", self->iDrive);
       
  2498                 OstTrace1( TRACE_NORMAL, DUP7_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - cleanup finished, store;self->iDrive=%d", self->iDrive );
  2333                 self->iDeleteThumbs = EFalse;
  2499                 self->iDeleteThumbs = EFalse;
  2334                 }     
  2500                 }     
  2335             }
  2501             }
  2336         
  2502         
  2337         // file existence check
  2503         // file existence check
  2338         else if (self->iCheckFilesExist)
  2504         else if (self->iCheckFilesExist)
  2339             {
  2505             {
  2340             TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - file existence check");
  2506             TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - file existence check");
       
  2507             OstTrace0( TRACE_NORMAL, DUP8_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - file existence check" );
  2341         
  2508         
  2342             TBool finished = EFalse;
  2509             TBool finished = EFalse;
  2343         
  2510         
  2344             TRAPD( err, finished = self->FileExistenceCheckL() );
  2511             TRAPD( err, finished = self->FileExistenceCheckL() );
  2345             if (err != KErrNone)
  2512             if (err != KErrNone)
  2346                 {
  2513                 {
  2347                 TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - file existence check failed, err %d", err);
  2514                 TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - file existence check failed, err %d", err);
       
  2515                 OstTrace1( TRACE_NORMAL, DUP9_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - file existence check failed;err=%d", err );
  2348                 return err;
  2516                 return err;
  2349                 }
  2517                 }
  2350         
  2518         
  2351             // all files checked.
  2519             // all files checked.
  2352             if (finished)
  2520             if (finished)
  2353                 {
  2521                 {
  2354                 TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - file existence check finished, store %d", self->iDrive);
  2522                 TN_DEBUG2( "CThumbnailStore::MaintenanceTimerCallBack() - file existence check finished, store %d", self->iDrive);
       
  2523                 OstTrace1( TRACE_NORMAL, DUP10_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - file existence check finished, store;self->iDrive=%d", self->iDrive );
  2355                 self->iCheckFilesExist = EFalse;
  2524                 self->iCheckFilesExist = EFalse;
  2356                 }
  2525                 }
  2357             }
  2526             }
  2358         
  2527         
  2359         // next round
  2528         // next round
  2360         if (self->iIdle && ( self->iDeleteThumbs || self->iCheckFilesExist) )
  2529         if (self->iIdle && ( self->iDeleteThumbs || self->iCheckFilesExist) )
  2361             {
  2530             {
  2362             TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - continue maintenance");
  2531             TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - continue maintenance");
       
  2532             OstTrace0( TRACE_NORMAL, DUP11_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - continue maintenance" );
  2363             self->StartMaintenance();
  2533             self->StartMaintenance();
  2364             }  
  2534             }  
  2365         else if (!self->iDeleteThumbs && !self->iCheckFilesExist)
  2535         else if (!self->iDeleteThumbs && !self->iCheckFilesExist)
  2366             {
  2536             {
  2367             TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - no more maintenance");
  2537             TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - no more maintenance");
       
  2538             OstTrace0( TRACE_NORMAL, DUP12_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - no more maintenance" );
  2368         
  2539         
  2369             // no need to monitor activity anymore
  2540             // no need to monitor activity anymore
  2370             self->iActivityManager->Cancel();
  2541             self->iActivityManager->Cancel();
  2371             }
  2542             }
  2372         }
  2543         }
  2373     else
  2544     else
  2374         {
  2545         {
  2375         TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - device not idle");
  2546         TN_DEBUG1( "CThumbnailStore::MaintenanceTimerCallBack() - device not idle");
       
  2547         OstTrace0( TRACE_NORMAL, DUP13_CTHUMBNAILSTORE_MAINTENANCETIMERCALLBACK, "CThumbnailStore::MaintenanceTimerCallBack - device not idle" );
  2376         }
  2548         }
  2377 
  2549 
  2378     return KErrNone; // Return value ignored by CPeriodic
  2550     return KErrNone; // Return value ignored by CPeriodic
  2379     }
  2551     }
  2380 
  2552 
  2381 TBool CThumbnailStore::CheckModifiedByPathL( const TDesC& aPath, const TInt64 aModified, TBool& modifiedChanged )
  2553 TBool CThumbnailStore::CheckModifiedByPathL( const TDesC& aPath, const TInt64 aModified, TBool& modifiedChanged )
  2382     {
  2554     {
  2383     TN_DEBUG2( "CThumbnailStore::CheckModifiedByPathL() %S", &aPath);
  2555     TN_DEBUG2( "CThumbnailStore::CheckModifiedByPathL() %S", &aPath);
       
  2556     OstTraceExt1( TRACE_NORMAL, CTHUMBNAILSTORE_CHECKMODIFIEDBYPATHL, "CThumbnailStore::CheckModifiedByPathL;aPath=%S", aPath );
  2384     
  2557     
  2385     if(iReadOnly)
  2558     if(iReadOnly)
  2386     	{
  2559     	{
  2387     	TN_DEBUG1( "CThumbnailStore::CheckModifiedByPathL() read only, skip..." );
  2560     	TN_DEBUG1( "CThumbnailStore::CheckModifiedByPathL() read only, skip..." );
  2388 		modifiedChanged = EFalse;
  2561 		modifiedChanged = EFalse;
  2412     TInt rowStatus = stmt->Next();
  2585     TInt rowStatus = stmt->Next();
  2413    
  2586    
  2414     TBool checkMain = EFalse;
  2587     TBool checkMain = EFalse;
  2415    
  2588    
  2416     TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- temp" );
  2589     TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- temp" );
       
  2590     OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_CHECKMODIFIEDBYPATHL, "CThumbnailStore::CheckModifiedByPathL -- temp" );
  2417    
  2591    
  2418     while(rowStatus == KSqlAtRow || !checkMain)
  2592     while(rowStatus == KSqlAtRow || !checkMain)
  2419         {
  2593         {
  2420         if(rowStatus == KSqlAtRow)
  2594         if(rowStatus == KSqlAtRow)
  2421             {
  2595             {
  2422             ret = ETrue;
  2596             ret = ETrue;
  2423             TInt64 oldModified = stmt->ColumnInt64( column );
  2597             TInt64 oldModified = stmt->ColumnInt64( column );
  2424            
  2598            
  2425             TN_DEBUG2( "CThumbnailStore::CheckModifiedL() -- timestamp old %Ld", oldModified);
  2599             TN_DEBUG2( "CThumbnailStore::CheckModifiedL() -- timestamp old %Ld", oldModified);
       
  2600             OstTraceExt1( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_CHECKMODIFIEDBYPATHL, "CThumbnailStore::CheckModifiedByPathL -- timestamp old;oldModified=%Ld", oldModified );
  2426             TN_DEBUG2( "CThumbnailStore::CheckModifiedL() -- timestamp mds %Ld", aModified);
  2601             TN_DEBUG2( "CThumbnailStore::CheckModifiedL() -- timestamp mds %Ld", aModified);
       
  2602             OstTraceExt1( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_CHECKMODIFIEDBYPATHL, "CThumbnailStore::CheckModifiedByPathL -- timestamp mds;aModified=%Ld", aModified );
  2427           
  2603           
  2428             if (oldModified < aModified)
  2604             if (oldModified < aModified)
  2429                 {
  2605                 {
  2430                 TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- timestamp is newer than original" );
  2606                 TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- timestamp is newer than original" );
       
  2607                 OstTrace0( TRACE_NORMAL, DUP4_CTHUMBNAILSTORE_CHECKMODIFIEDBYPATHL, "CThumbnailStore::CheckModifiedByPathL -- timestamp is newer than original" );
  2431                 modifiedChanged = ETrue;
  2608                 modifiedChanged = ETrue;
  2432                 break;
  2609                 break;
  2433                 }
  2610                 }
  2434             else if (oldModified > aModified)
  2611             else if (oldModified > aModified)
  2435                 {
  2612                 {
  2436                 TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- timestamp is older than original" );
  2613                 TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- timestamp is older than original" );
       
  2614                 OstTrace0( TRACE_NORMAL, DUP5_CTHUMBNAILSTORE_CHECKMODIFIEDBYPATHL, "CThumbnailStore::CheckModifiedByPathL -- timestamp is older than original" );
  2437                 }
  2615                 }
  2438             else if (oldModified == aModified)
  2616             else if (oldModified == aModified)
  2439                 {
  2617                 {
  2440                 TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- timestamp is the same as original" );
  2618                 TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- timestamp is the same as original" );
       
  2619                 OstTrace0( TRACE_NORMAL, DUP6_CTHUMBNAILSTORE_CHECKMODIFIEDBYPATHL, "CThumbnailStore::CheckModifiedByPathL -- timestamp is the same as original" );
  2441                 }
  2620                 }
  2442             
  2621             
  2443             rowStatus = stmt->Next();
  2622             rowStatus = stmt->Next();
  2444             }
  2623             }
  2445        
  2624        
  2446         //switch to main table if modified not found from temp
  2625         //switch to main table if modified not found from temp
  2447         if(rowStatus != KSqlAtRow && !checkMain && !modifiedChanged)
  2626         if(rowStatus != KSqlAtRow && !checkMain && !modifiedChanged)
  2448             {
  2627             {
  2449             TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- main" );
  2628             TN_DEBUG1( "CThumbnailStore::CheckModifiedL() -- main" );
       
  2629             OstTrace0( TRACE_NORMAL, DUP7_CTHUMBNAILSTORE_CHECKMODIFIEDBYPATHL, "CThumbnailStore::CheckModifiedByPathL -- main" );
  2450             //come here only once
  2630             //come here only once
  2451             checkMain = ETrue;
  2631             checkMain = ETrue;
  2452            
  2632            
  2453             CleanupStack::PopAndDestroy( stmt );
  2633             CleanupStack::PopAndDestroy( stmt );
  2454             stmt = &iStmt_KThumbnailSelectModifiedByPath;
  2634             stmt = &iStmt_KThumbnailSelectModifiedByPath;
  2483 // -----------------------------------------------------------------------------
  2663 // -----------------------------------------------------------------------------
  2484 //
  2664 //
  2485 void CThumbnailStore::PrepareBlacklistedItemsForRetryL()
  2665 void CThumbnailStore::PrepareBlacklistedItemsForRetryL()
  2486     {
  2666     {
  2487     TN_DEBUG1( "CThumbnailStore::PrepareBlacklistedItemsForRetry()" );
  2667     TN_DEBUG1( "CThumbnailStore::PrepareBlacklistedItemsForRetry()" );
       
  2668     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_PREPAREBLACKLISTEDITEMSFORRETRYL, "CThumbnailStore::PrepareBlacklistedItemsForRetryL" );
  2488     
  2669     
  2489     RSqlStatement stmt;
  2670     RSqlStatement stmt;
  2490     CleanupClosePushL( stmt );
  2671     CleanupClosePushL( stmt );
  2491 
  2672 
  2492     User::LeaveIfError( stmt.Prepare( iDatabase, KThumbnailTouchBlacklistedRows ));
  2673     User::LeaveIfError( stmt.Prepare( iDatabase, KThumbnailTouchBlacklistedRows ));
  2495     User::LeaveIfError( paramIndex );
  2676     User::LeaveIfError( paramIndex );
  2496     User::LeaveIfError( stmt.BindInt( paramIndex, KThumbnailDbFlagBlacklisted ));
  2677     User::LeaveIfError( stmt.BindInt( paramIndex, KThumbnailDbFlagBlacklisted ));
  2497     TInt err = stmt.Exec();
  2678     TInt err = stmt.Exec();
  2498    
  2679    
  2499     TN_DEBUG2( "CThumbnailStore::PrepareBlacklistedItemsForRetryL() - main table, err=%d", err );
  2680     TN_DEBUG2( "CThumbnailStore::PrepareBlacklistedItemsForRetryL() - main table, err=%d", err );
       
  2681     OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_PREPAREBLACKLISTEDITEMSFORRETRYL, "CThumbnailStore::PrepareBlacklistedItemsForRetryL - main table;err=%d", err );
  2500     
  2682     
  2501     CleanupStack::PopAndDestroy( &stmt );
  2683     CleanupStack::PopAndDestroy( &stmt );
  2502     }
  2684     }
  2503 
  2685 
  2504 // -----------------------------------------------------------------------------
  2686 // -----------------------------------------------------------------------------
  2506 // -----------------------------------------------------------------------------
  2688 // -----------------------------------------------------------------------------
  2507 //
  2689 //
  2508 TInt CThumbnailStore::DeleteMarkedL()
  2690 TInt CThumbnailStore::DeleteMarkedL()
  2509     {
  2691     {
  2510     TN_DEBUG1( "CThumbnailStore::DeleteMarkedL()" );
  2692     TN_DEBUG1( "CThumbnailStore::DeleteMarkedL()" );
  2511     
  2693     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_DELETEMARKEDL, "CThumbnailStore::DeleteMarkedL" );
  2512     if(iReadOnly)
  2694     if(iReadOnly)
  2513         {
  2695         {
  2514         TN_DEBUG1( "CThumbnailStore::DeleteMarkedL() read only, skip..." );
  2696         TN_DEBUG1( "CThumbnailStore::DeleteMarkedL() read only, skip..." );
  2515         return KErrAccessDenied;
  2697         return KErrAccessDenied;
  2516         }
  2698         }
  2571        stmt_infodata->Reset();
  2753        stmt_infodata->Reset();
  2572        User::LeaveIfError( err );
  2754        User::LeaveIfError( err );
  2573        deleteCount++;
  2755        deleteCount++;
  2574        
  2756        
  2575        TN_DEBUG1( "CThumbnailStore::DeleteMarkedL() - thumbnail deleted" );
  2757        TN_DEBUG1( "CThumbnailStore::DeleteMarkedL() - thumbnail deleted" );
       
  2758        OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_DELETEMARKEDL, "CThumbnailStore::DeleteMarkedL - thumbnail deleted" );
  2576        
  2759        
  2577        rowStatus = stmt->Next();
  2760        rowStatus = stmt->Next();
  2578        }
  2761        }
  2579         
  2762         
  2580     CleanupStack::PopAndDestroy( stmt_infodata );
  2763     CleanupStack::PopAndDestroy( stmt_infodata );
  2590     transaction.CommitL();
  2773     transaction.CommitL();
  2591     CleanupStack::PopAndDestroy( &transaction );
  2774     CleanupStack::PopAndDestroy( &transaction );
  2592     
  2775     
  2593 #ifdef _DEBUG
  2776 #ifdef _DEBUG
  2594     aStop.UniversalTime();
  2777     aStop.UniversalTime();
       
  2778     TInt tookTime = (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000;
  2595     TN_DEBUG2( "CThumbnailStore::DeleteMarkedL() took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
  2779     TN_DEBUG2( "CThumbnailStore::DeleteMarkedL() took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
       
  2780     OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_DELETEMARKEDL, "CThumbnailStore::DeleteMarkedL - took ms;tookTime=%d", tookTime );
  2596 #endif
  2781 #endif
  2597     
  2782     
  2598     return deleteCount;
  2783     return deleteCount;
  2599     }
  2784     }
  2600 
  2785 
  2603 // -----------------------------------------------------------------------------
  2788 // -----------------------------------------------------------------------------
  2604 //
  2789 //
  2605 TInt CThumbnailStore::FileExistenceCheckL()
  2790 TInt CThumbnailStore::FileExistenceCheckL()
  2606     {
  2791     {
  2607     TN_DEBUG1( "CThumbnailStore::FileExistenceCheckL()" );
  2792     TN_DEBUG1( "CThumbnailStore::FileExistenceCheckL()" );
  2608 	
  2793     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_FILEEXISTENCECHECKL, "CThumbnailStore::FileExistenceCheckL" );
  2609     if(iReadOnly)
  2794     if(iReadOnly)
  2610 		{
  2795 		{
  2611 		TN_DEBUG1( "CThumbnailStore::FileExistenceCheckL() read only, skip..." );
  2796 		TN_DEBUG1( "CThumbnailStore::FileExistenceCheckL() read only, skip..." );
  2612 		return ETrue;
  2797 		return ETrue;
  2613 		}
  2798 		}
  2694     transaction.CommitL();
  2879     transaction.CommitL();
  2695     CleanupStack::PopAndDestroy( &transaction );
  2880     CleanupStack::PopAndDestroy( &transaction );
  2696     
  2881     
  2697 #ifdef _DEBUG
  2882 #ifdef _DEBUG
  2698     aStop.UniversalTime();
  2883     aStop.UniversalTime();
       
  2884     TInt tookTime = (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000;
  2699     TN_DEBUG2( "CThumbnailStore::FileExistenceCheckL() took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
  2885     TN_DEBUG2( "CThumbnailStore::FileExistenceCheckL() took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
       
  2886     OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_FILEEXISTENCECHECKL, "CThumbnailStore::FileExistenceCheckL - took ms;tookTime=%d", tookTime );
  2700 #endif
  2887 #endif
  2701     
  2888     
  2702     return finished;
  2889     return finished;
  2703     }
  2890     }
  2704 
  2891 
  2734 TInt CThumbnailStore::CheckDbState()
  2921 TInt CThumbnailStore::CheckDbState()
  2735     {
  2922     {
  2736     if (iUnrecoverable && !iReadOnly)
  2923     if (iUnrecoverable && !iReadOnly)
  2737         {
  2924         {
  2738         TN_DEBUG1( "CThumbnailStore::CheckDbState() - database in unrecoverable state" );
  2925         TN_DEBUG1( "CThumbnailStore::CheckDbState() - database in unrecoverable state" );
       
  2926         OstTrace0( TRACE_NORMAL, CTHUMBNAILSTORE_CHECKDBSTATE, "CThumbnailStore::CheckDbState" );
  2739         __ASSERT_DEBUG( !iUnrecoverable, ThumbnailPanic( EThumbnailDatabaseUnrecoverable ));
  2927         __ASSERT_DEBUG( !iUnrecoverable, ThumbnailPanic( EThumbnailDatabaseUnrecoverable ));
  2740         
  2928         
  2741         return KStoreUnrecoverableErr;
  2929         return KStoreUnrecoverableErr;
  2742         }
  2930         }
  2743     else
  2931     else
  2747     }
  2935     }
  2748 
  2936 
  2749 void CThumbnailStore::HandleDiskSpaceNotificationL( TBool aDiskFull )
  2937 void CThumbnailStore::HandleDiskSpaceNotificationL( TBool aDiskFull )
  2750     {
  2938     {
  2751     TN_DEBUG2( "CThumbnailStore::HandleDiskSpaceNotificationL() aDiskFull = %d", aDiskFull );
  2939     TN_DEBUG2( "CThumbnailStore::HandleDiskSpaceNotificationL() aDiskFull = %d", aDiskFull );
       
  2940     OstTrace1( TRACE_NORMAL, CTHUMBNAILSTORE_HANDLEDISKSPACENOTIFICATIONL, "CThumbnailStore::HandleDiskSpaceNotificationL;aDiskFull=%u", aDiskFull );
  2752     iDiskFull = aDiskFull;
  2941     iDiskFull = aDiskFull;
  2753     }
  2942     }
  2754 
  2943 
  2755 #ifdef _DEBUG
  2944 #ifdef _DEBUG
  2756 void CThumbnailStore::HandleDiskSpaceError(TInt aError )
  2945 void CThumbnailStore::HandleDiskSpaceError(TInt aError )
  2757 #else
  2946 #else
  2758 void CThumbnailStore::HandleDiskSpaceError(TInt /*aError*/ )
  2947 void CThumbnailStore::HandleDiskSpaceError(TInt /*aError*/ )
  2759 #endif
  2948 #endif
  2760     {
  2949     {
  2761     TN_DEBUG2( "CThumbnailStore::HandleDiskSpaceError() aError = %d", aError );
  2950     TN_DEBUG2( "CThumbnailStore::HandleDiskSpaceError() aError = %d", aError );
       
  2951 #ifdef _DEBUG
       
  2952     OstTrace1( TRACE_NORMAL, CTHUMBNAILSTORE_HANDLEDISKSPACEERROR, "CThumbnailStore::HandleDiskSpaceError;aError=%d", aError );
       
  2953 #endif
  2762     }
  2954     }
  2763 
  2955 
  2764 TBool CThumbnailStore::IsDiskFull()
  2956 TBool CThumbnailStore::IsDiskFull()
  2765     {
  2957     {
  2766     if(iReadOnly)
  2958     if(iReadOnly)
  2776 // -----------------------------------------------------------------------------
  2968 // -----------------------------------------------------------------------------
  2777 //
  2969 //
  2778 void CThumbnailStore::ActivityChanged(const TBool aActive)
  2970 void CThumbnailStore::ActivityChanged(const TBool aActive)
  2779     {
  2971     {
  2780     TN_DEBUG2( "CThumbnailStore::ActivityChanged() aActive == %d", aActive);
  2972     TN_DEBUG2( "CThumbnailStore::ActivityChanged() aActive == %d", aActive);
  2781     
  2973     OstTrace1( TRACE_NORMAL, CTHUMBNAILSTORE_ACTIVITYCHANGED, "CThumbnailStore::ActivityChanged;aActive=%u", aActive );
  2782     if( iReadOnly )
  2974     if( iReadOnly )
  2783         {
  2975         {
  2784         TN_DEBUG1( "CThumbnailStore::ActivityChanged() read only, skip..." );
  2976         TN_DEBUG1( "CThumbnailStore::ActivityChanged() read only, skip..." );
  2785         return;
  2977         return;
  2786         }
  2978         }
  2796         
  2988         
  2797         TInt ret = RProperty::Get(KTAGDPSNotification, KMPXHarvesting, MPXHarvesting);
  2989         TInt ret = RProperty::Get(KTAGDPSNotification, KMPXHarvesting, MPXHarvesting);
  2798         if(ret != KErrNone || MPXHarvesting)
  2990         if(ret != KErrNone || MPXHarvesting)
  2799             {
  2991             {
  2800             TN_DEBUG3( "CThumbnailStore::ActivityChanged() KMPXHarvesting err == %d, MPXHarvesting == %d", ret, MPXHarvesting);
  2992             TN_DEBUG3( "CThumbnailStore::ActivityChanged() KMPXHarvesting err == %d, MPXHarvesting == %d", ret, MPXHarvesting);
       
  2993             OstTraceExt2( TRACE_NORMAL, DUP1_CTHUMBNAILSTORE_ACTIVITYCHANGED, "CThumbnailStore::ActivityChanged;ret=%d;MPXHarvesting=%d", ret, MPXHarvesting );
  2801             iIdle = EFalse;
  2994             iIdle = EFalse;
  2802             return;
  2995             return;
  2803             }
  2996             }
  2804         
  2997         
  2805         ret = RProperty::Get(KTAGDPSNotification, KDaemonProcessing, DaemonProcessing);
  2998         ret = RProperty::Get(KTAGDPSNotification, KDaemonProcessing, DaemonProcessing);
  2806         if(ret != KErrNone || DaemonProcessing)
  2999         if(ret != KErrNone || DaemonProcessing)
  2807             {
  3000             {
  2808             TN_DEBUG3( "CThumbnailStore::ActivityChanged() KDaemonProcessing err == %d DaemonProcessing == %d", ret, DaemonProcessing );
  3001             TN_DEBUG3( "CThumbnailStore::ActivityChanged() KDaemonProcessing err == %d DaemonProcessing == %d", ret, DaemonProcessing );
       
  3002             OstTraceExt2( TRACE_NORMAL, DUP2_CTHUMBNAILSTORE_ACTIVITYCHANGED, "CThumbnailStore::ActivityChanged - KDaemonProcessing;ret=%d;DaemonProcessing=%d", ret, DaemonProcessing );
  2809             iIdle = EFalse;
  3003             iIdle = EFalse;
  2810             return;
  3004             return;
  2811             }
  3005             }
  2812         
  3006         
  2813         TN_DEBUG1( "CThumbnailStore::ActivityChanged() - starting maintenance");
  3007         TN_DEBUG1( "CThumbnailStore::ActivityChanged() - starting maintenance");
       
  3008         OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILSTORE_ACTIVITYCHANGED, "CThumbnailStore::ActivityChanged - starting maintenance" );
  2814         iIdle = ETrue;
  3009         iIdle = ETrue;
  2815         StartMaintenance();
  3010         StartMaintenance();
  2816         }
  3011         }
  2817     }
  3012     }
  2818 
  3013 
  2843     }
  3038     }
  2844 
  3039 
  2845 TDriveNumber CThumbnailStoreDiskSpaceNotifierAO::GetDriveNumberL( const TDesC& aFilename )
  3040 TDriveNumber CThumbnailStoreDiskSpaceNotifierAO::GetDriveNumberL( const TDesC& aFilename )
  2846     {
  3041     {
  2847     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::GetDriveNumberL()");
  3042     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::GetDriveNumberL()");
       
  3043     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTOREDISKSPACENOTIFIERAO_GETDRIVENUMBERL, "CThumbnailStoreDiskSpaceNotifierAO::GetDriveNumberL" );
  2848     TLex driveParser( aFilename );
  3044     TLex driveParser( aFilename );
  2849     
  3045     
  2850     TChar driveChar = driveParser.Get();
  3046     TChar driveChar = driveParser.Get();
  2851 
  3047 
  2852     if( 0 == driveChar || TChar( ':' ) != driveParser.Peek() )
  3048     if( 0 == driveChar || TChar( ':' ) != driveParser.Peek() )
  2853         {
  3049         {
  2854         TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::GetDriveNumberL() KErrArgument");
  3050         TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::GetDriveNumberL() KErrArgument");
       
  3051         OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_GETDRIVENUMBERL, "CThumbnailStoreDiskSpaceNotifierAO::GetDriveNumberL - KErrArgument" );
  2855         User::Leave( KErrArgument );
  3052         User::Leave( KErrArgument );
  2856         }
  3053         }
  2857         
  3054         
  2858     TInt driveNumber;
  3055     TInt driveNumber;
  2859     
  3056     
  2863     }
  3060     }
  2864 
  3061 
  2865 CThumbnailStoreDiskSpaceNotifierAO::~CThumbnailStoreDiskSpaceNotifierAO()
  3062 CThumbnailStoreDiskSpaceNotifierAO::~CThumbnailStoreDiskSpaceNotifierAO()
  2866     {
  3063     {
  2867     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::~CThumbnailStoreDiskSpaceNotifierAO()");
  3064     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::~CThumbnailStoreDiskSpaceNotifierAO()");
       
  3065     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTOREDISKSPACENOTIFIERAO_CTHUMBNAILSTOREDISKSPACENOTIFIERAO, "CThumbnailStoreDiskSpaceNotifierAO::~CThumbnailStoreDiskSpaceNotifierAO" );
  2868     Cancel();
  3066     Cancel();
  2869 
  3067 
  2870     iFileServerSession.Close();
  3068     iFileServerSession.Close();
  2871     }
  3069     }
  2872 
  3070 
  2873 void CThumbnailStoreDiskSpaceNotifierAO::RunL()
  3071 void CThumbnailStoreDiskSpaceNotifierAO::RunL()
  2874     {   
  3072     {   
  2875     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL()");
  3073     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL()");
       
  3074     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTOREDISKSPACENOTIFIERAO_RUNL, "CThumbnailStoreDiskSpaceNotifierAO::RunL" );
  2876     TVolumeInfo volumeInfo;
  3075     TVolumeInfo volumeInfo;
  2877 
  3076 
  2878     if ( iState == CThumbnailStoreDiskSpaceNotifierAO::ENormal )
  3077     if ( iState == CThumbnailStoreDiskSpaceNotifierAO::ENormal )
  2879         {
  3078         {
  2880         TInt status = iStatus.Int();
  3079         TInt status = iStatus.Int();
  2890                     {                  
  3089                     {                  
  2891                     // Check if free space is less than threshold level
  3090                     // Check if free space is less than threshold level
  2892                     if( volumeInfo.iFree < iThreshold )
  3091                     if( volumeInfo.iFree < iThreshold )
  2893                         {
  3092                         {
  2894                         TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() FULL");
  3093                         TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() FULL");
       
  3094                         OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_RUNL, "CThumbnailStoreDiskSpaceNotifierAO::RunL - FULL" );
  2895                         iDiskFull = ETrue;
  3095                         iDiskFull = ETrue;
  2896                         iObserver.HandleDiskSpaceNotificationL( iDiskFull );
  3096                         iObserver.HandleDiskSpaceNotificationL( iDiskFull );
  2897                         iState = EIterate;
  3097                         iState = EIterate;
  2898                         iIterationCount = 0;
  3098                         iIterationCount = 0;
  2899                         SetActive();
  3099                         SetActive();
  2902                         return;
  3102                         return;
  2903                         }
  3103                         }
  2904                     else
  3104                     else
  2905                         {
  3105                         {
  2906                         TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() NOT FULL");
  3106                         TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() NOT FULL");
       
  3107                         OstTrace0( TRACE_NORMAL, DUP2_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_RUNL, "CThumbnailStoreDiskSpaceNotifierAO::RunL - NOT FULL" );
  2907                         iDiskFull = EFalse;
  3108                         iDiskFull = EFalse;
  2908                         iObserver.HandleDiskSpaceNotificationL( iDiskFull );
  3109                         iObserver.HandleDiskSpaceNotificationL( iDiskFull );
  2909                         }
  3110                         }
  2910                     }
  3111                     }
  2911                 else
  3112                 else
  2912                     {
  3113                     {
  2913                     TN_DEBUG2( "CThumbnailStoreDiskSpaceNotifierAO::RunL() error %d NOT FULL", ret);
  3114                     TN_DEBUG2( "CThumbnailStoreDiskSpaceNotifierAO::RunL() error %d NOT FULL", ret);
       
  3115                     OstTrace1( TRACE_NORMAL, DUP3_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_RUNL, "CThumbnailStoreDiskSpaceNotifierAO::RunL - NOT FULL;ret=%d", ret );
  2914                     iDiskFull = EFalse;
  3116                     iDiskFull = EFalse;
  2915                     iObserver.HandleDiskSpaceNotificationL( iDiskFull );
  3117                     iObserver.HandleDiskSpaceNotificationL( iDiskFull );
  2916                     User::Leave( ret );
  3118                     User::Leave( ret );
  2917                     }
  3119                     }
  2918                 
  3120                 
  2919                 StartNotifier();
  3121                 StartNotifier();
  2920                 break;
  3122                 break;
  2921 
  3123 
  2922             case KErrArgument:
  3124             case KErrArgument:
  2923                 TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() KErrArgument");
  3125                 TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() KErrArgument");
       
  3126                 OstTrace0( TRACE_NORMAL, DUP4_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_RUNL, "CThumbnailStoreDiskSpaceNotifierAO::RunL - KErrArgument" );
  2924                 User::Leave( status );
  3127                 User::Leave( status );
  2925                 break;
  3128                 break;
  2926             default:
  3129             default:
  2927                 break;
  3130                 break;
  2928             }
  3131             }
  2947                 {
  3150                 {
  2948                 User::LeaveIfError( iFileServerSession.Volume( volumeInfo, iDrive ) );
  3151                 User::LeaveIfError( iFileServerSession.Volume( volumeInfo, iDrive ) );
  2949                 if ( volumeInfo.iFree >= iThreshold )
  3152                 if ( volumeInfo.iFree >= iThreshold )
  2950                     {
  3153                     {
  2951                     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() NOT FULL");
  3154                     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() NOT FULL");
       
  3155                     OstTrace0( TRACE_NORMAL, DUP5_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_RUNL, "CThumbnailStoreDiskSpaceNotifierAO::RunL - NOT FULL" );
  2952                     iDiskFull = EFalse;
  3156                     iDiskFull = EFalse;
  2953                     }
  3157                     }
  2954                 }
  3158                 }
  2955             }
  3159             }
  2956         else
  3160         else
  2957             {
  3161             {
  2958             TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() NOT FULL");
  3162             TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() NOT FULL");
       
  3163             OstTrace0( TRACE_NORMAL, DUP6_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_RUNL, "CThumbnailStoreDiskSpaceNotifierAO::RunL - NOT FULL" );
  2959             iDiskFull = EFalse;
  3164             iDiskFull = EFalse;
  2960             }
  3165             }
  2961         iState = ENormal;
  3166         iState = ENormal;
  2962         iIterationCount = 0;
  3167         iIterationCount = 0;
  2963         StartNotifier();            
  3168         StartNotifier();            
  2964         }
  3169         }
  2965     else
  3170     else
  2966         {
  3171         {
  2967         TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() KErrGeneral");
  3172         TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::RunL() KErrGeneral");
       
  3173         OstTrace0( TRACE_NORMAL, DUP7_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_RUNL, "CThumbnailStoreDiskSpaceNotifierAO::RunL - KErrGeneral" );
  2968         User::Leave( KErrGeneral );
  3174         User::Leave( KErrGeneral );
  2969         }
  3175         }
  2970     }
  3176     }
  2971 
  3177 
  2972 TInt CThumbnailStoreDiskSpaceNotifierAO::RunError(TInt aError)
  3178 TInt CThumbnailStoreDiskSpaceNotifierAO::RunError(TInt aError)
  2973     {
  3179     {
  2974     TN_DEBUG2( "CThumbnailStoreDiskSpaceNotifierAO::RunError() %d", aError);
  3180     TN_DEBUG2( "CThumbnailStoreDiskSpaceNotifierAO::RunError() %d", aError);
       
  3181     OstTrace1( TRACE_NORMAL, CTHUMBNAILSTOREDISKSPACENOTIFIERAO_RUNERROR, "CThumbnailStoreDiskSpaceNotifierAO::RunError;aError=%d", aError );
  2975     
  3182     
  2976     iObserver.HandleDiskSpaceError( aError );
  3183     iObserver.HandleDiskSpaceError( aError );
  2977     
  3184     
  2978     return KErrNone;
  3185     return KErrNone;
  2979     }
  3186     }
  2980 
  3187 
  2981 void CThumbnailStoreDiskSpaceNotifierAO::DoCancel()
  3188 void CThumbnailStoreDiskSpaceNotifierAO::DoCancel()
  2982     {
  3189     {
  2983     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::DoCancel()");
  3190     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::DoCancel()");
       
  3191     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTOREDISKSPACENOTIFIERAO_DOCANCEL, "CThumbnailStoreDiskSpaceNotifierAO::DoCancel" );
  2984     
  3192     
  2985     if( IsActive() )
  3193     if( IsActive() )
  2986         {   
  3194         {   
  2987         iFileServerSession.NotifyDiskSpaceCancel();
  3195         iFileServerSession.NotifyDiskSpaceCancel();
  2988         }
  3196         }
  2992     MThumbnailStoreDiskSpaceNotifierObserver& aObserver, TInt64 aThreshold, const TDriveNumber aDrive)
  3200     MThumbnailStoreDiskSpaceNotifierObserver& aObserver, TInt64 aThreshold, const TDriveNumber aDrive)
  2993     : CActive( CActive::EPriorityStandard ), 
  3201     : CActive( CActive::EPriorityStandard ), 
  2994     iObserver( aObserver ), iThreshold( aThreshold ), iDrive( aDrive ), iState( CThumbnailStoreDiskSpaceNotifierAO::ENormal ), iDiskFull( EFalse )
  3202     iObserver( aObserver ), iThreshold( aThreshold ), iDrive( aDrive ), iState( CThumbnailStoreDiskSpaceNotifierAO::ENormal ), iDiskFull( EFalse )
  2995     {
  3203     {
  2996     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::CThumbnailStoreDiskSpaceNotifierAO()");
  3204     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::CThumbnailStoreDiskSpaceNotifierAO()");
       
  3205     OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_CTHUMBNAILSTOREDISKSPACENOTIFIERAO, "CThumbnailStoreDiskSpaceNotifierAO::CThumbnailStoreDiskSpaceNotifierAO" );
  2997     CActiveScheduler::Add( this );
  3206     CActiveScheduler::Add( this );
  2998     }
  3207     }
  2999 
  3208 
  3000 void CThumbnailStoreDiskSpaceNotifierAO::ConstructL()
  3209 void CThumbnailStoreDiskSpaceNotifierAO::ConstructL()
  3001     {   
  3210     {   
  3002     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::ConstructL()");
  3211     TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::ConstructL()");
       
  3212     OstTrace0( TRACE_NORMAL, CTHUMBNAILSTOREDISKSPACENOTIFIERAO_CONSTRUCTL, "CThumbnailStoreDiskSpaceNotifierAO::ConstructL" );
  3003     TInt KMessageSlotCount = 2; // slots for NotifyDiskSpace and NotifyDiskSpaceCancel
  3213     TInt KMessageSlotCount = 2; // slots for NotifyDiskSpace and NotifyDiskSpaceCancel
  3004 
  3214 
  3005     User::LeaveIfError( iFileServerSession.Connect( KMessageSlotCount ) );
  3215     User::LeaveIfError( iFileServerSession.Connect( KMessageSlotCount ) );
  3006     
  3216     
  3007     TVolumeInfo volumeInfo;
  3217     TVolumeInfo volumeInfo;
  3010     if( !ret )
  3220     if( !ret )
  3011         {
  3221         {
  3012         if ( volumeInfo.iFree < iThreshold )
  3222         if ( volumeInfo.iFree < iThreshold )
  3013             {
  3223             {
  3014             TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::ConstructL() FULL");
  3224             TN_DEBUG1( "CThumbnailStoreDiskSpaceNotifierAO::ConstructL() FULL");
       
  3225             OstTrace0( TRACE_NORMAL, DUP1_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_CONSTRUCTL, "CThumbnailStoreDiskSpaceNotifierAO::ConstructL - FULL" );
  3015             iDiskFull = ETrue;
  3226             iDiskFull = ETrue;
  3016             }
  3227             }
  3017         }
  3228         }
  3018     else
  3229     else
  3019         {
  3230         {
  3020         TN_DEBUG2( "CThumbnailStoreDiskSpaceNotifierAO::ConstructL() error %d NOT FULL", ret);
  3231         TN_DEBUG2( "CThumbnailStoreDiskSpaceNotifierAO::ConstructL() error %d NOT FULL", ret);
       
  3232         OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILSTOREDISKSPACENOTIFIERAO_CONSTRUCTL, "CThumbnailStoreDiskSpaceNotifierAO::ConstructL - NOT FULL;ret=%d", ret );
  3021         iDiskFull = EFalse;
  3233         iDiskFull = EFalse;
  3022         User::Leave( ret );
  3234         User::Leave( ret );
  3023         }
  3235         }
  3024 
  3236 
  3025     iObserver.HandleDiskSpaceNotificationL( iDiskFull );
  3237     iObserver.HandleDiskSpaceNotificationL( iDiskFull );
  3028     }
  3240     }
  3029 
  3241 
  3030 void CThumbnailStoreDiskSpaceNotifierAO::StartNotifier()
  3242 void CThumbnailStoreDiskSpaceNotifierAO::StartNotifier()
  3031     {   
  3243     {   
  3032     TN_DEBUG2( "CThumbnailStoreDiskSpaceNotifierAO::StartNotifier() iDrive == %d", iDrive);
  3244     TN_DEBUG2( "CThumbnailStoreDiskSpaceNotifierAO::StartNotifier() iDrive == %d", iDrive);
       
  3245     OstTrace1( TRACE_NORMAL, CTHUMBNAILSTOREDISKSPACENOTIFIERAO_STARTNOTIFIER, "CThumbnailStoreDiskSpaceNotifierAO::StartNotifier;iDrive=%d", iDrive );
  3033     iFileServerSession.NotifyDiskSpace( iThreshold, iDrive, iStatus );
  3246     iFileServerSession.NotifyDiskSpace( iThreshold, iDrive, iStatus );
  3034     
  3247     
  3035     SetActive();
  3248     SetActive();
  3036     }
  3249     }
  3037 
  3250