diff -r 76bddcd072ba -r 04ca1926b01c xdmprotocols/LocalProtocol/LocalOperations/src/LocalOperationBase.cpp --- a/xdmprotocols/LocalProtocol/LocalOperations/src/LocalOperationBase.cpp Thu May 27 13:17:17 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,263 +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: CLocalOperationBase -* -*/ - - - - - -// INCLUDES -#include "XdmXmlParser.h" -#include "LocalProtocol.h" -#include "LocalDocument.h" -#include "LocalOperationBase.h" - -// --------------------------------------------------------- -// C++ constructor can NOT contain any code, that -// might leave. -// --------------------------------------------------------- -// -CLocalOperationBase::CLocalOperationBase( const CLocalDocument& aTargetDoc, - CLocalOperationFactory& aOperationFactory ) : - iTargetDoc( CONST_CAST( CLocalDocument&, aTargetDoc ) ), - iOperationFactory( aOperationFactory ) - { - } - -// --------------------------------------------------------- -// Destructor -// -// --------------------------------------------------------- -// -CLocalOperationBase::~CLocalOperationBase() - { - iXmlFile.Close(); - delete iXmlParser; - delete iFileManager; - } - -// --------------------------------------------------------- -// CLocalOperationBase::BaseConstructL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::BaseConstructL() - { - iXmlParser = CXdmXmlParser::NewL(); - iFileManager = CFileMan::NewL( CLocalProtocol::FileSession() ); - } - -// --------------------------------------------------------- -// CLocalOperationBase::WriteFileL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::WriteFileL( const CXdmDocumentNode* aRootNode ) - { - __ASSERT_DEBUG( aRootNode != NULL, User::Panic( _L( "CLocalOperationBase" ), 1 ) ); - HBufC8* data = iXmlParser->FormatToXmlLC( ETrue, &iTargetDoc, aRootNode ); - User::LeaveIfError( iXmlFile.Write( data->Des() ) ); - CleanupStack::PopAndDestroy(); //data - GenerateTimeStampL(); - } - -// --------------------------------------------------------- -// CLocalOperationBase::GenerateTimeStampL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::GenerateTimeStampL() - { - RFile timeStamp; - HBufC8* time = TimeLC(); - HBufC* timeStampName = ConstructTimestampNameL(); - CleanupStack::PushL( timeStampName ); - User::LeaveIfError( timeStamp.Replace( CLocalProtocol::FileSession(), timeStampName->Des(), EFileWrite ) ); - User::LeaveIfError( timeStamp.Write( time->Des() ) ); - timeStamp.Close(); - CleanupStack::PopAndDestroy( 2 ); //timeStampName, time - } - -// --------------------------------------------------------- -// CLocalOperationBase::ConstructTimestampNameL -// -// --------------------------------------------------------- -// -HBufC* CLocalOperationBase::ConstructTimestampNameL() - { - const TChar backSlash = 92; - const TChar idSeparator = 46; - TInt index = iFullPath.LocateReverse( backSlash ); - TPtrC path = iFullPath.Left( index + 1 ); - HBufC* fileName = HBufC::NewLC( iTargetDoc.Name().Length() + KTimeStampFileExt().Length() ); - HBufC* fullPath = HBufC::NewLC( path.Length() + fileName->Des().MaxLength() ); - TPtr ptr( fileName->Des() ); - ptr.Copy( iTargetDoc.Name() ); - index = ptr.LocateReverse( idSeparator ); - TPtrC tmspName = index > 0 ? ptr.Left( index ) : ptr; - fullPath->Des().Copy( path ); - fullPath->Des().Append( tmspName ); - fullPath->Des().Append( KTimeStampFileExt ); - CleanupStack::Pop(); //fullPath - CleanupStack::PopAndDestroy(); //fileName - return fullPath; - } - -// --------------------------------------------------------- -// CLocalOperationBase::Time -// -// --------------------------------------------------------- -// -HBufC8* CLocalOperationBase::TimeLC() - { - TTime time; - TBuf dateBuffer; - time.HomeTime(); - time.FormatL( dateBuffer, KDateFormat ); - TBuf timeBuffer; - time.HomeTime(); - time.FormatL( timeBuffer, KTimeFormat ); - TBuf buffer; - buffer.SetLength( 0 ); - buffer.Copy( dateBuffer ); - buffer.Append( _L( " " ) ); - buffer.Append( timeBuffer ); - HBufC8* ret = HBufC8::NewLC( buffer.Length() ); - ret->Des().Copy( buffer ); - return ret; - } - -// --------------------------------------------------------- -// CLocalOperationBase::FetchXmlDataL -// -// --------------------------------------------------------- -// -HBufC8* CLocalOperationBase::FetchXmlDataL( TInt aFileSize ) - { - HBufC8* data = HBufC8::NewLC( aFileSize ); - TPtr8 desc( data->Des() ); - User::LeaveIfError( iXmlFile.Read( desc ) ); - CleanupStack::Pop(); //data - return data; - } - -// --------------------------------------------------------- -// CLocalOperationBase::FetchXmlDataL -// -// --------------------------------------------------------- -// -TInt CLocalOperationBase::OpenDataFileL( const TDesC& aFilePath ) - { - TInt length = 0; - iFullPath.Set( aFilePath ); - TInt error = iXmlFile.Open( CLocalProtocol::FileSession(), iFullPath, - EFileRead | EFileWrite | EFileShareExclusive ); - if( error != KErrNone ) - { - if( error == KErrPathNotFound ) - User::LeaveIfError( CLocalProtocol::FileSession().MkDirAll( CLocalProtocol::RootFolder() ) ); - error = iXmlFile.Create( CLocalProtocol::FileSession(), iFullPath, - EFileRead | EFileWrite | EFileShareExclusive ); - } - error = error == KErrNone ? iXmlFile.Size( length ) : KErrUnknown; - return error == KErrNone ? length : error; - } - -// --------------------------------------------------------- -// CLocalOperationBase::ReplaceDataFileL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::ReplaceDataFileL() - { - User::LeaveIfError( iXmlFile.Replace( CLocalProtocol::FileSession(), iFullPath, - EFileRead | EFileWrite | EFileShareExclusive ) ); - } - -// --------------------------------------------------------- -// CLocalOperationBase::DeleteDataFileL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::DeleteDataFileL() - { - User::LeaveIfError( CLocalProtocol::FileSession().Delete( iFullPath ) ); - HBufC* timeStampName = ConstructTimestampNameL(); - CleanupStack::PushL( timeStampName ); - User::LeaveIfError( CLocalProtocol::FileSession().Delete( timeStampName->Des() ) ); - CleanupStack::PopAndDestroy(); //timeStampName - } - -// --------------------------------------------------------- -// CLocalOperationBase::ExecuteL -// -// --------------------------------------------------------- -// -void CLocalOperationBase::ExecuteL( TRequestStatus& /*aStatus*/, TUint /*aOptions*/ ) - { - } - -// --------------------------------------------------------- -// CLocalOperationBase::CancelOperation -// -// --------------------------------------------------------- -// -void CLocalOperationBase::CancelOperation() - { - } - -// --------------------------------------------------------- -// CLocalOperationBase::CompletionData -// -// --------------------------------------------------------- -// -const TXdmCompletionData& CLocalOperationBase::CompletionData() const - { - return iCompletionData; - } - -// --------------------------------------------------------- -// CLocalOperationBase::IsCompleted -// -// --------------------------------------------------------- -// -TBool CLocalOperationBase::IsCompleted() const - { - return ETrue; - } - -// --------------------------------------------------------- -// CLocalOperationBase::TargetNode -// -// --------------------------------------------------------- -// -CXdmDocumentNode* CLocalOperationBase::TargetNode() const - { - return NULL; - } - -// --------------------------------------------------------- -// CLocalOperationBase::Result -// -// --------------------------------------------------------- -// -TInt CLocalOperationBase::Result() const - { - return KErrNone; - } - -// End of File -