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 |