xdmprotocols/LocalProtocol/src/LocalDocument.cpp
branchGCC_SURGE
changeset 28 d9861ae9169c
parent 23 77cb48a03620
parent 26 04ca1926b01c
--- a/xdmprotocols/LocalProtocol/src/LocalDocument.cpp	Thu Jul 01 14:09:06 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,525 +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: CLocalDocument
-*
-*/
-
-
-
-
-// INCLUDE FILES
-#include <f32file.h>
-#include "XdmProtocol.h"
-#include "XdmNamespace.h"
-#include "XdmOperation.h"
-#include "XdmXmlParser.h"
-#include "LocalProtocol.h"
-#include "LocalDocument.h"
-#include "LocalDocumentNode.h"
-#include "XdmOperationFactory.h"
-
-// ----------------------------------------------------
-// CLocalDocument::CLocalDocument
-// 
-// ----------------------------------------------------
-//
-CLocalDocument::CLocalDocument( CXdmEngine& aXdmEngine,
-                                CLocalProtocol& aLocalProtocol ) :
-                                CXdmDocument( aXdmEngine ),
-                                iLocalProtocol( aLocalProtocol )
-    {
-    }
-
-
-// ----------------------------------------------------------
-// CLocalDocument::NewL
-// 
-// ----------------------------------------------------------
-//
-CLocalDocument* CLocalDocument::NewL( CXdmEngine& aXdmEngine,
-                                      const TDesC& aDocumentName,
-                                      CLocalProtocol& aLocalProtocol )
-    {   
-    CLocalDocument* self = new ( ELeave ) CLocalDocument( aXdmEngine, aLocalProtocol );
-    CleanupStack::PushL( self );
-    self->BaseConstructL( KLocalOperationFactory, aDocumentName );
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-    }
-    
-// ----------------------------------------------------------
-// CLocalDocument::ConstructL
-// 
-// ----------------------------------------------------------
-//
-void CLocalDocument::ConstructL()
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::ConstructL()" ) );
-    #endif
-    TPtrC name = iDocumentName->Des();
-    TPtrC root = iLocalProtocol.RootFolder();
-    iFullPath = HBufC::NewL( name.Length() + root.Length() );
-    iFullPath->Des().Copy( root );
-    iFullPath->Des().Append( name );
-    FetchTimeStampL();
-    CActiveScheduler::Add( this );
-    }
-
-// ----------------------------------------------------------
-// CLocalDocument::ResetContents
-// 
-// ----------------------------------------------------------
-//
-void CLocalDocument::ResetContents()
-    {
-    delete iDocumentRoot;
-    iDocumentRoot = NULL;
-    iNamespaces.ResetAndDestroy();
-    }
-
-// ----------------------------------------------------------
-// CLocalDocument::FetchTimeStampL
-// 
-// ----------------------------------------------------------
-//
-void CLocalDocument::FetchTimeStampL()
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::FetchTimeStampL()" ) );
-    #endif
-    RFile timeStamp;
-    TBuf8<KDateTimeMaxSize> buf;
-    TBuf<KDateTimeMaxSize> buf16;
-    const TChar idSeparator = 46;
-    TPtrC fullPath( iFullPath->Des() );
-    HBufC* path = HBufC::NewLC( fullPath.Length() + KTimeStampFileExt().Length() );
-    TInt index = fullPath.LocateReverse( idSeparator );
-    TPtrC tmspName( index > 0 ? fullPath.Left( index ) : fullPath );
-    path->Des().Copy( tmspName );
-    path->Des().Append( KTimeStampFileExt );
-    TInt error = timeStamp.Open( CLocalProtocol::FileSession(), path->Des(), EFileRead );
-    if( error == KErrNone )
-        {
-        CleanupClosePushL( timeStamp );
-        User::LeaveIfError( timeStamp.Read( buf ) );
-        buf16.Copy( buf );
-        buf.Zero();
-        User::LeaveIfError( iLastModification.Parse( buf16 ) );
-        CleanupStack::PopAndDestroy();  //timeStamp
-        }
-    CleanupStack::PopAndDestroy();  //path
-    }
-// ----------------------------------------------------
-// CLocalDocument::~CLocalDocument
-// 
-// ----------------------------------------------------
-//
-CLocalDocument::~CLocalDocument()
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::~CLocalDocument()" ) );
-    #endif
-    Cancel();
-    delete iFullPath;
-    delete iDocumentRoot;
-    iNamespaces.ResetAndDestroy();
-    }
-
-// ----------------------------------------------------
-// CLocalDocument::CreateRootL
-// 
-// ----------------------------------------------------
-//
-CXdmDocumentNode* CLocalDocument::CreateRootL()
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::DocumentSubsetL()" ) );
-    #endif
-    iDocumentRoot = CLocalDocumentNode::NewL( iXdmEngine, iLocalProtocol );
-    return iDocumentRoot;
-    }
-
-// ----------------------------------------------------
-// CLocalDocument::TempCopyL
-// 
-// ----------------------------------------------------
-//
-EXPORT_C CLocalDocument* CLocalDocument::TempCopyL()
-    {
-    return CLocalDocument::NewL( iXdmEngine, Name(), iLocalProtocol );
-    }
-        
-// ----------------------------------------------------
-// CLocalDocument::DocumentRoot
-// 
-// ----------------------------------------------------
-//
-CXdmDocumentNode* CLocalDocument::DocumentRoot() const
-    {
-    return iDocumentRoot;
-    }    
-
-// ----------------------------------------------------
-// CLocalDocument::ErrorRoot
-// 
-// ----------------------------------------------------
-//
-CXdmDocumentNode* CLocalDocument::ErrorRoot()
-    {
-    return NULL;
-    }
-
-// ----------------------------------------------------
-// CLocalDocument::ErrorRoot
-// 
-// ----------------------------------------------------
-//
-TXdmDocType CLocalDocument::DocumentType() const
-    {
-    return EXdmDocGeneral;
-    }
-              
-// ----------------------------------------------------
-// CLocalDocument::IsSubset
-// 
-// ----------------------------------------------------
-//
-EXPORT_C TBool CLocalDocument::IsSubset() const
-    {
-    return iDocSubset; 
-    }
-
-// ----------------------------------------------------
-// CLocalDocument::ResetSubset
-// 
-// ----------------------------------------------------
-//
-EXPORT_C void CLocalDocument::ResetSubset()
-    {
-    CXdmDocument::ResetSubset();
-    delete iDocumentRoot;
-    iDocumentRoot = NULL;
-    }
-
-// ----------------------------------------------------
-// CLocalDocument::XmlFilePath
-// 
-// ------------------------------ ----------------------
-//
-EXPORT_C TPtrC CLocalDocument::XmlFilePath() const
-    {
-    return iFullPath != NULL ? iFullPath->Des() : TPtrC();
-    }
-    
-// ----------------------------------------------------
-// CLocalDocument::RemoveData
-// 
-// ----------------------------------------------------
-//
-EXPORT_C void CLocalDocument::RemoveData( CLocalDocumentNode* /*aDocumentNode*/ )
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::RemoveData()" ) );
-    #endif
-    
-    }
-           
-// ----------------------------------------------------
-// CLocalDocument::StartUpdateL
-// 
-// ----------------------------------------------------
-//
-void CLocalDocument::StartUpdateL()
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::StartUpdateL()" ) );
-    #endif
-    TBool keepGoing = ETrue;
-    TInt completion = KErrNone;
-    TInt count = iChangeRequests.Count();
-    for( TInt i = 0;keepGoing && i < count;i++ )
-        {
-        //"First in, first served"
-        TRAPD( error, iChangeRequests[0]->ExecuteL() );
-        if( error == KErrNone )
-            {
-            #ifdef _DEBUG
-                iLocalProtocol.WriteToLog( _L8( " Execution of the operation no. %d was successful" ), i );
-            #endif
-            }
-        else
-            {
-            #ifdef _DEBUG
-                iLocalProtocol.WriteToLog( _L8( " Execution of the operation no. %d failed with %d" ), i, error );
-            #endif
-            completion = error;
-            keepGoing = EFalse;
-            }
-        FinaliseOperation( 0 );
-        }
-    User::RequestComplete( iClientStatus, completion );
-    }
-
-// ----------------------------------------------------
-// CLocalProtocol::AppendPathPartL
-// 
-// ----------------------------------------------------
-//
-void CLocalDocument::AppendPathPartL( const TDesC& aString )
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::PathPartL()" ) );
-    #endif
-    if( iDocumentRoot != NULL )
-        {
-        CXdmDocumentNode* node = NULL;
-        CXdmDocumentNode* parent = iDocumentRoot;
-        while( parent->NextNode() != NULL )
-            parent = parent->NextNode();
-        node = CLocalDocumentNode::NewL( iXdmEngine, aString, parent, iLocalProtocol );
-        parent->SetNextNode( node );
-        }
-    else
-        iDocumentRoot = CLocalDocumentNode::NewL( iXdmEngine, aString, iLocalProtocol );
-    }
-
-// ----------------------------------------------------
-// CLocalProtocol::CurrentExtent
-// 
-// ----------------------------------------------------
-//
-CXdmDocumentNode* CLocalDocument::CurrentExtent() const
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::CurrentExtent()" ) );
-    #endif
-    CXdmDocumentNode* ret = NULL;
-    if( iDocumentRoot != NULL )
-        {
-        CXdmDocumentNode* node = iDocumentRoot;
-        while( node->NextNode() != NULL )
-            node = node->NextNode();
-        ret = node;
-        }
-    else
-        {
-        #ifdef _DEBUG
-            iLocalProtocol.WriteToLog( _L8( " This document does not yet have a root, leave with KErrGeneral" ) );
-        #endif
-        User::Leave( KErrGeneral );
-        }
-    return ret;
-    }
-    
-// ----------------------------------------------------
-// CLocalDocument::StartUpdateL
-// 
-// ----------------------------------------------------
-//
-void CLocalDocument::StartInternalL( TRequestStatus& aStatus )
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::StartInternalL()" ) );
-    #endif
-    aStatus = KRequestPending;
-    iClientStatus = &aStatus;
-    StartUpdateL();
-    }
-    
-// ----------------------------------------------------
-// CLocalDocument::CancelUpdate
-// 
-// ----------------------------------------------------
-//
-void CLocalDocument::CancelUpdate()
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::CancelUpdate()" ) );
-    #endif
-    User::RequestComplete( iClientStatus, KErrCancel );
-    }
-
-// ---------------------------------------------------------
-// CLocalDocument::RunL()
-// 
-// ---------------------------------------------------------
-//
-void CLocalDocument::RunL()
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::RunL()" ) );
-    #endif
-    }
-
-// ----------------------------------------------------
-// CLocalDocument::FinaliseOperation
-// 
-// ----------------------------------------------------
-//
-void CLocalDocument::FinaliseOperation( TInt aIndex )
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::FinaliseOperation()" ) );
-    #endif
-    TInt count = iChangeRequests.Count();
-    if( count > 0 && ( aIndex >= 0 && aIndex < count ) )
-        {
-        MXdmOperation* operation = NULL;
-        operation = iChangeRequests[aIndex];
-        iChangeRequests.Remove( aIndex );
-        operation->Destroy();
-        operation = NULL;
-        }
-    }
-
-// ---------------------------------------------------------
-// CLocalDocument::AppendNamespaceL
-// 
-// ---------------------------------------------------------
-//
-void CLocalDocument::AppendNamespaceL( const TDesC8& aUri, const TDesC8& aPrefix )
-    {
-    CXdmNamespace* ns = CXdmNamespace::NewL( aUri, aPrefix );
-    CleanupStack::PushL( ns );
-    User::LeaveIfError( iNamespaces.Append( ns ) );
-    CleanupStack::Pop();  //ns
-    }
-
-// ---------------------------------------------------------
-// CXcapDocument::RemoveNamespace
-// 
-// ---------------------------------------------------------
-//
-void CLocalDocument::RemoveNamespace( const TDesC8& aUri )
-    {
-    TBool found = EFalse;
-    CXdmNamespace* ns = NULL;
-    TInt count = iNamespaces.Count();
-    for( TInt i = 0;!found && i < count;i++ )
-        {
-        ns = iNamespaces[i];
-        if( ns->Uri().Compare( aUri ) == 0 )
-            {
-            found = ETrue;
-            iNamespaces.Remove( i );
-            delete ns;
-            ns = NULL;
-            }
-        }
-    }
-                
-// ---------------------------------------------------------
-// CLocalDocument::Uri
-// 
-// ---------------------------------------------------------
-//
-TPtrC8 CLocalDocument::Uri( const TDesC8& aPrefix ) const
-    {
-    TPtrC8 uri( _L8( "" ) );
-    TBool found = EFalse;
-    TInt count = iNamespaces.Count();
-    for( TInt i = 0;i < count && !found;i++ )
-        {
-        if( iNamespaces[i]->Prefix().Compare( aPrefix ) == 0 )
-            {
-            uri.Set( iNamespaces[i]->Uri() );
-            found = ETrue;
-            }
-        }
-    return uri;
-    }
-
-// ---------------------------------------------------------
-// CLocalDocument::Count
-// 
-// ---------------------------------------------------------
-//
-TInt CLocalDocument::Count() const
-    {
-    return iNamespaces.Count();
-    }
-
-// ---------------------------------------------------------
-// CLocalDocument::Prefix
-// 
-// ---------------------------------------------------------
-//
-TPtrC8 CLocalDocument::Prefix( TInt aIndex ) const
-    {
-    TInt count = iNamespaces.Count();
-    if( count > 0 && ( aIndex >= 0 && aIndex < count ) )
-        return iNamespaces[aIndex]->Prefix();
-    else return TPtrC8();
-    }
-    
-// ---------------------------------------------------------
-// CLocalDocument::Uri
-// 
-// ---------------------------------------------------------
-//
-TPtrC8 CLocalDocument::Uri( TInt aIndex ) const
-    {
-    TInt count = iNamespaces.Count();
-    if( count > 0 && ( aIndex >= 0 && aIndex < count ) )
-        return iNamespaces[aIndex]->Uri();
-    else return TPtrC8();
-    }
-    
-// ---------------------------------------------------------
-// CLocalDocument::ResetNamespaces
-// 
-// ---------------------------------------------------------
-//
-void CLocalDocument::ResetNamespaces( ) 
-    {   
-    iNamespaces.ResetAndDestroy();
-    }   
-    
-// ---------------------------------------------------------
-// CLocalDocument::TimeStamp
-// 
-// ---------------------------------------------------------
-//
-TTime CLocalDocument::TimeStamp() const
-    {
-    return iLastModification;
-    }
-
-// ---------------------------------------------------------
-// CLocalDocument::SaveClientStatus
-// 
-// ---------------------------------------------------------
-//   
-void CLocalDocument::SaveClientStatus( TRequestStatus& aStatus )
-    {
-    iClientStatus = &aStatus;
-    }
-    
-// ---------------------------------------------------------
-// CLocalDocument::DoCancel
-// 
-// ---------------------------------------------------------
-//
-void CLocalDocument::DoCancel()
-    {
-    #ifdef _DEBUG
-        iLocalProtocol.WriteToLog( _L8( "CLocalDocument::DoCancel()" ) );
-    #endif
-    }
-
-
-
-