filemanager/src/fmbkupengine/src/CMMCScBkupDataOwnerInfo.cpp
branchRCL_3
changeset 21 65326cf895ed
parent 20 491b3ed49290
child 22 f5c50b8af68c
--- a/filemanager/src/fmbkupengine/src/CMMCScBkupDataOwnerInfo.cpp	Tue Aug 31 15:06:05 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,560 +0,0 @@
-/*
-* Copyright (c) 2005 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: CMMCScBkupDataOwnerInfo implementation
-*
-*
-*/
-
-#include "CMMCScBkupDataOwnerInfo.h"
-
-// System includes
-#include <s32strm.h>
-
-// User includes
-#include "MMCScBkupLogger.h"
-#include "MMCScBkupSBEUtils.h"
-#include "MMMCScBkupArchiveDataInterface.h"
-#include "CMMCScBkupDriveDataSizeManager.h"
-
-// Constants
-_LIT_SECURE_ID(KMMCScBkupUninitialisedSecureId, 0);
-
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::CMMCScBkupDataOwnerInfo()
-// 
-// C++ constructor.
-// ---------------------------------------------------------------------------
-CMMCScBkupDataOwnerInfo::CMMCScBkupDataOwnerInfo( CDataOwnerInfo* aOwner )
-:   iDataOwner(aOwner), iVersion(EStreamFormatVersionLatest-1)
-    {
-    SetStatus(EUnset);
-    //
-    iSecureId = KMMCScBkupUninitialisedSecureId;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::~CMMCScBkupDataOwnerInfo()
-// 
-// Destructor.
-// ---------------------------------------------------------------------------
-CMMCScBkupDataOwnerInfo::~CMMCScBkupDataOwnerInfo()
-    {
-    delete iDataOwner;
-    delete iOperationalSize;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::ConstructL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::ConstructL()
-    {
-    if  ( iOperationalSize == NULL )
-        {
-        iOperationalSize = CMMCScBkupDataTypeSizer::NewL();
-        }
-
-    // Try and extract the SID if its a package or a SID type
-    const TSBDerivedType type = iDataOwner->Identifier().DerivedTypeL();
-    //
-    if  (type == ESIDDerivedType || type == EPackageDerivedType)
-        {
-        iSecureId = MMCScBkupSBEUtils::SecureIdFromGenericL(iDataOwner->Identifier());
-        if( iSecureId.iId == KNullUid.iUid && iVersion > EStreamFormatVersion1 )
-            {
-            iSecureId = MMCScBkupSBEUtils::PackageIdFromGenericL(iDataOwner->Identifier());
-            }
-        }
-
-    // The following code sets the completion status to ETrue
-    // for any irrelevant items associated with a data owner. I.e. if
-    // a data owner doesn't support active backup, then it sets the completion
-    // of active backup to ETrue. This makes writing the logic inside the
-    // active/passive/system backup items a little easier (active in particular)
-    const TBool hasJavaData = HasJavaDataL();
-    const TBool hasActiveData = HasActiveDataL();
-    const TBool hasPassiveData = HasPassiveDataL();
-    const TBool hasPublicData = HasPublicDataL();
-    const TBool hasSystemData = HasSystemDataL();
-
-    // Update completion statuses (i.e. "what work must be done")
-    SetCompletionStatus( EMMCScBkupOwnerDataTypeJavaData, !hasJavaData );
-    SetCompletionStatus( EMMCScBkupOwnerDataTypeActiveData, !hasActiveData );
-    SetCompletionStatus( EMMCScBkupOwnerDataTypePassiveData, !hasPassiveData );
-    SetCompletionStatus( EMMCScBkupOwnerDataTypePublicData, !hasPublicData );
-    SetCompletionStatus( EMMCScBkupOwnerDataTypeSystemData, !hasSystemData );
-    
-    // Be aware that CMMCScBkupStateRequestSizeOfDataOwner::GetJavaDataSizesL() can
-    // manipulate the passive data completion status depending on whether the midlet
-    // has associated data files.
-    
-    // If we're logging, then we write out some useful debugging info that shows
-    // which operations must be performed for each D.O.
-#ifdef __MMCSCBKUPLOGGING_ENABLED__
-    TBuf<256> drivePrint;
-    const TDriveList& driveList = iDataOwner->DriveList();
-    
-    for(TInt i=0; i<KMaxDrives; i++)
-        {
-        if  (driveList[i] != 0)
-            {
-            const TDriveUnit driveUnit(i);
-            const TDriveName name(driveUnit.Name());
-            drivePrint.Append(name);
-            if  (i < KMaxDrives - 1)
-                {
-                drivePrint.Append(_L(", "));
-                }
-            }
-        }
-
-    if ( hasJavaData )
-        {
-        HBufC* hash = MMCScBkupSBEUtils::JavaHashFromGenericLC( iDataOwner->Identifier() );
-        __LOG7("CMMCScBkupDataOwnerInfo::ConstructL() - PubD: %d, ActD: %d, PasD: %d, JavD: %d, SysD: %d, drives: %S, hash: %S", hasPublicData, hasActiveData, hasPassiveData, hasJavaData, hasSystemData, &drivePrint, hash);
-        CleanupStack::PopAndDestroy( hash );
-        }
-    else
-        {
-        __LOG8("CMMCScBkupDataOwnerInfo::ConstructL() - PubD: %d, ActD: %d, PasD: %d, JavD: %d, SysD: %d, drives: %S, SID : 0x%08x %S", hasPublicData, hasActiveData, hasPassiveData, hasJavaData, hasSystemData, &drivePrint, iSecureId.iId, &MMCScBkupLogger::FriendlyNameForSID( iSecureId ));
-        }
-#endif
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::New()
-// 
-// 
-// ---------------------------------------------------------------------------
-CMMCScBkupDataOwnerInfo* CMMCScBkupDataOwnerInfo::New( TSecureId aSecureId )
-    {
-    CMMCScBkupDataOwnerInfo* self = new CMMCScBkupDataOwnerInfo( NULL );
-    if  (self)
-        {
-        self->iSecureId = aSecureId;
-        }
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::NewLC()
-// 
-// 
-// ---------------------------------------------------------------------------
-CMMCScBkupDataOwnerInfo* CMMCScBkupDataOwnerInfo::NewLC( CDataOwnerInfo* aOwner )
-    {
-    CleanupStack::PushL(aOwner);
-    CMMCScBkupDataOwnerInfo* self = new(ELeave) CMMCScBkupDataOwnerInfo( aOwner );
-    CleanupStack::Pop(aOwner);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::NewLC()
-// 
-// 
-// ---------------------------------------------------------------------------
-CMMCScBkupDataOwnerInfo* CMMCScBkupDataOwnerInfo::NewLC( RReadStream& aStream )
-    {
-    CMMCScBkupDataOwnerInfo* self = new(ELeave) CMMCScBkupDataOwnerInfo();
-    CleanupStack::PushL(self);
-    aStream >> *self;
-    self->ConstructL();
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::Owner()
-// 
-// 
-// ---------------------------------------------------------------------------
-CDataOwnerInfo& CMMCScBkupDataOwnerInfo::Owner()
-    {
-    return *iDataOwner;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::Owner()
-// 
-// 
-// ---------------------------------------------------------------------------
-const CDataOwnerInfo& CMMCScBkupDataOwnerInfo::Owner() const
-    {
-    return *iDataOwner;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::Status()
-// 
-// 
-// ---------------------------------------------------------------------------
-TDataOwnerStatus CMMCScBkupDataOwnerInfo::Status() const
-    {
-    return iStatus;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::SetStatus()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::SetStatus(TDataOwnerStatus aStatus)
-    {
-    iStatus = aStatus;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::AddToOperationalSizeL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::AddToOperationalSizeL( TMMCScBkupOwnerDataType aType, TDriveNumber aDrive, TInt64 aSize )
-    {
-    iOperationalSize->AddToSizeL( aType, aSize, aDrive );
-
-#if defined(__MMCSCBKUPLOGGING_ENABLED__)
-    const TInt64 newSize = iOperationalSize->Size( aType, aDrive );
-    __LOG5("CMMCScBkupDataOwnerInfo::AddToOperationalSizeL() - [0x%08x] - aSize: %8Ld, newSize: %8Ld, aDrive: %c:, aType: %S", iSecureId.iId, aSize, newSize, aDrive + 'A', &MMCScBkupLogger::DataType( aType ) );
-#endif
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::SetOperationalSizeL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::SetOperationalSizeL( TMMCScBkupOwnerDataType aType, TDriveNumber aDrive, TInt64 aSize )
-    {
-    iOperationalSize->Reset( aType, aDrive );
-    iOperationalSize->AddToSizeL( aType, aSize, aDrive );
-
-    __LOG4("CMMCScBkupDataOwnerInfo::SetOperationalSizeL()   - [0x%08x] - aSize: %8Ld, aDrive: %c:, aType: %S", iSecureId.iId, aSize, aDrive + 'A', &MMCScBkupLogger::DataType( aType ) );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::ResetOperationalSize()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::ResetOperationalSize( TMMCScBkupOwnerDataType aType )
-    {
-    iOperationalSize->Reset( aType );
-    __LOG2("CMMCScBkupDataOwnerInfo::ResetOperationalSize()  - [0x%08x] - aType: %S", iSecureId.iId, &MMCScBkupLogger::DataType( aType ) );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::OperationalSize()
-// 
-// 
-// ---------------------------------------------------------------------------
-TInt64 CMMCScBkupDataOwnerInfo::OperationalSize( TMMCScBkupOwnerDataType aType, TDriveNumber aDrive ) const
-    {
-    const TInt64 size = iOperationalSize->Size( aType, aDrive );
-
-    __LOG4("CMMCScBkupDataOwnerInfo::OperationalSize()       - [0x%08x] - size: %8Ld, aDrive: %c:, aType: %S", iSecureId.iId, size, aDrive + 'A', &MMCScBkupLogger::DataType( aType ) );
-
-    return size;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::OperationalSize()
-// 
-// 
-// ---------------------------------------------------------------------------
-TInt64 CMMCScBkupDataOwnerInfo::OperationalSize( TMMCScBkupOwnerDataType aType ) const
-    {
-    const TInt64 size = iOperationalSize->Size( aType );
-
-    //__LOG3("CMMCScBkupDataOwnerInfo::OperationalSize()       - [0x%08x] - size: %8Ld, aType: %S", iSecureId.iId, size, &MMCScBkupLogger::DataType( aType ) );
-
-    return size;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::OperationalSize()
-// 
-// 
-// ---------------------------------------------------------------------------
-TInt64 CMMCScBkupDataOwnerInfo::OperationalSize( TDriveNumber aDrive ) const
-    {
-    const TInt64 size = iOperationalSize->CombinedSize( aDrive );
-
-    //__LOG3("CMMCScBkupDataOwnerInfo::OperationalSize()       - [0x%08x] - size: %8Ld, aDrive: %c:", iSecureId.iId, size, aDrive + 'A' );
-
-    return size;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::OperationalSizesL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::OperationalSizesL( RArray<TMMCScBkupDriveAndSize>& aSizes ) const
-    {
-    iOperationalSize->GetSizesL( aSizes );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::SetCompletionStatus()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::SetCompletionStatus( TMMCScBkupOwnerDataType aType, TBool aCompleted )
-    {
-    iCompletionStatus[aType] = aCompleted;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::CompletionStatus()
-// 
-// 
-// ---------------------------------------------------------------------------
-TBool CMMCScBkupDataOwnerInfo::CompletionStatus( TMMCScBkupOwnerDataType aType ) const
-    {
-    return iCompletionStatus[aType];
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::ActiveDataRetryCount()
-// 
-// 
-// ---------------------------------------------------------------------------
-TInt CMMCScBkupDataOwnerInfo::ActiveDataRetryCount() const
-    {
-    return iActiveDataRetryCount;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::SetActiveDataRetryCount()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::SetActiveDataRetryCount(TInt aCount)
-    {
-    iActiveDataRetryCount = aCount;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::InternalizeL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::InternalizeL(RReadStream& aStream)
-    {
-    iVersion = aStream.ReadInt32L(); // EStreamFormatVersionX
-    aStream.ReadInt32L(); // spare1
-    aStream.ReadInt32L(); // spare2
-    aStream.ReadInt32L(); // spare3
-
-    // Secure ID
-    iSecureId = aStream.ReadInt32L();
-    
-    // Data sizes
-    CMMCScBkupDataTypeSizer* operationalSize = CMMCScBkupDataTypeSizer::NewLC( aStream );
-    delete iOperationalSize;
-    iOperationalSize = operationalSize;
-    CleanupStack::Pop( operationalSize );
-   
-    // Read data owner buffer length
-    TCardinality dataOwnerLength;
-    aStream >> dataOwnerLength;
-
-    // Internalize the data owner (as raw descriptor)
-    HBufC8* dataOwnerBuffer = HBufC8::NewLC( dataOwnerLength );
-    TPtr8 pDataOwnerBuffer( dataOwnerBuffer->Des() );
-    aStream.ReadL( pDataOwnerBuffer, dataOwnerLength );
-    //
-    CDataOwnerInfo* dataOwner = CDataOwnerInfo::NewL( *dataOwnerBuffer );
-    delete iDataOwner;
-    iDataOwner = dataOwner;
-    CleanupStack::PopAndDestroy( dataOwnerBuffer );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::ExternalizeL()
-// 
-// 
-// ---------------------------------------------------------------------------
-void CMMCScBkupDataOwnerInfo::ExternalizeL(RWriteStream& aStream) const
-    {
-    aStream.WriteInt32L( EStreamFormatVersion2 );
-    aStream.WriteInt32L( 0 ); // spare1
-    aStream.WriteInt32L( 0 ); // spare2
-    aStream.WriteInt32L( 0 ); // spare3
-
-    // Always write secure id
-    aStream.WriteInt32L( iSecureId );
-
-    // ... and always write the data sizes
-    aStream << *iOperationalSize;
-
-    // Externalize the data owner to an HBufC8
-    HBufC8* dataOwnerBuffer = iDataOwner->ExternaliseL();
-    CleanupStack::PushL( dataOwnerBuffer );
-
-    // Write leading byte count - helps us when it comes to internalising
-    const TCardinality dataOwnerLength( dataOwnerBuffer->Length() );
-    aStream << dataOwnerLength;
-    
-    // Now write the data owner buffer - not using chevrons just in case it
-    // does funny unicode compression stuff...
-    aStream.WriteL( *dataOwnerBuffer );
-
-    CleanupStack::PopAndDestroy(dataOwnerBuffer);
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::CompareDataOwnerBySIDL()
-// 
-// 
-// ---------------------------------------------------------------------------
-TBool CMMCScBkupDataOwnerInfo::CompareDataOwnerBySIDL(const CMMCScBkupDataOwnerInfo& aLeft, const CMMCScBkupDataOwnerInfo& aRight)
-    {
-    TBool same = EFalse;
-    
-    // If we have an owner object, then we first compare the derived types.
-    // If not, we just directly compare the SIDs
-    if  ( aLeft.iDataOwner && aRight.iDataOwner )
-        {
-        const TSBDerivedType leftType = aLeft.Owner().Identifier().DerivedTypeL();
-        const TSBDerivedType rightType = aRight.Owner().Identifier().DerivedTypeL();
-        //
-        same = ((leftType == rightType) || 
-                (leftType == ESIDDerivedType && rightType == EPackageDerivedType) || 
-                (leftType == EPackageDerivedType && rightType == ESIDDerivedType)
-               );
-        }
-    else if ( aRight.iDataOwner )
-        {
-        // Check that it is not Java data owner in question. Java DOs all have
-        // secure id 0x0, but it could also be the case for certain package
-        // data owners (see for KDummyId in SBE implementation).
-        if( !MMCScBkupSBEUtils::HasJavaDataL( aRight.Owner() ) )
-            {
-            // ..set to ETrue to trip next if-statement
-            same = ETrue;
-            }
-        }
-
-    // Now compare the SID's themselves 
-    if  ( same )
-        {
-        same = (aLeft.SecureId() == aRight.SecureId());
-        }
-    //
-    return same;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::HasJavaDataL()
-// 
-// 
-// ---------------------------------------------------------------------------
-TBool CMMCScBkupDataOwnerInfo::HasJavaDataL() const
-    {
-    const TBool hasJavaData = MMCScBkupSBEUtils::HasJavaDataL( *iDataOwner );
-    const TInt64 opSize = OperationalSize( EMMCScBkupOwnerDataTypeJavaData );
-    //
-    return hasJavaData || (opSize > 0 );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::HasActiveDataL()
-// 
-// 
-// ---------------------------------------------------------------------------
-TBool CMMCScBkupDataOwnerInfo::HasActiveDataL() const
-    {
-    const TBool hasActiveData = MMCScBkupSBEUtils::HasActiveDataL( *iDataOwner );
-    const TInt64 opSize = OperationalSize( EMMCScBkupOwnerDataTypeActiveData );
-    //
-    return hasActiveData || (opSize > 0 );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::HasPassiveDataL()
-// 
-// 
-// ---------------------------------------------------------------------------
-TBool CMMCScBkupDataOwnerInfo::HasPassiveDataL() const
-    {
-    const TBool hasPassiveData = MMCScBkupSBEUtils::HasPassiveDataL( *iDataOwner );
-    const TInt64 opSize = OperationalSize( EMMCScBkupOwnerDataTypePassiveData );
-    //
-    return hasPassiveData || (opSize > 0 );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::HasPublicDataL()
-// 
-// 
-// ---------------------------------------------------------------------------
-TBool CMMCScBkupDataOwnerInfo::HasPublicDataL() const
-    {
-    const TBool hasPublicData = MMCScBkupSBEUtils::HasPublicDataL( *iDataOwner );
-    const TInt64 opSize = OperationalSize( EMMCScBkupOwnerDataTypePublicData );
-    //
-    return hasPublicData || (opSize > 0 );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CMMCScBkupDataOwnerInfo::HasSystemDataL()
-// 
-// 
-// ---------------------------------------------------------------------------
-TBool CMMCScBkupDataOwnerInfo::HasSystemDataL() const
-    {
-    const TBool hasSystemData = MMCScBkupSBEUtils::HasSystemDataL( *iDataOwner );
-    const TInt64 opSize = OperationalSize( EMMCScBkupOwnerDataTypeSystemData );
-    //
-    return hasSystemData || (opSize > 0 );
-    }
-
-
-
-