diff -r 491b3ed49290 -r 65326cf895ed filemanager/src/fmbkupengine/src/CMMCScBkupStateArchiveOpPublicDataFiles.cpp --- a/filemanager/src/fmbkupengine/src/CMMCScBkupStateArchiveOpPublicDataFiles.cpp Tue Aug 31 15:06:05 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,442 +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: CMMCScBkupStateArchiveOpPublicDataFiles implementation -* -* -*/ - -#include "CMMCScBkupStateArchiveOpPublicDataFiles.h" - -// System includes -#include -#include -#include - -// User includes -#include "MMCScBkupLogger.h" -#include "MMCScBkupConfig.h" -#include "CMMCScBkupArchive.h" -#include "CMMCScBkupArchiveFooter.h" -#include "CMMCScBkupIndexPublicDataFiles.h" -#include "MMMCScBkupArchiveDataInterface.h" -#include "CMMCScBkupFileInfo.h" -#include "CMMCScBkupFileListCollection.h" -#include "CMMCScBkupDataOwnerInfo.h" -#include "CMMCScBkupDataOwnerCollection.h" -#include "MMCScBkupOperations.h" - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::CMMCScBkupStateArchiveOpPublicDataFiles() -// -// C++ constructor. -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpPublicDataFiles::CMMCScBkupStateArchiveOpPublicDataFiles( MMMCScBkupDriver& aDriver ) -: CMMCScBkupStateOpAware( aDriver ), iIndexValueCurrent( -1 ) - { - __LOG1("CMMCScBkupStateArchiveOpPublicDataFiles::CMMCScBkupStateArchiveOpPublicDataFiles() - 0x%08x", StateId().iUid ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::NewL() -// -// -// --------------------------------------------------------------------------- -CMMCScBkupStateArchiveOpPublicDataFiles* CMMCScBkupStateArchiveOpPublicDataFiles::NewL( MMMCScBkupDriver& aDriver ) - { - CMMCScBkupStateArchiveOpPublicDataFiles* self = new(ELeave) CMMCScBkupStateArchiveOpPublicDataFiles( aDriver ); - return self; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::StateId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpPublicDataFiles::StateId() const - { - return KMMCScBkupStateIdArchiveOpPublicDataFiles; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::NextStateBackupId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpPublicDataFiles::NextStateBackupId( TBool /*aPartial*/ ) const - { - return KMMCScBkupStateIdArchiveOpSystemData; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::NextStateRestoreId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateArchiveOpPublicDataFiles::NextStateRestoreId( TBool /*aPartial*/ ) const - { - return KMMCScBkupStateIdOperationComplete; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::PerformStateInitBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::PerformStateInitBackupL( TBool /*aPartial*/ ) - { - __DEBUG_TESTING_SKIP_BACKUP_PUB_DATA; - - CompleteSelf(); - SetState( EStateCommonKickOff ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::PerformStateInitRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::PerformStateInitRestoreL( TBool /*aPartial*/ ) - { - __DEBUG_TESTING_SKIP_RESTORE_PUB_DATA; - - CompleteSelf(); - SetState( EStateCommonKickOff ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousStateStepBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousStateStepBackupL( TBool /*aPartial*/ ) - { - const TState justFinishedExecutingState = State(); - // - switch( justFinishedExecutingState ) - { - case EStateCommonKickOff: - CompressingAndWritingFileL(); - break; - case EStateCommonProcessingFile: - AddIndexRecordL(); - break; - case EStateBackupAddIndexRecord: - SetState( EStateCommonKickOff ); - CompleteSelf(); - break; - default: - ASSERT( EFalse ); - break; - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousStateStepRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousStateStepRestoreL( TBool /*aPartial*/ ) - { - const TState justFinishedExecutingState = State(); - // - switch( justFinishedExecutingState ) - { - case EStateCommonKickOff: - DecompressingAndWritingFileL(); - break; - case EStateCommonProcessingFile: - RestoreFileAttributesL(); - break; - case EStateRestoreResetAttributes: - SetState( EStateCommonKickOff ); - CompleteSelf(); - break; - default: - ASSERT( EFalse ); - break; - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousErrorCleanupBackup() -// -// -// --------------------------------------------------------------------------- -TBool CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousErrorCleanupBackup( TBool /*aPartial*/, TInt aError ) - { - (void) aError; - __LOG1("CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousErrorCleanupBackup() - **** - error: %d", aError ); - TBool continueProcessing = ETrue; - - // Reset state and move to next item. Treat the current (badly behaving) item - // as completed/processed. - const CMMCScBkupFileListCollection& fileList = Driver().DrvFileList(); - if ( iIndexValueCurrent < fileList.Count() ) - { - const CMMCScBkupFileInfo& fileInfo = fileList.Entry(iIndexValueCurrent); - (void) fileInfo; - - __LOGFILE2("CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousErrorCleanupBackup() - **** - error: %d, file: %S - public data skipped", aError, &fileInfo.FileName()); - - // Ensures that asynchronous state step is called again.. - CompleteSelf(); - SetState( EStateCommonKickOff ); - } - - return continueProcessing; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousErrorCleanupRestore() -// -// -// --------------------------------------------------------------------------- -TBool CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousErrorCleanupRestore( TBool /*aPartial*/, TInt aError ) - { - (void) aError; - __LOG1("CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousErrorCleanupRestore() - **** - error: %d", aError ); - TBool continueProcessing = ETrue; - - CMMCScBkupArchiveFooter& footer = Driver().DrvArchive().Footer(); - CMMCScBkupIndexPublicDataFiles& index = static_cast( footer.IndexByType( EMMCScBkupOwnerDataTypePublicData ) ); - const TInt count = index.Count(); - // - if ( iIndexValueCurrent < count ) - { - // Get the entry to restore - TMMCScBkupArchiveVector entryInfo; - const CMMCScBkupFileInfo& fileInfo = index.At( iIndexValueCurrent, entryInfo ); - (void) fileInfo; - - __LOGFILE2("CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousErrorCleanupRestore() - **** - error: %d, file: %S - public data skipped", aError, &fileInfo.FileName()); - - // Try to restore the next public file - //SetState( EStateCommonKickOff ); - SetState( EStateCommonProcessingFile ); - CompleteSelf(); - } - - return continueProcessing; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousCancellation() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::PerformAsynchronousCancellation() - { - switch( State() ) - { - case EStateCommonProcessingFile: - // Asynchronous request issued to ADI. - Driver().DrvADI().ADIAsynchronousCancel(); - break; - - case EStateCommonKickOff: - case EStateBackupAddIndexRecord: - case EStateRestoreResetAttributes: - // Other states complete this objects own request status => no action - // needed. - break; - - default: - case EStateCommonIdle: - ASSERT( EFalse ); - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::PerformLastRightsBackupL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::PerformLastRightsBackupL( TBool /*aPartial*/ ) - { - CMMCScBkupIndexBase& index = Driver().DrvArchive().Footer().IndexByType( EMMCScBkupOwnerDataTypePublicData ); - index.StoreL( Driver() ); - - Driver().DrvADI().ADIResetResources(EMMCScBkupOperationTypeFullBackup); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::PerformLastRightsRestoreL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::PerformLastRightsRestoreL( TBool /*aPartial*/ ) - { - Driver().DrvADI().ADIResetResources(EMMCScBkupOperationTypeFullRestore); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::CompressingAndWritingFileL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::CompressingAndWritingFileL() - { - const CMMCScBkupFileListCollection& fileList = Driver().DrvFileList(); - const TInt count = fileList.Count(); - // - if ( ++iIndexValueCurrent < count ) - { - const CMMCScBkupFileInfo& fileInfo = fileList.Entry(iIndexValueCurrent); - - __LOG1("CMMCScBkupStateArchiveOpPublicDataFiles::CompressingAndWritingFileL() - BACKUP - compressing file: %S", &fileInfo.FileName()); - - // Compress the file & externalise it to the archive - Driver().DrvADI().ADIWriteFileL( fileInfo.FileName(), iStatus ); - - // Indicate the state we are in - SetActive(); - SetState( EStateCommonProcessingFile ); - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::DecompressingAndWritingFileL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::DecompressingAndWritingFileL() - { - CMMCScBkupArchiveFooter& footer = Driver().DrvArchive().Footer(); - CMMCScBkupIndexPublicDataFiles& index = static_cast( footer.IndexByType( EMMCScBkupOwnerDataTypePublicData ) ); - const TInt count = index.Count(); - // - if ( ++iIndexValueCurrent < count ) - { - // Get the entry to restore - TMMCScBkupArchiveVector entryInfo; - const CMMCScBkupFileInfo& fileInfo = index.At( iIndexValueCurrent, entryInfo ); - - __LOG3("CMMCScBkupStateArchiveOpPublicDataFiles::DecompressingAndWritingFileL() - RESTORE - decompressing file: %S, offset: %8d, length: %8d", &fileInfo.FileName(), entryInfo.Offset(), entryInfo.Length()); - - // Restore it! - Driver().DrvADI().ADIReadFileL( fileInfo.FileName(), entryInfo, iStatus ); - - // Indicate the state we are in - SetActive(); - SetState( EStateCommonProcessingFile ); - } - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::AddIndexRecordL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::AddIndexRecordL() - { - CMMCScBkupDataOwnerCollection& dataOwners = Driver().DrvDataOwners(); - CMMCScBkupArchiveFooter& footer = Driver().DrvArchive().Footer(); - CMMCScBkupIndexPublicDataFiles& index = static_cast(footer.IndexByType(EMMCScBkupOwnerDataTypePublicData)); - const CMMCScBkupFileListCollection& fileList = Driver().DrvFileList(); - const CMMCScBkupFileInfo& fileInfo = fileList.Entry(iIndexValueCurrent); - - // Save the offset of the data owner - const TMMCScBkupArchiveVector& info = Driver().DrvADI().ADICurrentArchiveVectorInfo(); - index.AddIndexRecordL( info, fileInfo ); - - // And update the file info so that we can know how much compressed - // data must be read during restore. This allows us to report accurate - // progress info. See CMMCScBkupStateRequestListOfPublicFiles::PerformLastRightsL() - // for the point when the public data size is zeroed. - - - - __LOG3("CMMCScBkupStateArchiveOpPublicDataFiles::AddIndexRecordL() - offset: %6d, length: %6d, file: %S", info.Offset(), info.Length(), &fileInfo.FileName()); - - // Indicate the state we are in - SetState( EStateBackupAddIndexRecord ); - CompleteSelf(); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateArchiveOpPublicDataFiles::RestoreFileAttributesL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateArchiveOpPublicDataFiles::RestoreFileAttributesL() - { - RFs& fsSession = Driver().DrvADI().ADIFsSession(); - CMMCScBkupArchiveFooter& footer = Driver().DrvArchive().Footer(); - CMMCScBkupIndexPublicDataFiles& index = static_cast( footer.IndexByType( EMMCScBkupOwnerDataTypePublicData ) ); - - // Get the entry who's attributes need restoring - TMMCScBkupArchiveVector entryInfo; - const CMMCScBkupFileInfo& fileInfo = index.At( iIndexValueCurrent, entryInfo ); - - // If file is in Photo Album Thumbnail folder - // or file in videocenter folder and its subfolders - if ( fileInfo.FileName().MatchF( KMMCScBkupMediaGalleryThumbnailFolder ) != KErrNotFound ) - { - // Get folder path length - const TChar backslash('\\'); - const TInt pathlength = fileInfo.FileName().LocateReverseF( backslash ) + 1; - - // Set hidden attribute for Thumbnail folder. - // If folder does not exist, create it - fsSession.SetAtt( fileInfo.FileName().Left( pathlength ), KEntryAttHidden, KEntryAttNormal ); - } - - if ( fileInfo.FileName().MatchF( KMMCScBkupVideoCenterFolder ) != KErrNotFound) - { - // Get folder path length - const TChar backslash('\\'); - const TInt pathlength = fileInfo.FileName().LocateReverseF( backslash ) + 1; - - // Set hidden attribute for the video center's sub folder. - // If foler does not exist, create it - fsSession.SetAtt( fileInfo.FileName().Left( pathlength ), KEntryAttHidden, KEntryAttNormal ); - - //Manually set the videocenter main folder to be hidden - fsSession.SetAtt( KMMCScBkupVideoCenterFolderPath, KEntryAttHidden, KEntryAttNormal ); - } - // Set the original attributes, clear the others - const TInt error = fsSession.SetEntry( fileInfo.FileName(), - fileInfo.DateTime(), - fileInfo.Attributes(), - !fileInfo.Attributes() ); - - (void) error; - - - // Indicate the state we are in - SetState( EStateRestoreResetAttributes ); - CompleteSelf(); - } - - -