59 cpix_Hits_destroy( iHits ); |
59 cpix_Hits_destroy( iHits ); |
60 } |
60 } |
61 |
61 |
62 delete iBaseAppClass; |
62 delete iBaseAppClass; |
63 delete iDefaultSearchFieldZ; |
63 delete iDefaultSearchFieldZ; |
64 |
64 delete ibatchDocuments; |
65 cpix_Query_destroy(iQuery); |
65 cpix_Query_destroy(iQuery); |
66 cpix_QueryParser_destroy(iQueryParser); |
66 cpix_QueryParser_destroy(iQueryParser); |
67 cpix_Analyzer_destroy(iAnalyzer); |
67 cpix_Analyzer_destroy(iAnalyzer); |
68 cpix_IdxSearcher_releaseDb(iIdxDb); |
68 cpix_IdxSearcher_releaseDb(iIdxDb); |
69 } |
69 } |
206 { |
206 { |
207 User::Leave(KErrDocumentAccessFailed); |
207 User::Leave(KErrDocumentAccessFailed); |
208 } |
208 } |
209 |
209 |
210 iPendingTask = EPendingTaskDocument; |
210 iPendingTask = EPendingTaskDocument; |
211 iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, &iCurrentCpixDocument, (void*)this, &CompletionCallback); |
211 |
|
212 iCurrentCpixDocument = new cpix_Document; |
|
213 iCurrentCpixDocument->ptr_ = NULL; |
|
214 iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, &iCurrentCpixDocument, (void*)this, &CompletionCallback,1); |
212 if ( cpix_Failed(iHits) ) |
215 if ( cpix_Failed(iHits) ) |
213 { |
216 { |
214 SearchServerHelper::LogErrorL(*(iHits->err_)); |
217 SearchServerHelper::LogErrorL(*(iHits->err_)); |
215 cpix_ClearError(iHits); |
218 cpix_ClearError(iHits); |
216 User::Leave(KErrDocumentAccessFailed); |
219 User::Leave(KErrDocumentAccessFailed); |
217 } |
220 } |
218 iAsyncronizer->Start(ECPixTaskTypeGetDocument, aObserver, aMessage); |
221 iAsyncronizer->Start(ECPixTaskTypeGetDocument, aObserver, aMessage); |
219 OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTL_EXIT ); |
222 OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTL_EXIT ); |
220 } |
223 } |
|
224 |
|
225 void CCPixSearch::GetBatchDocumentL(TInt aIndex, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage, TInt aCount) |
|
226 { |
|
227 PERFORMANCE_LOG_START("CCPixSearch::GetBatchDocumentL"); |
|
228 |
|
229 if (iPendingTask != EPendingTaskNone) |
|
230 User::Leave(KErrInUse); |
|
231 |
|
232 if (aIndex<0 || aIndex >= iDocumentCount ) |
|
233 { |
|
234 User::Leave(KErrDocumentAccessFailed); |
|
235 } |
|
236 |
|
237 ibatchDocCount = aCount; |
|
238 ibatchDocuments = STATIC_CAST(cpix_Document**, User::AllocZL(aCount * sizeof(cpix_Document*))); |
|
239 for (int i =0; i< aCount; i++) |
|
240 { |
|
241 ibatchDocuments[i] = new cpix_Document; |
|
242 ibatchDocuments[i]->ptr_ = NULL; |
|
243 } |
|
244 |
|
245 iPendingTask = EPendingTaskDocument; |
|
246 iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, ibatchDocuments, (void*)this, &CompletionCallback, aCount); |
|
247 if ( cpix_Failed(iHits) ) |
|
248 { |
|
249 SearchServerHelper::LogErrorL(*(iHits->err_)); |
|
250 cpix_ClearError(iHits); |
|
251 User::Leave(KErrDocumentAccessFailed); |
|
252 } |
|
253 iAsyncronizer->Start(ECPixTaskTypeGetBatchDocument, aObserver, aMessage); |
|
254 } |
221 |
255 |
222 CSearchDocument* CCPixSearch::GetDocumentCompleteL() |
256 CSearchDocument* CCPixSearch::GetDocumentCompleteL() |
223 { |
257 { |
224 OstTraceFunctionEntry0( CCPIXSEARCH_GETDOCUMENTCOMPLETEL_ENTRY ); |
258 OstTraceFunctionEntry0( CCPIXSEARCH_GETDOCUMENTCOMPLETEL_ENTRY ); |
225 PERFORMANCE_LOG_START("CCPixSearch::GetDocumentCompleteL"); |
259 PERFORMANCE_LOG_START("CCPixSearch::GetDocumentCompleteL"); |
228 iPendingTask = EPendingTaskNone; |
262 iPendingTask = EPendingTaskNone; |
229 |
263 |
230 cpix_Hits_asyncDocResults(iHits, iPendingJobId); |
264 cpix_Hits_asyncDocResults(iHits, iPendingJobId); |
231 SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed); |
265 SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed); |
232 |
266 |
233 return ConvertDocumentL( &iCurrentCpixDocument ); |
267 return ConvertDocumentL( iCurrentCpixDocument ); |
234 #if 0 // TODO XXX TIM |
268 #if 0 // TODO XXX TIM |
235 const wchar_t* documentId = cpix_Document_getFieldValue(&iCurrentCpixDocument, LCPIX_DOCUID_FIELD); |
269 const wchar_t* documentId = cpix_Document_getFieldValue(&iCurrentCpixDocument, LCPIX_DOCUID_FIELD); |
236 SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDatabaseQueryFailed); |
270 SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDatabaseQueryFailed); |
237 |
271 |
238 TPtrC documentIdPtr(KNullDesC); |
272 TPtrC documentIdPtr(KNullDesC); |
292 CleanupStack::Pop(document); |
326 CleanupStack::Pop(document); |
293 |
327 |
294 OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTCOMPLETEL_EXIT ); |
328 OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTCOMPLETEL_EXIT ); |
295 return document; |
329 return document; |
296 #endif // 0 |
330 #endif // 0 |
|
331 } |
|
332 |
|
333 RPointerArray<CSearchDocument> CCPixSearch::GetBatchDocumentCompleteL() |
|
334 { |
|
335 PERFORMANCE_LOG_START("CCPixSearch::GetBatchDocumentCompleteL"); |
|
336 |
|
337 // Request is no more pending |
|
338 iPendingTask = EPendingTaskNone; |
|
339 |
|
340 cpix_Hits_asyncDocResults(iHits, iPendingJobId); |
|
341 SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed); |
|
342 |
|
343 return ConvertBatchDocumentL( ibatchDocuments, ibatchDocCount ); |
297 } |
344 } |
298 |
345 |
299 void CCPixSearch::SetAnalyzerL(const TDesC& aAnalyzer) |
346 void CCPixSearch::SetAnalyzerL(const TDesC& aAnalyzer) |
300 { |
347 { |
301 cpix_QueryParser_destroy( iQueryParser ); |
348 cpix_QueryParser_destroy( iQueryParser ); |