searcher/searchserver/src/csearchserversubsession.cpp
changeset 10 afe194b6b1cd
parent 1 6f2c1c46032b
child 14 8bd192d47aaa
--- a/searcher/searchserver/src/csearchserversubsession.cpp	Wed Jun 23 19:26:19 2010 +0300
+++ b/searcher/searchserver/src/csearchserversubsession.cpp	Tue Jul 06 15:30:04 2010 +0300
@@ -83,7 +83,7 @@
 // CSearchServerSession::CancelAll()
 void CSearchServerSubSession::CancelAll(const RMessage2& aMessage)
 	{
-	if (iSearchDb->IsOpen())
+	if (iSearchDb && iSearchDb->IsOpen())
 	    {
 	    // Cancel searching 
 	    iSearchDb->CancelAll(aMessage);
@@ -102,6 +102,15 @@
 	TRAP_IGNORE( LOG_PLAYER_RECORD( CLogPlayerRecorder::LogCancelL( reinterpret_cast<TUint>( this ) ) ) );
 	}
 
+void CSearchServerSubSession::OpenSearcherL(const TDesC& aSearchableId, const TDesC& aDefaultField)
+	{
+	delete iSearchDb;
+	iSearchDb = NULL; 
+
+		iSearchDb = CCPixSearch::NewL();
+		iSearchDb->OpenDatabaseL( aSearchableId, aDefaultField );
+
+	}
 void CSearchServerSubSession::OpenDatabaseL(const RMessage2& aMessage)
 	{
 	HBufC* baseAppClass = HBufC::NewLC(aMessage.GetDesLength(0));
@@ -122,7 +131,7 @@
 	}
 	else
 	{
-		iSearchDb->OpenDatabaseL(*baseAppClass, *defaultSearchField);
+		OpenSearcherL( *baseAppClass, *defaultSearchField );
 	}
 	
 	CleanupStack::PopAndDestroy(defaultSearchField);
@@ -134,7 +143,7 @@
 
 void CSearchServerSubSession::SetAnalyzerL(const RMessage2& aMessage)
 	{
-	if (!iSearchDb->IsOpen() && !iIndexDb->IsOpen())
+	if (!(iSearchDb && iSearchDb->IsOpen()) && !iIndexDb->IsOpen())
 		{
 		iSession->PanicClient(aMessage, EDatabaseNotOpen);
 		return;
@@ -144,7 +153,7 @@
 	TPtr analyzerPtr = analyzer->Des();
 	aMessage.ReadL(0, analyzerPtr);
 
-	if (iSearchDb->IsOpen()) {
+	if (iSearchDb && iSearchDb->IsOpen()) {
 		iSearchDb->SetAnalyzerL( *analyzer ); 
 	}
 	if (iIndexDb->IsOpen()) {
@@ -156,13 +165,30 @@
 	aMessage.Complete(KErrNone);	
 	}
 
+void CSearchServerSubSession::SetQueryParserL(const RMessage2& aMessage)
+	{
+	if (!(iSearchDb && iSearchDb->IsOpen()))
+		{
+		iSession->PanicClient(aMessage, EDatabaseNotOpen);
+		return;
+		}
+	
+	TInt queryParser = aMessage.Int0();
+	
+	iSearchDb->SetQueryParserL( queryParser ); 
+	
+	// Complete the request
+	aMessage.Complete(KErrNone);	
+	}
+
+
 void CSearchServerSubSession::SearchL(const RMessage2& aMessage)
 	{
 	OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_SEARCHL_ENTRY );
 	PERFORMANCE_LOG_START("CSearchServerSubSession::SearchL");
 	
 	// Sanity check
-	if (!iSearchDb->IsOpen())
+	if (!(iSearchDb && iSearchDb->IsOpen()))
 		{
 		iSession->PanicClient(aMessage, EDatabaseNotOpen);
 		OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_SEARCHL_EXIT );
@@ -252,7 +278,7 @@
 	PERFORMANCE_LOG_START("CSearchServerSubSession::GetDocumentObjectL");
 	
 	// Sanity check
-	if (!iSearchDb->IsOpen())
+	if ( !iSearchDb || !iSearchDb->IsOpen() )
 		{
 		iSession->PanicClient(aMessage, EDatabaseNotOpen);
 		OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT );