uiservicetab/vimpststorage/src/cvimpststoragevpbkserverstore.cpp
changeset 0 5e5d6b214f4f
child 9 9fdee5e1da30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpststorage/src/cvimpststoragevpbkserverstore.cpp	Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,539 @@
+/*
+* 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:  Class that provides handling of vpbk server store
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "cvimpststoragevpbkserverstore.h"
+
+#include "cvimpststoragevpbkstorehandler.h"
+
+#include <MVPbkContactView.h>
+#include <CVPbkContactIdConverter.h>
+#include "vimpstdebugtrace.h" 
+#include "tvimpstconsts.h"
+#include "mvimpststorageserviceview.h"
+#include <CVPbkContactLinkArray.h>
+#include <MVPbkContactLink.h>
+#include "cvimpststoragecontact.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::
+//      CVIMPSTStorageVPbkServerStore
+// ---------------------------------------------------------------------------
+//
+CVIMPSTStorageVPbkServerStore:: CVIMPSTStorageVPbkServerStore( MVIMPSTStorageServiceCacheWriter& aServiceCacheWriter ):
+    CActive( CActive::EPriorityIdle ),
+    iServiceCacheWriter( aServiceCacheWriter ),
+    iFetchStep( EFetchingUnknown )
+    { 
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::CVIMPSTStorageVPbkServerStore()" )); 
+    CActiveScheduler::Add( this );
+    }
+
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVIMPSTStorageVPbkServerStore::ConstructL( const TDesC& aContactDb, const TDesC& aServiceName)
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::ConstructL() begin" ));
+    iVPbkStoreHandler = CVIMPSTStorageVPbkStoreHandler::NewL( aContactDb,aServiceName, *this, EFalse );
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::ConstructL() end"));
+    }
+
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::NewL
+// ---------------------------------------------------------------------------
+//
+CVIMPSTStorageVPbkServerStore* 
+    CVIMPSTStorageVPbkServerStore::NewL( const TDesC& aContactDb,
+    									 const TDesC& aServiceName,
+    									MVIMPSTStorageServiceCacheWriter& aServiceCacheWriter )
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::NewL() begin" ));
+    CVIMPSTStorageVPbkServerStore* self = NewLC( aContactDb, 
+    											 aServiceName, 
+    											 aServiceCacheWriter );
+    CleanupStack::Pop( self );
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::NewL() end" ));
+    return self;
+    
+    }
+
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::NewLC
+// ---------------------------------------------------------------------------
+//
+CVIMPSTStorageVPbkServerStore* 
+    CVIMPSTStorageVPbkServerStore::NewLC(const TDesC& aContactDb,
+    									const TDesC& aServiceName,
+    									MVIMPSTStorageServiceCacheWriter& aServiceCacheWriter )
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::NewLC() begin" ));
+    CVIMPSTStorageVPbkServerStore* self =
+        new (ELeave) CVIMPSTStorageVPbkServerStore(aServiceCacheWriter);
+    CleanupStack::PushL( self );
+    self->ConstructL( aContactDb,aServiceName );
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::NewLC() end" ));
+    return self;    
+    }
+
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::
+//      ~CVIMPSTStorageVPbkServerStore
+// ---------------------------------------------------------------------------
+//
+CVIMPSTStorageVPbkServerStore::~CVIMPSTStorageVPbkServerStore()
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::~CVIMPSTStorageVPbkServerStore() begin"));
+    iRetrivedXSPIdArray.ResetAndDestroy();
+    TRAP_IGNORE( ResetAndDestroyLocalArrayL() );
+    delete iVPbkStoreHandler;
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::~CVIMPSTStorageVPbkServerStore() end"));
+    }
+
+ // ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::ResetAndDestroyLocalArrayL
+// ---------------------------------------------------------------------------
+//
+void CVIMPSTStorageVPbkServerStore::ResetAndDestroyLocalArrayL()
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::ResetAndDestroyLocalArrayL() begin") );
+    TInt count = iFetchContactsToBeAdded.Count();
+   	while( count )
+	   	{
+	   	TVIMPSTContactInfo contactInf = iFetchContactsToBeAdded[ count-1 ];
+	   	iFetchContactsToBeAdded.Remove( count-1 );
+		delete contactInf.iUserId;
+		contactInf.iUserId = NULL;	
+		delete contactInf.iDisplayName;
+		contactInf.iDisplayName = NULL;				         
+         // not exist need to add 
+        iFetchContactsToBeAdded.Compress();	
+        count = iFetchContactsToBeAdded.Count();
+	   	}
+	iFetchContactsToBeAdded.Reset();
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::ResetAndDestroyLocalArrayL() end") );
+    }
+// ----------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::LocalStore
+// ----------------------------------------------------------
+//
+TBool CVIMPSTStorageVPbkServerStore::LocalStore() const 
+	{
+	TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::LocalStore Function begin") );
+	TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::LocalStore Function End") );
+	return EFalse;	
+	}
+
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL
+// ---------------------------------------------------------------------------
+//
+void CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL(TVIMPSTVPbkStoreEvent aVPbkStoreEvent) 
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL() begin") );
+    switch( aVPbkStoreEvent.iEventType )
+        {
+        case EVPbkContactReadCompleted:
+            {
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL() EVPbkContactReadCompleted started") );
+            iServiceCacheWriter.NotifyServiceViewL(TVIMPSTEnums::EStorageContactReadComplete);
+            if( iFetchStep == EFetchingCalled )
+                {
+                TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL() EVPbkContactReadCompleted fetcing in progress ") );
+                IssueRequest();		
+                }
+            TRACE( T_LIT("iFetchStep set to state EContactReadComplete") );
+            iFetchStep = EContactReadComplete;
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL completed")  );
+            break;
+            }
+        case EVPbkContactReading:
+            {
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactReading started") );
+             // a contact entry has been created in virtual database store
+            // create the cache contact
+            // fetched one by one contact from cdb file
+            // Add to storage cache
+            
+            iServiceCacheWriter.AddContactToCacheL(*aVPbkStoreEvent.iContactLink , 
+                    aVPbkStoreEvent.iUserId ,
+                    aVPbkStoreEvent.iDisplayName ,
+                    aVPbkStoreEvent.iAvatarContent,
+                    TVIMPSTEnums::EStorageContactReading  );
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactReading completed" ) );
+		    break;	
+		    }
+        case EVPbkContactFetching:
+        case EVPbkContactAdded:
+            {
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactAdded or EVPbkContactFetching" ) );
+            TVIMPSTEnums::TVIMPSTStorgaeEventType event = TVIMPSTEnums::EStorageEventContactAddition;
+            // a contact entry has been created in virtual database store
+            // create the cache contact
+            // fetched one by one contact from cdb file
+            // Add to storage cache
+            if( iFetchStep == EFetchingOn )
+                {
+                event = TVIMPSTEnums::EStorageContactFetching;
+                } 
+            iServiceCacheWriter.AddContactToCacheL(*aVPbkStoreEvent.iContactLink , 
+                    aVPbkStoreEvent.iUserId ,
+                    aVPbkStoreEvent.iDisplayName ,
+                    aVPbkStoreEvent.iAvatarContent,
+                    event );
+            if(iFetchStep == EFetchingOn)			
+                {
+                TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactAdded or EVPbkContactFetching fetchin on" ) );
+                IssueRequest();
+                }
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactAdded or EVPbkContactFetching completed" ) );
+            break;	
+            }
+        case EVPbkContactSynchronizing:
+            {
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactSynchronizing " ) );
+            // a contact entry has been created in virtual database store
+            // create the cache contact
+            // fetched one by one contact from cdb file
+            // Add to storage cache
+            iServiceCacheWriter.AddContactToCacheL(*aVPbkStoreEvent.iContactLink , 
+                    aVPbkStoreEvent.iUserId ,
+                    aVPbkStoreEvent.iDisplayName ,
+                    aVPbkStoreEvent.iAvatarContent,
+                    TVIMPSTEnums::EStorageContactSynchronizing );
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactSynchronizing(iFetchStep): %d " ), iFetchStep );
+            if(iFetchStep == EFetchingOn)          
+                   {
+                   TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL  EVPbkContactSynchronizing fetchin on" ) );
+                   IssueRequest();
+                   }
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactSynchronizing completed" ) );
+            break;
+            }
+        case EVPbkContactDeleted:
+            {
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactDeleted Event") );
+            // a contact entry has been deleted from virtual database store
+            // delete from cache contact
+            // not Needed in case of server contact
+            iServiceCacheWriter.RemoveContactFromCacheL(*aVPbkStoreEvent.iContactLink,
+                    TVIMPSTEnums::EStorageEventContactDelete );
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactDeleted Event done") );
+            break;	 
+            }
+        case EVPbkContactChanged:
+            {
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactChanged started") );
+            // a contact entry has been updated to virtual database store
+            // update to cache contact
+            // not Needed in case of server contact
+            iServiceCacheWriter.UpdateCacheContactL(*aVPbkStoreEvent.iContactLink , 
+                    aVPbkStoreEvent.iUserId ,
+                    aVPbkStoreEvent.iDisplayName,
+                    aVPbkStoreEvent.iAvatarContent);
+            if(iFetchStep == EFetchingOn)         
+                  {
+                  TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactAdded or EVPbkContactFetching fetchin on" ) );
+                  IssueRequest();
+                  }
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactChanged started") );
+            break;	
+            }
+        case EVPbkContactRetriving:
+            {
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactRetriving started ") );
+            // ONLY VALID USER ID ALLOWED
+            if( aVPbkStoreEvent.iUserId.Length() )
+                {
+                TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactRetriving valid id ") );
+                HBufC* sxpId = aVPbkStoreEvent.iUserId.AllocL();
+                iRetrivedXSPIdArray.Append( sxpId ); // takes the ownership of retrivedContact
+                // keep the backup of retrieved contacts
+                // user can add later once it sent to server
+                }
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkContactRetriving done") );
+            break;	
+            }
+        case EVPbkUnknownChanges:
+            {
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkUnknownChanges Event in") );
+            // unknow mean all contact deleted from store
+            // Not supported in case of server contact
+            iServiceCacheWriter.RemoveAllCacheContactsL();
+            if(iFetchStep == EFetchingCalled )
+                { 
+                TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkUnknownChanges fetching on") );               
+                IssueRequest();
+                }
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL EVPbkUnknownChanges Event done") );
+            break;	
+            }
+        default:
+            {
+            TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL default") );
+            break;
+            }
+        }
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::HandleVPbkStoreEventL() End") );
+    }
+
+
+// --------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::IssueRequest
+// --------------------------------------------------------------------------
+//
+void CVIMPSTStorageVPbkServerStore::IssueRequest()
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::IssueRequest() begin") );
+    if( !IsActive() )
+        {
+        TRequestStatus* status = &iStatus;
+        TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::IssueRequest() RequestComplete"));
+        User::RequestComplete( status, KErrNone );
+        SetActive();
+        }
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::IssueRequest() end") );
+    }
+    
+// --------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::RunL
+// --------------------------------------------------------------------------
+//
+void CVIMPSTStorageVPbkServerStore::RunL()
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RunL() begin") );
+    TInt count = iFetchContactsToBeAdded.Count();
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::FetchContactsToBeAdded count = %d"),count );
+    if( !count )
+        {
+        TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::iFetchStep set to state EContactReadComplete") );
+        iFetchStep = EContactReadComplete;
+        iServiceCacheWriter.NotifyServiceViewL( TVIMPSTEnums::EStorageContactFetchComplete );
+        TRACE( T_LIT("calling NotifyFetchCompleteL") );
+        }
+    else
+        {
+        TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::iFetchStep set to state EFetchingOn") );
+        iFetchStep  = EFetchingOn;
+        TVIMPSTContactInfo contactInfoToAdd = iFetchContactsToBeAdded[0];
+        // pass the display NAme in place of NULL
+        TRACE( T_LIT("calling CreateVPbkContactL") );
+       	iVPbkStoreHandler->CreateVPbkContactL( *contactInfoToAdd.iUserId, *contactInfoToAdd.iDisplayName ); // process always 0th item	
+	    
+	    iFetchContactsToBeAdded.Remove( 0 );
+        delete contactInfoToAdd.iUserId;
+        contactInfoToAdd.iUserId = NULL;
+        delete contactInfoToAdd.iDisplayName;
+        contactInfoToAdd.iDisplayName = NULL ;
+        
+        iFetchContactsToBeAdded.Compress();
+        }
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RunL() end") );
+    }
+
+// --------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::DoCancel
+// --------------------------------------------------------------------------
+//
+void CVIMPSTStorageVPbkServerStore::DoCancel()
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::DoCancel begin") );
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::DoCancel end") );
+    }
+
+// --------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::RunError
+// --------------------------------------------------------------------------
+//
+TInt CVIMPSTStorageVPbkServerStore::RunError( TInt aError )
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RunError begin") );
+    TRACE( T_LIT("error code = %d"), aError );
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RunError end") );
+    return aError;    
+    }
+
+//////////////////////////////////////////////////////////
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::CreateVPbkContactL
+// ---------------------------------------------------------------------------
+// 
+TInt CVIMPSTStorageVPbkServerStore::CreateVPbkContactL( const TDesC& aUserId, 
+        						 					   const TDesC& aDisplayName,
+        						 					   TBool /*aInvitationAutoAccept = EFalse */ )   
+	{
+	TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::CreateVPbkContactL() begin") );	
+    return iVPbkStoreHandler->CreateVPbkContactL( aUserId ,aDisplayName );
+	}
+
+// -----------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::AddVPbkFetchContactsL
+// -----------------------------------------------------------------------------
+//
+ void CVIMPSTStorageVPbkServerStore::AddVPbkFetchContactsL( RArray <TPtrC>& aFirstNameList, 
+                                                            RArray <TPtrC> &aServiceField ) 
+     {
+     // in case of server case we delete all contacts and then add fetch contacts
+     // in case of server contacts delete all contacts
+     TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::AddVPbkFetchContactsL() begin") );  
+     TInt oldContactCount = RemoveAllVPbkContactsL();
+     TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::AddVPbkFetchContactsL() oldContactCount = %d"), oldContactCount ); 
+     ResetAndDestroyLocalArrayL();
+     TInt fetchContactCount = aServiceField.Count();
+     for( TInt i = 0; i<fetchContactCount; i++ )
+         {
+         TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::FetchContactsToBeAdded Append = %d"),i );
+         TVIMPSTContactInfo contactInf =
+							         {
+							         aServiceField[i].AllocL() ,
+							         aFirstNameList[i].AllocL()	
+							         };
+         iFetchContactsToBeAdded.Append( contactInf );
+         }
+     TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::AddVPbkFetchContactsL() iFetchStep = %d"), iFetchStep ); 
+     if( iFetchStep == EContactReadComplete || !oldContactCount)
+	     {
+	     TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::AddVPbkFetchContactsL() inside if") );
+	     IssueRequest();	
+	     }
+	 else
+		 {
+         TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::iFetchStep set to state EFetchingCalled") );
+		 iFetchStep = EFetchingCalled;	
+		 }
+     TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::AddVPbkFetchContactsL() end") );  
+	 }
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::RemoveVPbkContactL
+// ---------------------------------------------------------------------------
+//  
+TInt CVIMPSTStorageVPbkServerStore::RemoveVPbkContactL(const MVPbkContactLink& aContactLink) 
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RemoveVPbkContactL() begin") );  
+    // text now holds the name (or first field of the contact) 
+    CVPbkContactLinkArray* contactsToDelete = CVPbkContactLinkArray::NewLC();
+    MVPbkContactLink* link = aContactLink.CloneLC();    
+    contactsToDelete->AppendL( link ); // takes ownership
+    CleanupStack::Pop(); // link
+    TInt error = iVPbkStoreHandler->RemoveVPbkContactL( *contactsToDelete );
+    CleanupStack::PopAndDestroy(); // contactsToDelete
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::returned error code = %d"), error );
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RemoveVPbkContactL() end") ); 
+    return error;
+    }
+ 
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::RemoveAllVPbkContactsL
+// ---------------------------------------------------------------------------
+// 
+TInt CVIMPSTStorageVPbkServerStore::RemoveAllVPbkContactsL() 
+	{
+	TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RemoveAllVPbkContactsL() begin") );
+	iRetrivedXSPIdArray.ResetAndDestroy();
+	return iVPbkStoreHandler->RemoveAllVPbkContactsL();
+	}
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::RetrieveVPbkXSPIdL
+// ---------------------------------------------------------------------------
+//  
+TInt CVIMPSTStorageVPbkServerStore::RetrieveVPbkXSPIdL(const TDesC8& aPackedLinks ) 
+	{
+	TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RetrieveVPbkContactL() begin") );
+	iRetrivedXSPIdArray.ResetAndDestroy();
+	TRACE( T_LIT("CVIMPSTStorageVPbkLocalStore::RetrieveVPbkXSPIdL() iRetrivedXSPIdArray Reset" ) );
+	iVPbkStoreHandler->RetrieveVPbkContactL( aPackedLinks );
+	TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RetrieveVPbkContactL() end") );
+    return iRetrivedXSPIdArray.Count();
+	}
+ 
+ // ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::GetRetrieveVPbkXSPIdL
+// ---------------------------------------------------------------------------
+//  
+const TDesC& CVIMPSTStorageVPbkServerStore::GetRetrieveVPbkXSPIdL(TInt aIndex ) 
+	{
+	TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RetrieveVPbkXSPIdL() begin") );
+	HBufC* contactId = NULL;
+	if( aIndex >= 0 && aIndex < iRetrivedXSPIdArray.Count() )
+        {
+        contactId = iRetrivedXSPIdArray[ aIndex ];
+        }
+    if( contactId  )
+	    {
+		TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RetrieveVPbkXSPIdL() end") );
+	    return 	*contactId;
+	    }
+	TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RetrieveVPbkXSPIdL() end") );
+    return KNullDesC ; 
+    }
+ // ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::CreateRetriveVPbkContactL
+// ---------------------------------------------------------------------------
+// 
+TInt CVIMPSTStorageVPbkServerStore::CreateRetriveVPbkContactL( TInt /*aIndexToUse*/ )   
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::CreateRetriveVPbkContactL()") );
+    // Not applicable for server store
+    return KErrNotSupported;
+    }
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::deleteRetriveVPbkContactL
+// ---------------------------------------------------------------------------
+// 
+TInt CVIMPSTStorageVPbkServerStore::deleteRetriveVPbkContactL( TInt /*aIndexToUse*/ )   
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::deleteRetriveVPbkContactL()") );
+    // Not applicable for server store
+    return KErrNotSupported;
+    }
+// CVIMPSTStorageVPbkServerStore::UpdateAvatarFieldDataL()
+// ---------------------------------------------------------------------------
+//
+TInt CVIMPSTStorageVPbkServerStore::UpdateAvatarFieldDataL(const MVPbkContactLink& aContactLink,
+														  const TDesC8& aAvatartData )
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::UpdateAvatarFieldDataL() ") );
+    return iVPbkStoreHandler->UpdateAvatarFieldDataL( aContactLink, aAvatartData );
+    }
+
+// ---------------------------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::RemoveAvatarFieldL()
+// ---------------------------------------------------------------------------
+//
+TInt CVIMPSTStorageVPbkServerStore::RemoveAvatarFieldL(MVPbkStoreContact& aStoreContact)
+	{
+	TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::RemoveAvatarFieldL()") );
+	return iVPbkStoreHandler->RemoveAvatarFieldL( aStoreContact );	
+	}
+
+// ----------------------------------------------------------
+// CVIMPSTStorageVPbkServerStore::DeleteDatabaseL
+// ----------------------------------------------------------
+void CVIMPSTStorageVPbkServerStore::DeleteDatabaseL()
+    {
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::DeleteDatabaseL begin") );
+   	// TODO : Not supported yet
+    TRACE( T_LIT("CVIMPSTStorageVPbkServerStore::DeleteDatabaseL end") );
+    }
+// End of file
+
+