--- a/filemanager/bkupengine/src/CMMCScBkupStateArchiveOpPublicDataFiles.cpp Tue Feb 02 00:03:31 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,443 +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 <e32std.h>
-#include <s32strm.h>
-#include <s32mem.h>
-
-// 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<CMMCScBkupIndexPublicDataFiles&>( 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<CMMCScBkupIndexPublicDataFiles&>( 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<CMMCScBkupIndexPublicDataFiles&>(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.
-
- // First, find the associated data owner.
- CMMCScBkupDataOwnerInfo& owner = dataOwners.OwnerL( fileInfo.SecureId() );
-
- __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<CMMCScBkupIndexPublicDataFiles&>( 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();
- }
-
-
-