diff -r 491b3ed49290 -r 65326cf895ed filemanager/src/fmbkupengine/src/CMMCScBkupStateArchiveOpJavaData.cpp --- a/filemanager/src/fmbkupengine/src/CMMCScBkupStateArchiveOpJavaData.cpp Tue Aug 31 15:06:05 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,548 +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: CMMCScBkupStateArchiveOpJavaData implementation -* -* -*/ - -#include "CMMCScBkupStateArchiveOpJavaData.h" - -// User includes -#include "MMCScBkupLogger.h" -#include "CMMCScBkupDataOwnerCollection.h" -#include "CMMCScBkupDataOwnerInfo.h" -#include "MMCScBkupSBEUtils.h" -#include "CMMCScBkupArchive.h" -#include "CMMCScBkupArchiveFooter.h" -#include "CMMCScBkupIndexJavaData.h" -#include "MMMCScBkupArchiveDataInterface.h" - - - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::CMMCScBkupStateArchiveOpJavaData() -// -// C++ constructor. -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpJavaData::CMMCScBkupStateArchiveOpJavaData( MMMCScBkupDriver& aDriver ) -: CMMCScBkupStateOpAware( aDriver ), iIndexValueCurrent( -1 ) - { - __LOG1("CMMCScBkupStateArchiveOpJavaData::CMMCScBkupStateArchiveOpJavaData() - 0x%08x", StateId().iUid ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::~CMMCScBkupStateArchiveOpJavaData() -// -// Destructor. -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpJavaData::~CMMCScBkupStateArchiveOpJavaData() - { - Cancel(); - // - delete iBackupTransferObjectMidlet; - delete iBackupTransferObjectMidletData; - delete iRestoreTransferObjectMidlet; - delete iRestoreTransferObjectMidletData; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::NewL() -// -// -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpJavaData* CMMCScBkupStateArchiveOpJavaData::NewL( MMMCScBkupDriver& aDriver ) - { - CMMCScBkupStateArchiveOpJavaData* self = new(ELeave) CMMCScBkupStateArchiveOpJavaData( aDriver ); - return self; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::StateId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpJavaData::StateId() const - { - return KMMCScBkupStateIdArchiveOpJavaData; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::NextStateBackupId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpJavaData::NextStateBackupId( TBool /*aPartial*/ ) const - { - return KMMCScBkupStateIdGetDataOwnerStatuses; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::NextStateRestoreId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpJavaData::NextStateRestoreId( TBool /*aPartial*/ ) const - { - return KMMCScBkupStateIdArchiveOpPassiveData; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::PerformStateInitBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::PerformStateInitBackupL( TBool /*aPartial*/ ) - { - __LOG("CMMCScBkupStateArchiveOpJavaData::PerformStateInitBackupL() - START" ); - __DEBUG_TESTING_SKIP_BACKUP_JAV_DATA; - - iBackupTransferObjectMidlet = CMMCScBkupWriteDataTransferRequest< TJavaTransferType >::NewL( - Driver(), - *this, - EMMCScBkupOwnerDataTypeJavaData, - EJavaTransferDerivedType, - EJavaMIDlet - ); - - iBackupTransferObjectMidletData = CMMCScBkupWriteDataTransferRequest< TJavaTransferType >::NewL( - Driver(), - *this, - EMMCScBkupOwnerDataTypePassiveData, - EJavaTransferDerivedType, - EJavaMIDletData - ); - - CompleteSelf(); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::PerformStateInitRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::PerformStateInitRestoreL( TBool /*aPartial*/ ) - { - __LOG("CMMCScBkupStateArchiveOpJavaData::PerformStateInitRestoreL() - START" ); - __DEBUG_TESTING_SKIP_RESTORE_JAV_DATA; - - - iRestoreTransferObjectMidlet = CMMCScBkupReadDataTransferRequest< TJavaTransferType >::NewL( - Driver(), - EMMCScBkupOwnerDataTypeJavaData, - EJavaMIDlet - ); - - iRestoreTransferObjectMidletData = CMMCScBkupReadDataTransferRequest< TJavaTransferType >::NewL( - Driver(), - EMMCScBkupOwnerDataTypePassiveData, - EJavaMIDletData - ); - - CompleteSelf(); - __LOG("CMMCScBkupStateArchiveOpJavaData::PerformStateInitRestoreL() - END" ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepBackupL( TBool /*aPartial*/ ) - { - __LOG1("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepBackupL() - START - iCurrentJavaState: %d", iCurrentJavaState ); - - switch( iCurrentJavaState ) - { - case EJavaStateIdle: - __LOG("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepBackupL() - EJavaStateIdle"); - BackupMidletL(); - break; - case EJavaStateMidlet: - __LOG("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepBackupL() - EJavaStateMidlet"); - BackupMidletDataL(); - break; - case EJavaStateMidletData: - __LOG("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepBackupL() - EJavaStateMidletData"); - iCurrentJavaState = EJavaStateIdle; - CompleteSelf(); - break; - default: - break; - } - - __LOG2("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepBackupL() - END - iCurrentJavaState: %d, IsActive: %d", iCurrentJavaState, IsActive() ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepRestoreL( TBool /*aPartial*/ ) - { - __LOG1("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepRestoreL() - START - iCurrentJavaState: %d", iCurrentJavaState ); - - switch( iCurrentJavaState ) - { - case EJavaStateIdle: - __LOG("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepRestoreL() - EJavaStateIdle"); - RestoreMidletL(); - break; - case EJavaStateMidlet: - __LOG("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepRestoreL() - EJavaStateMidlet"); - RestoreMidletDataL(); - break; - case EJavaStateMidletData: - __LOG("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepRestoreL() - EJavaStateMidletData"); - iCurrentJavaState = EJavaStateIdle; - CompleteSelf(); - break; - default: - break; - } - - __LOG2("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousStateStepRestoreL() - END - iCurrentJavaState: %d, IsActive: %d", iCurrentJavaState, IsActive() ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousErrorCleanupBackup() -// -// -// --------------------------------------------------------------------------- -TBool CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousErrorCleanupBackup( TBool /*aPartial*/, TInt aError ) - { - (void) aError; - __LOG1("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousErrorCleanupBackup() - error: %d", aError ); - - // Reset state and move to next item. Treat the current (badly behaving) item - // as completed/processed. - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - if ( iIndexValueCurrent < dataOwners.Count() ) - { - CMMCScBkupDataOwnerInfo& owner = dataOwners.Owner( iIndexValueCurrent ); - owner.SetCompletionStatus( EMMCScBkupOwnerDataTypeJavaData, ETrue ); - iCurrentJavaState = EJavaStateIdle; - - __LOGFILE2("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousErrorCleanupBackup() - **** - error: %d, SID: 0x%08x - JAVA data skipped for DO", aError, owner.SecureId().iId ); - } - - CompleteSelf(); - return ETrue; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousErrorCleanupRestore() -// -// -// --------------------------------------------------------------------------- -TBool CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousErrorCleanupRestore( TBool /*aPartial*/, TInt aError ) - { - (void) aError; - __LOGFILE1("CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousErrorCleanupRestore() - **** - error: %d", aError ); - - iCurrentJavaState = EJavaStateIdle; - CompleteSelf(); - return ETrue; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousCancellation() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::PerformAsynchronousCancellation() - { - if (iBackupTransferObjectMidlet) - { - iBackupTransferObjectMidlet->Cancel(); - } - if (iBackupTransferObjectMidletData) - { - iBackupTransferObjectMidletData->Cancel(); - } - if (iRestoreTransferObjectMidlet) - { - iRestoreTransferObjectMidlet->Cancel(); - } - if (iRestoreTransferObjectMidletData) - { - iRestoreTransferObjectMidletData->Cancel(); - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::PerformLastRightsBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::PerformLastRightsBackupL( TBool /*aPartial*/ ) - { - CMMCScBkupIndexBase& index = Driver().DrvArchive().Footer().IndexByType( EMMCScBkupOwnerDataTypeJavaData ); - index.StoreL( Driver() ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::PerformLastRightsRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::PerformLastRightsRestoreL( TBool /*aPartial*/ ) - { - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::AddIndexRecordL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::AddIndexRecordL( CMMCScBkupArchiveFooter& aFooter, CMMCScBkupDataOwnerInfo& aDataOwner, const TMMCScBkupArchiveVector& aInfo, TDriveNumber aDrive ) - { - CMMCScBkupIndexBase& indexBase = aFooter.IndexByType( EMMCScBkupOwnerDataTypeJavaData ); - CMMCScBkupIndexJavaData& index = static_cast< CMMCScBkupIndexJavaData& >( indexBase ); - // - TJavaTransferType type = EJavaMIDlet; - HBufC* hash = MMCScBkupSBEUtils::JavaHashFromGenericLC( aDataOwner.Owner().Identifier() ); - // - if ( iCurrentJavaState == EJavaStateMidlet ) - { - __LOG4("CMMCScBkupStateArchiveOpJavaData::AddIndexRecordL() - hash: %S, aDrive: %c:, offset: %8d, length: %8d, type: EJavaMIDlet", hash, aDrive + 'A', aInfo.Offset(), aInfo.Length() ); - type = EJavaMIDlet; - } - else if ( iCurrentJavaState == EJavaStateMidletData ) - { - __LOG4("CMMCScBkupStateArchiveOpJavaData::AddIndexRecordL() - hash: %S, aDrive: %c:, offset: %8d, length: %8d, type: EJavaMIDletData", hash, aDrive + 'A', aInfo.Offset(), aInfo.Length() ); - type = EJavaMIDletData; - } - // - index.AddIndexRecordL( aInfo, *hash, aDrive, type ); - CleanupStack::PopAndDestroy( hash ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::BackupMidletL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::BackupMidletL() - { - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - const TInt count = dataOwners.Count(); - // - while ( ++iIndexValueCurrent < count ) - { - CMMCScBkupDataOwnerInfo& owner = dataOwners.Owner( iIndexValueCurrent ); - // - if ( owner.CompletionStatus( EMMCScBkupOwnerDataTypeJavaData ) == EFalse ) - { -#ifdef __MMCSCBKUPLOGGING_ENABLED__ - HBufC* hash = MMCScBkupSBEUtils::JavaHashFromGenericLC( owner.Owner().Identifier() ); - __LOG1("CMMCScBkupStateArchiveOpJavaData::BackupMidletL() - trying to get midlet for hash: %S", hash ); - CleanupStack::PopAndDestroy( hash ); -#endif - - iBackupTransferObjectMidlet->RequestL( owner, - iStatus, - Driver().DrvParamsBase().DriveAndOperations() ); - SetActive(); - iCurrentJavaState = EJavaStateMidlet; - - break; // while loop - } - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::BackupMidletDataL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::BackupMidletDataL() - { - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - CMMCScBkupDataOwnerInfo& owner = dataOwners.Owner( iIndexValueCurrent ); - - // We only need to request the midlet's passive data if it has a non-zero - // size. - if ( owner.CompletionStatus( EMMCScBkupOwnerDataTypePassiveData ) == EFalse ) - { - if ( owner.OperationalSize( EMMCScBkupOwnerDataTypePassiveData ) > 0 ) - { -#ifdef __MMCSCBKUPLOGGING_ENABLED__ - HBufC* hash = MMCScBkupSBEUtils::JavaHashFromGenericLC( owner.Owner().Identifier() ); - __LOG1("CMMCScBkupStateArchiveOpJavaData::BackupMidletDataL() - trying to get midlet data for hash: %S", hash ); - CleanupStack::PopAndDestroy( hash ); -#endif - - iBackupTransferObjectMidletData->RequestL( owner, - iStatus, - Driver().DrvParamsBase().DriveAndOperations() ); - SetActive(); - } - else - { - CompleteSelf(); - } - } - else - { - CompleteSelf(); - } - - iCurrentJavaState = EJavaStateMidletData; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::RestoreMidletL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::RestoreMidletL() - { - CMMCScBkupIndexBase& indexBase = Driver().DrvArchive().Footer().IndexByType( EMMCScBkupOwnerDataTypeJavaData ); - CMMCScBkupIndexJavaData& index = static_cast< CMMCScBkupIndexJavaData& >( indexBase ); - - const TInt count = index.Count(); - __LOG1("CMMCScBkupStateArchiveOpJavaData::RestoreMidletL() - START - %d data owners...", count ); - // - if ( ++iIndexValueCurrent < count ) - { - __LOG2("CMMCScBkupStateArchiveOpJavaData::RestoreMidletL() - getting java data index record [%03d/%03d]", iIndexValueCurrent, count); - const CMMCScBkupIndexJavaDataEntry& entry = index.At( iIndexValueCurrent ); - - // Get the associated data owner - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - - __LOG1("CMMCScBkupStateArchiveOpJavaData::RestoreMidletL() - trying to get data owner info for hash: %S", &entry.Hash() ); - CMMCScBkupDataOwnerInfo& owner = dataOwners.OwnerL( entry.Hash() ); - - if ( owner.CompletionStatus( EMMCScBkupOwnerDataTypeJavaData ) == EFalse ) - { - // Request all the java data (on all supported drives) for this - // particular data owner - __LOG3("CMMCScBkupStateArchiveOpJavaData::RestoreMidletL() - trying to restore JAVA MIDLET for hash: %S [offset: %8d, length: %8d]", &entry.Hash(), entry.MidletInfo().Offset(), entry.MidletInfo().Length() ); - - // Build restore entry list (will only contain one entry - the - // reader API forces an array interface on us, so let's do ou best - // to please it...) - const TMMCScBkupArchiveDriveAndVector driveAndVector( entry.Drive(), entry.MidletInfo() ); - iRestoreEntries.Reset(); - iRestoreEntries.AppendL( driveAndVector ); - - // Start the asynchronous restore op... - iRestoreTransferObjectMidlet->RequestL( owner, - iStatus, - iRestoreEntries ); - SetActive(); - } - else - { - CompleteSelf(); - } - - iCurrentJavaState = EJavaStateMidlet; - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpJavaData::RestoreMidletDataL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpJavaData::RestoreMidletDataL() - { - CMMCScBkupIndexBase& indexBase = Driver().DrvArchive().Footer().IndexByType( EMMCScBkupOwnerDataTypeJavaData ); - CMMCScBkupIndexJavaData& index = static_cast< CMMCScBkupIndexJavaData& >( indexBase ); - - const TInt count = index.Count(); - __LOG1("CMMCScBkupStateArchiveOpJavaData::RestoreMidletDataL() - START - %d data owners...", count ); - // - if ( iIndexValueCurrent < count ) - { - __LOG2("CMMCScBkupStateArchiveOpJavaData::RestoreMidletDataL() - getting java data index record [%03d/%03d]", iIndexValueCurrent, count); - const CMMCScBkupIndexJavaDataEntry& entry = index.At( iIndexValueCurrent ); - - if ( entry.HasMidletDataInfo() ) - { - // Get the associated data owner - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - - __LOG1("CMMCScBkupStateArchiveOpJavaData::RestoreMidletDataL() - trying to get data owner info for hash: %S", &entry.Hash() ); - CMMCScBkupDataOwnerInfo& owner = dataOwners.OwnerL( entry.Hash() ); - - if ( owner.CompletionStatus( EMMCScBkupOwnerDataTypePassiveData ) == EFalse ) - { - // Request all the java data (on all supported drives) for this - // particular data owner - __LOG3("CMMCScBkupStateArchiveOpJavaData::RestoreMidletDataL() - trying to restore JAVA MIDLET DATA for hash: %S [offset: %8d, length: %8d]", &entry.Hash(), entry.MidletDataInfo().Offset(), entry.MidletDataInfo().Length() ); - - // Build restore entry list (will only contain one entry - the - // reader API forces an array interface on us, so let's do ou best - // to please it...) - const TMMCScBkupArchiveDriveAndVector driveAndVector( entry.Drive(), entry.MidletDataInfo() ); - iRestoreEntries.Reset(); - iRestoreEntries.AppendL( driveAndVector ); - - // Start the asynchronous restore op... - iRestoreTransferObjectMidletData->RequestL( owner, - iStatus, - iRestoreEntries ); - SetActive(); - } - else - { - CompleteSelf(); - } - } - else - { - CompleteSelf(); - } - } - else - { - CompleteSelf(); - } - - iCurrentJavaState = EJavaStateMidletData; - } - - - - - - - - -