imservices/ossprotocoladaptation/src/search/csearchrequest.cpp
changeset 46 860cd8a5168c
parent 35 085f765766a0
--- a/imservices/ossprotocoladaptation/src/search/csearchrequest.cpp	Fri May 28 18:27:27 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,417 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Search implementation
-*
-*/
-
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <ximpprotocolconnectionhost.h>
-#include <ximpobjectfactory.h>
-#include <searchelement.h>
-#include <searchobjectfactory.h>
-#include <ximpobjectcollection.h>
-#include <searchinfo.h>
-#include <searchobjectfactory.h>
-#include <protocolsearchdatahost.h>
-#include <protocolsearchfeaturedatahost.h>
-#include <ximpidentity.h>
-
-#include "stringutils.h"
-
-#include "msg_enums.h"
-#include "waittimer.h"
-#include "msgliterals.h"
-#include "ossprotocoladaptutils.h"
-#include "csearchrequest.h"
-#include "mossprotocolconnectionmanager.h"
-#include "ossprotocolpluginlogger.h"
-
-#include "cossprotocolconnectionmanager.h"
-
-
-// search  strings  used 
-const char* FirstName ="first_name";
-const char* LastName ="last_name";
-const char* UserId ="user_id";
-const char* Jid ="jid";
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CSearchrequest::CSearchrequest
-// ---------------------------------------------------------------------------
-//
-CSearchrequest::CSearchrequest(	MOSSProtocolConnectionManager& aConnMan,
-									TXIMPRequestId aRequestId ) :
-    CActive( EPriorityNormal ),
-    iRequestId( aRequestId ),
-    iConnMan( aConnMan )
-    {
-    LOGGER ( TXT("::CSearchrequest Start") );
-    CActiveScheduler::Add( this );
-    
-    LOGGER ( TXT("::CSearchrequest End") );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CSearchrequest::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CSearchrequest::ConstructL()
-    {
-    LOGGER ( TXT("CSearchrequest::ConstructL Start-End") );
-    
-	iSearchId=NULL;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CSearchrequest::NewLC
-// ---------------------------------------------------------------------------
-//
-CSearchrequest* CSearchrequest::NewLC(
-    MOSSProtocolConnectionManager& aConnMan,
-    TXIMPRequestId aRequestId )
-    {
-    LOGGER ( TXT("CSearchrequest::NewLC Start") );
-    
-     CSearchrequest* self = new( ELeave ) 
-    			CSearchrequest( aConnMan, aRequestId );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    
-    LOGGER ( TXT("CSearchrequest::NewLC End") );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CSearchrequest::~CSearchrequest
-// ---------------------------------------------------------------------------
-//
-CSearchrequest::~CSearchrequest()
-    {
-    LOGGER ( TXT("::~CSearchrequest Start") );
-    delete iSearchId;
-    iSearchId=NULL;
-    
-	CActive::Cancel();
-    
-    LOGGER ( TXT("::~CSearchrequest End") );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CSearchrequest::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void CSearchrequest::DoCancel()
-    {
-    LOGGER ( TXT("CSearchrequest::DoCancel Start") );
-    LOGGER ( TXT("CSearchrequest::DoCancel End") );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CSearchrequest::RunL()
-// ---------------------------------------------------------------------------
-//
-void CSearchrequest::RunL()
-	{
-	LOGGER ( TXT("CSearchrequest::RunL Start") );
-	User::LeaveIfError ( iStatus.Int() );
-
-	int len = MAX_SIZE_DATA;
-	char* pResponse = NULL, *pOrigResponse = NULL;;
-	char* key = NULL; 
-
-	MXIMPObjectFactory& objFact = iConnMan.HandleToHost().ObjectFactory();
-	MSearchObjectFactory& searchObjFact = iConnMan.GetSearchHost().SearchObjectFactory();
-	MXIMPIdentity* identity = objFact.NewIdentityLC();
-	MXIMPObjectCollection* fieldlist = objFact.NewObjectCollectionLC();
-
-  	TInt datacount = iConnMan.DataHandler().SearchDataCount();
- 	
- 	while( datacount )
-		{
-		LOGGER ( TXT("CONTACT NO : %d"), datacount );	
-		pOrigResponse =pResponse = iConnMan.DataHandler().ResponseL ( 5 );
-		CleanupStack::PushL(pOrigResponse) ;
-		MSearchInfo* searchInfo = searchObjFact.NewSearchInfoLC();
-		pResponse += sizeof ( message_hdr_resp );
-		len = strlen(pResponse) + 1;
-		while( !( *(pResponse) == '\0' && *(pResponse + 1) == '\0' ))
-			{
-			len = strlen(pResponse) + 1;
-			key = ( char* ) User::AllocLC(len);
-			strcpy(key,pResponse);
-			pResponse += len;
-			len = strlen(pResponse) + 1;
-			if( strcmp(key,FirstName) == 0)
-				{
-				LOGGER ( TXT("FIRSTNAME :") );
-			    ParseAndSetL(pResponse,len,*searchInfo, EFirstName);
-				}
-			else if( strcmp(key,LastName) == 0 )
-				{
-				LOGGER ( TXT("LASTNAME :"));
-				ParseAndSetL(pResponse,len,*searchInfo, ELastName);
-				}
-			else if( strcmp(key,Jid) == 0 )
-				{
-				LOGGER ( TXT("JID :") );
-				ParseAndSetL(pResponse,len,*searchInfo, EEmailAddress);
-				}
-			pResponse += len;
-			CleanupStack::PopAndDestroy ();// key			
-			}
-		fieldlist->AddObjectL ( searchInfo );	
-		CleanupStack::Pop();//searchInfo
-		CleanupStack::PopAndDestroy(pOrigResponse) ;//pOrigResponse	
-		datacount = iConnMan.DataHandler().SearchDataCount();
-		}
-	iConnMan.DataHandler().ResponseL ( 5 ); // this removes the operation from the array
-	identity->SetIdentityL(*iSearchId );
-	iConnMan.GetSearchHost().SearchFeatureDataAccess().HandleSearchResultsL ( identity,fieldlist );
-	iConnMan.HandleToHost().HandleRequestCompleted ( iRequestId, KErrNone );
-	CleanupStack::Pop ( 2 );//identity,fieldlist
-	delete this;
-
-	LOGGER ( TXT("CSearchrequest::RunL End") );
-	}
-
-// ---------------------------------------------------------------------------
-// CSearchrequest::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CSearchrequest::RunError( TInt  aError )
-    {
-    LOGGER ( TXT("CSearchrequest::RunError : %d  Start"), aError );
-    
-    iConnMan.HandleToHost().HandleRequestCompleted( iRequestId, aError );
-    TRAP_IGNORE(iConnMan.DataHandler().ResponseL ( 5 ));	 // this removes the operation from the array
-    delete this;
-	LOGGER ( TXT("CSearchrequest::RunError End") );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CSearchrequest::SearchL
-// ---------------------------------------------------------------------------
-//
-void CSearchrequest::SearchL( const MXIMPIdentity& aSearchId,
-							  const RPointerArray< MSearchElement >& aObjs,
-							  TInt  /*aSearchLimit*/)
-	{
-    LOGGER ( TXT("CSearchrequest::SearchL Start") );
-    char *smsg = NULL;
-	char *tmpmsg = NULL;
-	message_hdr_req msgHdr = {0,};
-	int userLen = 0;
-	int totalLen = 0;
-	smsg = ( char* ) User::AllocLC(MAX_MSG_SIZE);
-	memset ( smsg, '\0', MAX_MSG_SIZE );
-	msgHdr.message_type = ESearch;
-	memcpy ( smsg, &msgHdr, sizeof ( message_hdr_req ) );
-	
-	HBufC* keyStr = NULL;//HBufC::NewL( 1024 );
-	
-	CSearchKeyStore& keyStore = iConnMan.GetSearchKeyStore();
-	
-	totalLen += sizeof( message_hdr_req );
-
-	TInt elementCount=aObjs.Count();	
-	
-	for (TInt i=0; i< elementCount; ++i)
-		{
-		const MSearchElement* searchElement = aObjs[i];
-		
-			switch( searchElement->GetSearchKey() )
-			{
-			case EUserFirstName:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EUserFirstName );
-				
-				break;	
-				}
-	            
-			case EUser:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EUser );
-				
-				break;	
-				}
-	            
-			case EUserLastName:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EUserLastName );
-				
-				break;	
-				}
-				
-			case EUserMiddleName:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EUserMiddleName );
-				
-				break;	
-				}
-				
-			case EUserFullName:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EUserFullName );
-				
-				break;	
-				}
-				
-			case EUserCountry:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EUserCountry );
-				
-				break;	
-				}
-				
-			case EUserCity:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EUserCity );
-				
-				break;	
-				}
-				
-			case EBirthday:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EBirthday );
-				
-				break;	
-				}
-				
-			case EState:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EState );
-				
-				break;	
-				}
-				
-			case EUserEmailAddress:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EUserEmailAddress );
-				
-				break;	
-				}
-				
-			case EUserNickName:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EUserNickName );
-				
-				break;	
-				}
-				
-			case EOrganisation:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EOrganisation );
-				
-				break;	
-				}
-				
-			case EOrganisationUnit:
-				{
-				keyStr = keyStore.GetLabelFromEnumL( EOrganisationUnit );
-				
-				break;	
-				}
-	            
-			case  EReadLabel: 
-				{
-				//If key is not supported(case of not localized string)
-				keyStr = searchElement->GetSearchLabel().Identity().AllocL();
-				
-				break;	
-				}
-			default:
-				{
-				//If any other case just continue with next one
-				continue;					
-				}
-			}	
-		
-		if ( NULL == keyStr )
-			{
-			continue;	
-			}
-		//Add key
-		CleanupStack::PushL( keyStr );
-		
-		charFormatData tmpmsgData = OssProtocolAdapUtils::ConvertTUint16ToCharLC( *keyStr );
-	    tmpmsg = tmpmsgData.data;
-	    userLen = tmpmsgData.dataSize;
-			 
-		 if ( totalLen + userLen > MAX_MSG_SIZE ) 
-		    	{
-				User::Leave(KErrArgument);		
-		    	}
-
-		memcpy ( smsg + totalLen, tmpmsg, userLen );
-
-    	totalLen += userLen;
-		
-		//Add value
-		
-			
-		
-		charFormatData tmpmsgDataValue = OssProtocolAdapUtils::ConvertTUint16ToCharLC( 
-					searchElement->GetSearchId().Identity() );
-					
-	    tmpmsg = tmpmsgDataValue.data;
-	    userLen = tmpmsgDataValue.dataSize;
-			 
-		 if ( totalLen + userLen > MAX_MSG_SIZE ) 
-		    	{
-				User::Leave(KErrArgument);		
-		    	}
-
-		memcpy ( smsg + totalLen, tmpmsg, userLen );
-
-    	totalLen += userLen;
-    	
-    	CleanupStack::PopAndDestroy ( 3 );//For keyStr, tmpmsgData, tmpmsgDataValue
-    	
-		} // end  : for loop
-	iSendId = iConnMan.DataHandler().SendDataL ( iStatus, smsg, totalLen++ );
-
-	delete iSearchId;	
-	iSearchId=NULL;
-    iSearchId=aSearchId.Identity().AllocL();
-	// signal the scheduler
-	SetActive();
-	CleanupStack::PopAndDestroy ( 1 );//smsg
-	LOGGER ( TXT("CSearchrequest::SearchL End") );
-		
-	}
-	
-// ---------------------------------------------------------------------------
-// CSearchrequest::SearchUtil
-// ---------------------------------------------------------------------------
-//
-void CSearchrequest::ParseAndSetL(char* aResponse, TInt /*alen*/, MSearchInfo& aSearchInfo, TInfoType aKeytype) 
-	{
-    char* keyvalue =  aResponse;
-	HBufC16* key_value = OssProtocolAdapUtils::ConvertCharToTUint16LC( keyvalue );
-	aSearchInfo.SetFieldInfoL(*key_value,aKeytype);
-	CleanupStack::PopAndDestroy( key_value );
-	}
-	
-// End of file
-