diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/storage/src/ncdfilestorageimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/storage/src/ncdfilestorageimpl.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,182 @@ +/* +* Copyright (c) 2006 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 + +#include "ncdfilestorageimpl.h" +#include "ncdstorageowner.h" + +#include "catalogsdebug.h" + +// ======== MEMBER FUNCTIONS ======== + + +// --------------------------------------------------------------------------- +// ConstructL +// --------------------------------------------------------------------------- +// +void CNcdFileStorage::ConstructL( const TDesC& aUid, const TDesC& aPath ) + { + DLTRACEIN( ("") ); + + iRoot.CreateL( aPath ); + iUid.CreateL( aUid ); + + DLTRACEOUT( ( _L("Root: %S"), &iRoot ) ); + } + + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +// +CNcdFileStorage* CNcdFileStorage::NewL( MNcdStorageOwner& aOwner, + const TDesC& aUid, const TDesC& aPath ) + { + CNcdFileStorage* self = CNcdFileStorage::NewLC( aOwner, aUid, aPath ); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// NewLC +// --------------------------------------------------------------------------- +// +CNcdFileStorage* CNcdFileStorage::NewLC( MNcdStorageOwner& aOwner, + const TDesC& aUid, const TDesC& aPath ) + { + CNcdFileStorage* self = new( ELeave ) CNcdFileStorage( aOwner ); + CleanupStack::PushL( self ); + self->ConstructL( aUid, aPath ); + return self; + } + + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CNcdFileStorage::~CNcdFileStorage() + { + DLTRACEIN( ( "" ) ); + iRoot.Close(); + iUid.Close(); + } + + +// --------------------------------------------------------------------------- +// AddFileL +// --------------------------------------------------------------------------- +// +void CNcdFileStorage::AddFileL( const TDesC& aFilepath, TBool aOverwrite ) + { + if ( !aFilepath.Length() ) + { + User::Leave( KErrBadName ); + } + + DLTRACEIN( ( "" ) ); + TParse destPath; + + // Minimize stack usage + { + TParsePtrC source( aFilepath ); + User::LeaveIfError( destPath.Set( source.NameAndExt(), NULL, &iRoot ) ); + } + + DLTRACE( ( _L("Target: %S"), &destPath.FullName() ) ); + + + TUint overwrite( 0 ); + if ( aOverwrite ) + { + overwrite = CFileMan::EOverWrite; + } + + User::LeaveIfError( iOwner.FileManager().Move( aFilepath, + destPath.FullName(), overwrite ) ); + DLTRACEOUT( ( "" ) ); + } + + +// --------------------------------------------------------------------------- +// RemoveFileL +// --------------------------------------------------------------------------- +// +void CNcdFileStorage::RemoveFileL( const TDesC& aFilename ) + { + if ( !aFilename.Length() ) + { + User::Leave( KErrBadName ); + } + + TParse path; + User::LeaveIfError( path.Set( aFilename, NULL, &iRoot ) ); + //path.AddDir( iRoot ); + DLTRACE( ( _L("Trying to remove: %S"), &path.FullName() ) ); + User::LeaveIfError( iOwner.FileManager().Delete( path.FullName() ) ); + } + + +// --------------------------------------------------------------------------- +// OpenFileL +// --------------------------------------------------------------------------- +// +RFile CNcdFileStorage::OpenFileL( RFs& aFs, const TDesC& aFilename, + TUint aFileMode ) + { + DLTRACEIN(( _L("File: %S"), &aFilename )); + if ( !aFilename.Length() ) + { + User::Leave( KErrBadName ); + } + + TParse path; + User::LeaveIfError( path.Set( aFilename, NULL, &iRoot ) ); + //path.AddDir( iRoot ); + DLTRACE( ( _L("Filepath: %S"), &path.FullName() ) ); + + // Open the file + RFile file; + User::LeaveIfError( file.Open( aFs, path.FullName(), + aFileMode ) ); + return file; + } + + +// --------------------------------------------------------------------------- +// UID getter +// --------------------------------------------------------------------------- +// +const TDesC& CNcdFileStorage::Uid() const + { + return iUid; + } + + +// --------------------------------------------------------------------------- +// Constructor +// --------------------------------------------------------------------------- +// +CNcdFileStorage::CNcdFileStorage( MNcdStorageOwner& aOwner ) : + iOwner( aOwner ) + { + } + +