iaupdate/IAD/firmwareupdate/src/iaupdatefwsyncappengine.cpp
author Simon Howkins <simonh@symbian.org>
Mon, 22 Nov 2010 12:04:39 +0000
branchRCL_3
changeset 84 e6c5e34cd9b9
parent 0 ba25891c3a9e
child 77 d1838696558c
permissions -rw-r--r--
Adjusted to avoid exports, etc, from a top-level bld.inf

/*
* 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:    
*
*/



#include "iaupdatefwsyncappengine.h"
#include "iaupdatefwdebug.h"
#include "iaupdatefwsynchandler.h"
#include "iaupdatefwfotamodel.h"
#include "iaupdateuids.h"
#include <collate.h>

// ============================ MEMBER FUNCTIONS ==============================
//

// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::CIAUpdateFWSyncAppEngine
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CIAUpdateFWSyncAppEngine::CIAUpdateFWSyncAppEngine() 
	{
//	FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::CIAUpdateFWSyncAppEngine:" );
	
	}

// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CIAUpdateFWSyncAppEngine::ConstructL( CIAUpdateFWFotaModel* aFotaModel )
    {
    
    iSyncMLSession.OpenL();
    iSyncHandler = CIAUpdateFWSyncHandler::NewL( &iSyncMLSession,
                                             this,
                                             aFotaModel );
                                             

    }

// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::NewL
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CIAUpdateFWSyncAppEngine* CIAUpdateFWSyncAppEngine::NewL(
    CIAUpdateFWFotaModel* aFotaModel )
	{
	
	CIAUpdateFWSyncAppEngine* self = new( ELeave ) CIAUpdateFWSyncAppEngine();
    CleanupStack::PushL( self );
    self->ConstructL( aFotaModel );
    CleanupStack::Pop();
    


    return self;
	}

// ------------------------------------------------------------------------------
// Destructor
// ------------------------------------------------------------------------------
//
CIAUpdateFWSyncAppEngine::~CIAUpdateFWSyncAppEngine()
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::~CIAUpdateFWSyncAppEngine:" );
    
    delete iSyncHandler;
    delete iProfile;        
    iSyncMLSession.Close();
	}

// ------------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::DeleteProfileL
// ------------------------------------------------------------------------------
//
void CIAUpdateFWSyncAppEngine::DeleteProfileL( TInt aProfileId )
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::DeleteProfileL:" );
    
    delete iProfile;
    iProfile = NULL;
    iSyncMLSession.DeleteProfileL( aProfileId );
	}

// ------------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::CreateProfileL
// ------------------------------------------------------------------------------
//
TInt CIAUpdateFWSyncAppEngine::CreateProfileL()
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::CreateProfileL:" );
    
    delete iProfile;
    iProfile = NULL;
    iProfile = CIAUpdateFWSyncProfile::NewL( KIAUpdateUiUid, &iSyncMLSession );
    return iProfile->CreateL();
	}

// ------------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::Profile
// ------------------------------------------------------------------------------
//
CIAUpdateFWSyncProfile* CIAUpdateFWSyncAppEngine::Profile( )
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::Profile:" );
    
    return iProfile;
	}
	
// ------------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::CreateCopyProfileL
// ------------------------------------------------------------------------------
//
CIAUpdateFWSyncProfile* CIAUpdateFWSyncAppEngine::CreateCopyProfileL( TInt aProfileId )
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::CreateCopyProfileL:" );
    
    delete iProfile;
    iProfile = NULL;
    iProfile = CIAUpdateFWSyncProfile::NewL( KIAUpdateUiUid, &iSyncMLSession );
    
    iProfile->CreateCopyL( aProfileId );
    return iProfile;
    }

// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::Session
// -----------------------------------------------------------------------------
//
RSyncMLSession* CIAUpdateFWSyncAppEngine::Session()
	{
	FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::Session:" );
	
	return &iSyncMLSession;
	}

// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::OpenL
// -----------------------------------------------------------------------------
//
CIAUpdateFWSyncProfile* CIAUpdateFWSyncAppEngine::OpenProfileL( TInt aProfileId,
                                                        TInt aOpenMode )
    {
	FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::OpenL:" );
	
    delete iProfile;
    iProfile = NULL;
    iProfile = CIAUpdateFWSyncProfile::NewL( KIAUpdateUiUid, &iSyncMLSession );
   	iProfile->OpenL( aProfileId, aOpenMode );
   	return iProfile;
    }

// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::Close
// -----------------------------------------------------------------------------
//
void CIAUpdateFWSyncAppEngine::CloseProfile()
    {
    FLOG(  "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::Close:" );

    delete iProfile;
    iProfile = NULL;
    }
    
// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::SynchronizeL
// -----------------------------------------------------------------------------
//
void CIAUpdateFWSyncAppEngine::SynchronizeL( TDesC& aServerName,
                                         TInt aProfileId,
                                         TInt aConnectionBearer,
                                         const TBool aUseFotaProgressNote)
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::SynchronizeL:" );
    	
    iSyncHandler->SynchronizeL( aServerName,
                                aProfileId,
                                aConnectionBearer,
                                aUseFotaProgressNote);
    }
    
// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::SynchronizeL
// -----------------------------------------------------------------------------
//
void CIAUpdateFWSyncAppEngine::SynchronizeL( TDesC& aServerName,
                                         TInt aProfileId,
                                         TInt aJobId,
                                         TInt aConnectionBearer,
                                         const TBool aUseFotaProgressNote )
    {
   	FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::SynchronizeL:" );

    iSyncHandler->SynchronizeL( aServerName, 
                                aProfileId, 
                                aJobId, 
                                aConnectionBearer,
                                aUseFotaProgressNote );
    }

    
// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::ServerIdFoundL
// -----------------------------------------------------------------------------
//    
TBool CIAUpdateFWSyncAppEngine::ServerIdFoundL( const TDesC& aServerId,
                                            const TInt aProfileId )
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::ServerIdFoundL:" );
    
	RArray<TSmlProfileId> arr;
    iSyncMLSession.ListProfilesL( arr, ESmlDevMan );
    TBool ret = EFalse;
   	CleanupClosePushL(arr);
   	
	for ( TInt index = 0; index < arr.Count(); index++ )
		{
	    TRAPD( error, OpenProfileL( arr[index], ESmlOpenRead ) );
	    if ( error == KErrNone )
	        {
	        if ( aProfileId != Profile()->ProfileId() )
	            {	        
    	        TBuf<KNSmlMaxItemLength> buf;
    	        Profile()->GetServerId( buf );
    	        if ( buf.Compare( aServerId ) == 0 )
    	            {
    	            FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::ServerIdFoundL: Match" );
                    ret = ETrue;
                    CloseProfile();
                    break;
                    }
	            }
		    CloseProfile();
	        }
		}
    CleanupStack::PopAndDestroy( &arr );
    return ret;
    }

// -----------------------------------------------------------------------------
//  CIAUpdateFWSyncAppEngine::Compare
// -----------------------------------------------------------------------------
//
TInt CIAUpdateFWSyncAppEngine::Compare( const TDesC& aLeft, const TDesC& aRight )
	{
	FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::Compare:" );
	
	// Empty Name() is always greater than non-empty Name()
    if (aLeft.Length() == 0 && aRight.Length() == 0)
        {
        return 0;
        }
    if (aLeft.Length() == 0)
        {
        return 1;
        }
    if (aRight.Length() == 0)
        {
        return -1;
        }

    // None of the Name()s was empty, use TDesC::CompareC to do the comparison.
    // This is from cntmodel.
    TCollationMethod collateMethod;
    // get the standard method
	collateMethod = *Mem::CollationMethodByIndex(0);
    // dont ignore punctuation and spaces
	collateMethod.iFlags |= TCollationMethod::EIgnoreNone; 
	TInt comparison( aLeft.CompareC(aRight, 3, &collateMethod) );
	return comparison;	
	}
	
// -----------------------------------------------------------------------------
//  CIAUpdateFWSyncAppEngine::SyncRunning
// -----------------------------------------------------------------------------
//
TBool CIAUpdateFWSyncAppEngine::SyncRunning()
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::SyncRunning:" );
    
    return iSyncHandler->SyncRunning();
    }

// -----------------------------------------------------------------------------
//  CIAUpdateFWSyncAppEngine::CancelSyncL
// -----------------------------------------------------------------------------
//
void CIAUpdateFWSyncAppEngine::CancelSyncL()
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::CancelSyncL()" );
    iSyncHandler->CancelSynchronizeL();
    }

// -----------------------------------------------------------------------------
//  CIAUpdateFWSyncAppEngine::SyncCompleted
// -----------------------------------------------------------------------------
//
void CIAUpdateFWSyncAppEngine::SyncCompleted( TNSmlStatus /*aStatus*/ )
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::SyncCompleted:" );
    
    /*if( iSyncObserver )
        {
        FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::SyncCompleted: inform observer" );
        
        iSyncObserver->SyncComplete( aStatus );
        }    */
    }
    
// -----------------------------------------------------------------------------
// CIAUpdateFWSyncAppEngine::RequestSyncStatus
// -----------------------------------------------------------------------------
//	
/*void CIAUpdateFWSyncAppEngine::RequestSyncStatus( 
                                           MNSmlDMSyncObserver* aSyncObserver )
    {
    FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::RequestSyncStatus:" );
    
    if( aSyncObserver )
        {
        FLOG( "[IAUPDATEFW] CIAUpdateFWSyncAppEngine::RequestSyncStatus: added observer" );
        iSyncObserver = aSyncObserver;
        }
    }*/

// End of File