harvesterplugins/bookmarks/src/bookmarksplugin.cpp
changeset 2 208a4ba3894c
parent 0 ccd0fd43f247
child 5 3bc31ad99ee7
equal deleted inserted replaced
0:ccd0fd43f247 2:208a4ba3894c
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include "bookmarksplugin.h"
    18 #include "bookmarksplugin.h"
    19 
    19 
    20 #include <favouritesitemlist.h>
    20 #include <FavouritesItemList.h>
    21 #include <activefavouritesdbnotifier.h>
    21 #include <ActiveFavouritesDbNotifier.h>
    22 #include <e32base.h> 
    22 #include <e32base.h> 
    23 #include <uri8.h> //For parsing URL names.
    23 #include <uri8.h> //For parsing URL names.
    24 
    24 
    25 #include "harvesterserverlogger.h"
    25 #include "harvesterserverlogger.h"
    26 #include "common.h"
    26 #include "common.h"
    27 #include "csearchdocument.h"
    27 #include "csearchdocument.h"
    28 #include "ccpixindexer.h"
    28 #include "ccpixindexer.h"
       
    29 #include "OstTraceDefinitions.h"
       
    30 #ifdef OST_TRACE_COMPILER_IN_USE
       
    31 #include "bookmarkspluginTraces.h"
       
    32 #endif
       
    33 
    29 
    34 
    30 /** The milliseconds delay between harvesting chunks. */
    35 /** The milliseconds delay between harvesting chunks. */
    31 const TInt KHarvestingDelay = 1000;
    36 const TInt KHarvestingDelay = 1000;
    32 /** Number of bookmarks to process in one active scheduler cycle */
    37 /** Number of bookmarks to process in one active scheduler cycle */
    33 const TInt KBookmarksPerRunL = 1;
    38 const TInt KBookmarksPerRunL = 1;
    97 	}
   102 	}
    98 
   103 
    99 // -----------------------------------------------------------------------------
   104 // -----------------------------------------------------------------------------
   100 void CBookmarksPlugin::StartHarvestingL( const TDesC& /*aMedia*/ )
   105 void CBookmarksPlugin::StartHarvestingL( const TDesC& /*aMedia*/ )
   101     {
   106     {
       
   107     OstTrace0( TRACE_NORMAL, CBOOKMARKSPLUGIN_STARTHARVESTINGL, "StartHarvestingL: resetting database" );
   102     CPIXLOGSTRING("StartHarvestingL: resetting database");
   108     CPIXLOGSTRING("StartHarvestingL: resetting database");
   103     iIndexer->ResetL();//reset any indexes if exist already
   109     iIndexer->ResetL();//reset any indexes if exist already
   104     iCurrentIndex = 0; //Initialize to zero as it is started
   110     iCurrentIndex = 0; //Initialize to zero as it is started
   105     iFavouritesDb.Count( iCurrentCount );
   111     iFavouritesDb.Count( iCurrentCount );
       
   112     OstTrace1( TRACE_NORMAL, DUP1_CBOOKMARKSPLUGIN_STARTHARVESTINGL, "StartHarvestingL::Current count=%d", iCurrentCount );
   106     CPIXLOGSTRING2("StartHarvestingL::Current count = %d.", iCurrentCount);
   113     CPIXLOGSTRING2("StartHarvestingL::Current count = %d.", iCurrentCount);
   107     //Get all the UID list from current database
   114     //Get all the UID list from current database
   108     //GetUids() appends items to the list. So, reset it first.
   115     //GetUids() appends items to the list. So, reset it first.
   109     //From the documentation of GetUids(): "Existing items remain (new ones appended)"
   116     //From the documentation of GetUids(): "Existing items remain (new ones appended)"
   110     iArrUidsCurrentBookmarkList->Reset();
   117     iArrUidsCurrentBookmarkList->Reset();
   126         // Exit the loop if no more bookmarks
   133         // Exit the loop if no more bookmarks
   127         if (iCurrentIndex >= iCurrentCount)
   134         if (iCurrentIndex >= iCurrentCount)
   128             break;
   135             break;
   129         
   136         
   130         //Create index item
   137         //Create index item
       
   138         OstTraceExt2( TRACE_NORMAL, CBOOKMARKSPLUGIN_DELAYEDCALLBACKL, "CBookmarksPlugin::DelayedCallbackL;Harvesting id=%d;BookmarkUid=%d", iCurrentIndex, iArrUidsCurrentBookmarkList->At(iCurrentIndex) );
   131         CPIXLOGSTRING3("CBookmarksPlugin::DelayedCallbackL(): Harvesting id=%d, BookmarkUid = %d.", iCurrentIndex, iArrUidsCurrentBookmarkList->At(iCurrentIndex) );
   139         CPIXLOGSTRING3("CBookmarksPlugin::DelayedCallbackL(): Harvesting id=%d, BookmarkUid = %d.", iCurrentIndex, iArrUidsCurrentBookmarkList->At(iCurrentIndex) );
   132         //Create new bookmark document and add
   140         //Create new bookmark document and add
   133         CreateBookmarksIndexItemL(iArrUidsCurrentBookmarkList->At(iCurrentIndex),ECPixAddAction);
   141         CreateBookmarksIndexItemL(iArrUidsCurrentBookmarkList->At(iCurrentIndex),ECPixAddAction);
   134         iCurrentIndex++;
   142         iCurrentIndex++;
   135         }
   143         }
   136 
   144 
   137     if( iAsynchronizer && (iCurrentIndex < iCurrentCount) )
   145     if( iAsynchronizer && (iCurrentIndex < iCurrentCount) )
   138         {
   146         {
   139         // Launch the next RunL
   147         // Launch the next RunL
       
   148         OstTrace1( TRACE_NORMAL, DUP1_CBOOKMARKSPLUGIN_DELAYEDCALLBACKL, "CBookmarksPlugin::DelayedCallbackL;scheduling item count=%d", iCurrentIndex );
   140         CPIXLOGSTRING2("CBookmarksPlugin::DelayedCallbackL(): scheduling item count: %d.", iCurrentIndex );
   149         CPIXLOGSTRING2("CBookmarksPlugin::DelayedCallbackL(): scheduling item count: %d.", iCurrentIndex );
   141         iAsynchronizer->Start(0, this, KHarvestingDelay);
   150         iAsynchronizer->Start(0, this, KHarvestingDelay);
       
   151         OstTrace1( TRACE_NORMAL, DUP2_CBOOKMARKSPLUGIN_DELAYEDCALLBACKL, "CBookmarksPlugin::DelayedCallbackL;DONE scheduling item count=%d", iCurrentIndex );
   142         CPIXLOGSTRING2("CBookmarksPlugin::DelayedCallbackL(): DONE scheduling item count: %d.", iCurrentIndex );
   152         CPIXLOGSTRING2("CBookmarksPlugin::DelayedCallbackL(): DONE scheduling item count: %d.", iCurrentIndex );
   143         }
   153         }
   144     else
   154     else
   145         {
   155         {
   146         // Harvesting was successfully completed
   156         // Harvesting was successfully completed
   147         Flush(*iIndexer);
   157         Flush(*iIndexer);
   148 #ifdef __PERFORMANCE_DATA
   158 #ifdef __PERFORMANCE_DATA
   149     UpdatePerformaceDataL();
   159     UpdatePerformaceDataL();
   150 #endif
   160 #endif
   151         iObserver->HarvestingCompleted(this, iIndexer->GetBaseAppClass(), KErrNone);
   161         iObserver->HarvestingCompleted(this, iIndexer->GetBaseAppClass(), KErrNone);
       
   162         OstTrace0( TRACE_NORMAL, DUP3_CBOOKMARKSPLUGIN_DELAYEDCALLBACKL, "CBookmarksPlugin::DelayedCallbackL(): Harvesting complete" );
   152         CPIXLOGSTRING("CBookmarksPlugin::DelayedCallbackL(): Harvesting complete");
   163         CPIXLOGSTRING("CBookmarksPlugin::DelayedCallbackL(): Harvesting complete");
   153         }
   164         }
   154 	}
   165 	}
   155 
   166 
   156 // -----------------------------------------------------------------------------
   167 // -----------------------------------------------------------------------------
   173  * TPtrC domain;
   184  * TPtrC domain;
   174  * GetDomainNameLC( myUrl, domain );
   185  * GetDomainNameLC( myUrl, domain );
   175  */
   186  */
   176 void GetDomainNameL( const TDesC& aUrl, TPtrC& aDomain )
   187 void GetDomainNameL( const TDesC& aUrl, TPtrC& aDomain )
   177     {
   188     {
       
   189     OstTraceExt1( TRACE_NORMAL, CBOOKMARKSPLUGIN_GETDOMAINNAMEL, "CBookmarksPlugin::GetDomainNameL();URL=%S", aUrl );
   178     CPIXLOGSTRING2("CBookmarksPlugin::GetDomainNameL(): URL = %S", &aUrl );
   190     CPIXLOGSTRING2("CBookmarksPlugin::GetDomainNameL(): URL = %S", &aUrl );
   179     //Convert to 8-bit descriptors.
   191     //Convert to 8-bit descriptors.
   180     HBufC8* url8 = HBufC8::NewLC( aUrl.Length() );
   192     HBufC8* url8 = HBufC8::NewLC( aUrl.Length() );
   181     url8->Des().Copy( aUrl );
   193     url8->Des().Copy( aUrl );
   182     
   194     
   229         domain16->Des().Copy( host );
   241         domain16->Des().Copy( host );
   230         }
   242         }
   231     aDomain.Set( *domain16 );
   243     aDomain.Set( *domain16 );
   232     CleanupStack::Pop( domain16 );
   244     CleanupStack::Pop( domain16 );
   233     CleanupStack::PopAndDestroy( url8 );
   245     CleanupStack::PopAndDestroy( url8 );
       
   246     OstTraceExt1( TRACE_NORMAL, DUP1_CBOOKMARKSPLUGIN_GETDOMAINNAMEL, "CBookmarksPlugin::GetDomainNameL();domain=%S", aDomain );
   234     CPIXLOGSTRING2("CBookmarksPlugin::GetDomainNameL(): domain = %S", &aDomain );
   247     CPIXLOGSTRING2("CBookmarksPlugin::GetDomainNameL(): domain = %S", &aDomain );
   235     }
   248     }
   236 
   249 
   237 // -----------------------------------------------------------------------------
   250 // -----------------------------------------------------------------------------
   238 void CBookmarksPlugin::DoIndexingL(CFavouritesItem*& aItem, const TDesC& aDocidStr, TCPixActionType& aActionType)
   251 void CBookmarksPlugin::DoIndexingL(CFavouritesItem*& aItem, const TDesC& aDocidStr, TCPixActionType& aActionType)
   239     {
   252     {
       
   253     OstTraceFunctionEntry0( CBOOKMARKSPLUGIN_DOINDEXINGL_ENTRY );
   240     CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Entering");
   254     CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Entering");
   241     if(aItem->Type() == CFavouritesItem::EItem ) //Store only Items not folders
   255     if(aItem->Type() == CFavouritesItem::EItem ) //Store only Items not folders
   242         {
   256         {
       
   257         OstTraceExt2( TRACE_NORMAL, CBOOKMARKSPLUGIN_DOINDEXINGL, "CBookmarksPlugin::DoIndexingL();url=%S;name=%S", (aItem->Url()), (aItem->Name()) );
   243         CPIXLOGSTRING3("CBookmarksPlugin::DoIndexingL(): url = %S ,name = %S", &(aItem->Url()), &(aItem->Name()));
   258         CPIXLOGSTRING3("CBookmarksPlugin::DoIndexingL(): url = %S ,name = %S", &(aItem->Url()), &(aItem->Name()));
   244         CSearchDocument* index_item = CSearchDocument::NewLC(aDocidStr, _L(BOOKMARKAPPCLASS));
   259         CSearchDocument* index_item = CSearchDocument::NewLC(aDocidStr, _L(BOOKMARKAPPCLASS));
   245         index_item->AddFieldL(KMimeTypeField, KMimeTypeBookmark, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
   260         index_item->AddFieldL(KMimeTypeField, KMimeTypeBookmark, CDocumentField::EStoreYes | CDocumentField::EIndexUnTokenized);
   246         if(aItem->Name() != KNullDesC)
   261         if(aItem->Name() != KNullDesC)
   247             index_item->AddFieldL(KBookMarkFieldName,aItem->Name(),CDocumentField::EStoreYes | CDocumentField::EIndexTokenized);
   262             index_item->AddFieldL(KBookMarkFieldName,aItem->Name(),CDocumentField::EStoreYes | CDocumentField::EIndexTokenized);
   250         if(aItem->Url() != KNullDesC)
   265         if(aItem->Url() != KNullDesC)
   251             {
   266             {
   252             index_item->AddFieldL(KBookMarkUrl, aItem->Url(), CDocumentField::EStoreYes | CDocumentField::EIndexTokenized);
   267             index_item->AddFieldL(KBookMarkUrl, aItem->Url(), CDocumentField::EStoreYes | CDocumentField::EIndexTokenized);
   253             GetDomainNameL( aItem->Url(), domain );
   268             GetDomainNameL( aItem->Url(), domain );
   254             index_item->AddFieldL(KBookMarkDomain, domain , CDocumentField::EStoreYes | CDocumentField::EIndexTokenized);
   269             index_item->AddFieldL(KBookMarkDomain, domain , CDocumentField::EStoreYes | CDocumentField::EIndexTokenized);
       
   270             OstTraceExt1( TRACE_NORMAL, DUP1_CBOOKMARKSPLUGIN_DOINDEXINGL, "CBookmarksPlugin::DoIndexingL();domain=%S", domain );
   255             CPIXLOGSTRING2("CBookmarksPlugin::DoIndexingL(): domain = %S", &domain );
   271             CPIXLOGSTRING2("CBookmarksPlugin::DoIndexingL(): domain = %S", &domain );
   256             }
   272             }
   257         //Add Excerpt as it is must have field. What should be excerpt in bookmarks ?
   273         //Add Excerpt as it is must have field. What should be excerpt in bookmarks ?
   258         HBufC* excerpt = HBufC::NewLC(aItem->Url().Length() + aItem->Name().Length() + 1);
   274         HBufC* excerpt = HBufC::NewLC(aItem->Url().Length() + aItem->Name().Length() + 1);
   259         TPtr ptr = excerpt->Des();
   275         TPtr ptr = excerpt->Des();
   265 
   281 
   266         // Send for indexing
   282         // Send for indexing
   267         TRAPD(err, iIndexer->AddL(*index_item));
   283         TRAPD(err, iIndexer->AddL(*index_item));
   268         if (err == KErrNone)
   284         if (err == KErrNone)
   269             {
   285             {
       
   286                 OstTrace0( TRACE_NORMAL, DUP2_CBOOKMARKSPLUGIN_DOINDEXINGL, "CBookmarksPlugin::DoIndexingL(): Added." );
   270                 CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Added.");
   287                 CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Added.");
   271                 }
   288                 }
   272             else
   289             else
   273                 {
   290                 {
       
   291                 OstTrace1( TRACE_NORMAL, DUP3_CBOOKMARKSPLUGIN_DOINDEXINGL, "CBookmarksPlugin::DoIndexingL();Error %d in adding", err );
   274                 CPIXLOGSTRING2("CBookmarksPlugin::DoIndexingL(): Error %d in adding.", err);
   292                 CPIXLOGSTRING2("CBookmarksPlugin::DoIndexingL(): Error %d in adding.", err);
   275                 }           
   293                 }           
       
   294         OstTrace0( TRACE_NORMAL, DUP4_CBOOKMARKSPLUGIN_DOINDEXINGL, "CBookmarksPlugin::DoIndexingL(): Logic complete" );
   276         CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Logic complete");
   295         CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Logic complete");
   277         CleanupStack::PopAndDestroy( index_item );
   296         CleanupStack::PopAndDestroy( index_item );
       
   297         OstTrace0( TRACE_NORMAL, DUP5_CBOOKMARKSPLUGIN_DOINDEXINGL, "CBookmarksPlugin::DoIndexingL(): Pop complete complete" );
   278         CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Pop complete complete");
   298         CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Pop complete complete");
   279         }
   299         }
   280     CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Returning");
   300     CPIXLOGSTRING("CBookmarksPlugin::DoIndexingL(): Returning");
       
   301     OstTraceFunctionExit0( CBOOKMARKSPLUGIN_DOINDEXINGL_EXIT );
   281     }
   302     }
   282 
   303 
   283 // -----------------------------------------------------------------------------
   304 // -----------------------------------------------------------------------------
   284 void CBookmarksPlugin::CreateBookmarksIndexItemL(TInt aBookMarkUid, TCPixActionType aActionType)
   305 void CBookmarksPlugin::CreateBookmarksIndexItemL(TInt aBookMarkUid, TCPixActionType aActionType)
   285     {
   306     {
   286     //@sai: CTC: Will never be null in normal usecase. Needs to be present for UTs.
   307     //@sai: CTC: Will never be null in normal usecase. Needs to be present for UTs.
   287     if( !iIndexer )
   308     if( !iIndexer )
   288         return;
   309         return;
       
   310     OstTrace1( TRACE_NORMAL, CBOOKMARKSPLUGIN_CREATEBOOKMARKSINDEXITEML, "CBookmarksPlugin::CreateBookmarkIndexItemL();aBookMarkUid=%d", aBookMarkUid );
   289     CPIXLOGSTRING2("CBookmarksPlugin::CreateBookmarkIndexItemL(): aBookMarkUid = %d ", aBookMarkUid );
   311     CPIXLOGSTRING2("CBookmarksPlugin::CreateBookmarkIndexItemL(): aBookMarkUid = %d ", aBookMarkUid );
   290     // creating CSearchDocument object with unique ID for this application
   312     // creating CSearchDocument object with unique ID for this application
   291     TBuf<20> docid_str;
   313     TBuf<20> docid_str;
   292     docid_str.AppendNum(aBookMarkUid);
   314     docid_str.AppendNum(aBookMarkUid);
   293     //Add or update actions.
   315     //Add or update actions.
   294     CFavouritesItem* item = CFavouritesItem::NewLC();
   316     CFavouritesItem* item = CFavouritesItem::NewLC();
   295     TInt err = iFavouritesDb.Get(aBookMarkUid,*item);
   317     TInt err = iFavouritesDb.Get(aBookMarkUid,*item);
       
   318     OstTrace1( TRACE_NORMAL, DUP1_CBOOKMARKSPLUGIN_CREATEBOOKMARKSINDEXITEML, "CBookmarksPlugin::CreateBookmarkIndexItemL();DB Get error=%d", err );
   296     CPIXLOGSTRING2("CBookmarksPlugin::CreateBookmarkIndexItemL(): DB Get error = %d ", err );
   319     CPIXLOGSTRING2("CBookmarksPlugin::CreateBookmarkIndexItemL(): DB Get error = %d ", err );
   297     //@sai: CTC: did not ever get 'false' for this check. Since this is a private function,
   320     //@sai: CTC: did not ever get 'false' for this check. Since this is a private function,
   298     // we cannot UT this with an invalid bookmarkUid.
   321     // we cannot UT this with an invalid bookmarkUid.
   299     if(KErrNone != err)
   322     if(KErrNone != err)
   300         {
   323         {
   301         CleanupStack::PopAndDestroy(item);
   324         CleanupStack::PopAndDestroy(item);
   302         return;
   325         return;
   303         }
   326         }
       
   327     OstTrace1( TRACE_NORMAL, DUP2_CBOOKMARKSPLUGIN_CREATEBOOKMARKSINDEXITEML, "CBookmarksPlugin::CreateBookmarkIndexItemL();item->Type()=%d", item->Type() );
   304     CPIXLOGSTRING2("CBookmarksPlugin::CreateBookmarkIndexItemL(): item->Type() = %d ", item->Type() );
   328     CPIXLOGSTRING2("CBookmarksPlugin::CreateBookmarkIndexItemL(): item->Type() = %d ", item->Type() );
   305     DoIndexingL(item, docid_str, aActionType); //add to / update index
   329     DoIndexingL(item, docid_str, aActionType); //add to / update index
   306     CleanupStack::PopAndDestroy(item);
   330     CleanupStack::PopAndDestroy(item);
   307     }
   331     }
   308 
   332 
   315     //@sai:CTC: the DB does not seem to be sending any other event.
   339     //@sai:CTC: the DB does not seem to be sending any other event.
   316     if( RDbNotifier::ECommit == aEvent )
   340     if( RDbNotifier::ECommit == aEvent )
   317         {
   341         {
   318         if( iAsynchronizer->CallbackPending() )
   342         if( iAsynchronizer->CallbackPending() )
   319             {
   343             {
       
   344             OstTrace0( TRACE_NORMAL, CBOOKMARKSPLUGIN_HANDLEFAVOURITESDBEVENTL, "HandleFavouritesDbEventL: Cancelling callback" );
   320             CPIXLOGSTRING("HandleFavouritesDbEventL: Cancelling callback");
   345             CPIXLOGSTRING("HandleFavouritesDbEventL: Cancelling callback");
   321             iAsynchronizer->CancelCallback(); //first cancel any ongoing harvesting.
   346             iAsynchronizer->CancelCallback(); //first cancel any ongoing harvesting.
   322             }
   347             }
       
   348         OstTrace0( TRACE_NORMAL, DUP1_CBOOKMARKSPLUGIN_HANDLEFAVOURITESDBEVENTL, "HandleFavouritesDbEventL: calling StartHarvestingL" );
   323         CPIXLOGSTRING("HandleFavouritesDbEventL: calling StartHarvestingL");
   349         CPIXLOGSTRING("HandleFavouritesDbEventL: calling StartHarvestingL");
   324         StartHarvestingL( KNullDesC );
   350         StartHarvestingL( KNullDesC );
   325         }
   351         }
   326     }
   352     }
   327 	
   353