XDMEngine/src/XdmDocument.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:23:14 +0100
branchRCL_3
changeset 35 fbd2e7cec7ef
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201027 Kit: 201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     1
/*
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     2
* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     3
* All rights reserved.
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     8
*
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
     9
* Initial Contributors:
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    11
*
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    12
* Contributors:
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    13
*
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    14
* Description:   XDM Engine document
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    15
*
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    16
*/
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    17
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    18
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    19
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    20
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    21
// INCLUDE FILES
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    22
#include <f32file.h>
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    23
#include "XdmEngine.h"
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    24
#include "XdmProtocol.h"
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    25
#include "XdmDocument.h"
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    26
#include "XdmOperation.h"
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    27
#include "XdmDocumentNode.h"
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    28
#include "XdmNodeAttribute.h"
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    29
#include "XdmOperationFactory.h"
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    30
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    31
// ----------------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    32
// CXdmDocument::CXdmDocument
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    33
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    34
// ----------------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    35
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    36
EXPORT_C CXdmDocument::CXdmDocument( CXdmEngine& aXdmEngine ) :
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    37
                                     CActive( EPriorityStandard ),
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    38
                                     iDocSubset( EFalse ),
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    39
                                     iXdmEngine( aXdmEngine )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    40
                                                
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    41
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    42
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    43
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    44
// ----------------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    45
// CXdmDocument::BaseConstructL( 16-bit )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    46
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    47
// ----------------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    48
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    49
EXPORT_C void CXdmDocument::BaseConstructL( TInt aOperationFactoryUid,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    50
                                            const TDesC& aDocumentName )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    51
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    52
    delete iDocumentName;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    53
    iDocumentName = NULL;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    54
    iDocumentName = HBufC::NewL( aDocumentName.Length() );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    55
    iDocumentName->Des().Copy( aDocumentName );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    56
    iOperationFactory = CXdmOperationFactory::NewL( aOperationFactoryUid );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    57
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    58
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    59
// ----------------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    60
// CXdmDocument::BaseConstructL( 8-bit )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    61
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    62
// ----------------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    63
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    64
EXPORT_C void CXdmDocument::BaseConstructL( TInt aOperationFactoryUid,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    65
                                            const TDesC8& aDocumentName )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    66
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    67
    delete iDocumentName;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    68
    iDocumentName = NULL;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    69
    iDocumentName = HBufC::NewL( aDocumentName.Length() );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    70
    iDocumentName->Des().Copy( aDocumentName );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    71
    iOperationFactory = CXdmOperationFactory::NewL( aOperationFactoryUid );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    72
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    73
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    74
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    75
// CXdmDocument::~CXdmDocument
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    76
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    77
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    78
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    79
EXPORT_C CXdmDocument::~CXdmDocument()
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    80
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    81
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    82
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::~CXdmDocument()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    83
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    84
    delete iDocumentName;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    85
    EmptyOperationQueue();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    86
    iChangeRequests.Close();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    87
    delete iOperationFactory;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    88
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    89
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    90
// ---------------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    91
// CXdmDocument::EmptyOperationQueue
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    92
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    93
// ---------------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    94
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    95
void CXdmDocument::EmptyOperationQueue()
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    96
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    97
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    98
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::EmptyOperationQueue()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
    99
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   100
    
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   101
    while (iChangeRequests.Count())
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   102
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   103
        MXdmOperation* operation = iChangeRequests[0];
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   104
        iChangeRequests.Remove( 0 );    
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   105
        operation->Destroy();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   106
        operation = NULL;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   107
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   108
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   109
    
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   110
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   111
// CXdmDocument::FetchDataL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   112
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   113
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   114
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   115
EXPORT_C void CXdmDocument::FetchDataL( CXdmDocumentNode* aDocNode )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   116
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   117
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   118
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::FetchDataL()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   119
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   120
    MXdmOperation* operation = iOperationFactory->FetchL( *this, aDocNode );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   121
    CleanupStack::PushL( operation );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   122
    User::LeaveIfError( iChangeRequests.Append( operation ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   123
    CleanupStack::Pop();  //operation
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   124
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   125
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   126
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   127
// CXdmDocument::ReplaceL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   128
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   129
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   130
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   131
EXPORT_C void CXdmDocument::ReplaceL( CXdmDocumentNode* aOldNode,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   132
                                      CXdmDocumentNode* aNewNode )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   133
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   134
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   135
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::ReplaceL()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   136
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   137
    if( aOldNode->Parent() == aNewNode->Parent() )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   138
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   139
        MXdmOperation* operation = iOperationFactory->ReplaceL(
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   140
                                    *this, aOldNode, aNewNode );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   141
        CleanupStack::PushL( operation );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   142
        User::LeaveIfError( iChangeRequests.Append( operation ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   143
        CleanupStack::Pop();  //operation
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   144
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   145
    else
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   146
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   147
        #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   148
            iXdmEngine.WriteToLog( _L8( "  Different parents, leaves!" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   149
        #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   150
        User::Leave( KErrGeneral );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   151
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   152
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   153
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   154
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   155
// CXdmDocument::ReplaceL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   156
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   157
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   158
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   159
EXPORT_C void CXdmDocument::ReplaceL()
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   160
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   161
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   162
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::ReplaceL()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   163
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   164
    MXdmOperation* operation = iOperationFactory->ReplaceL( *this, NULL, NULL ); 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   165
    CleanupStack::PushL( operation );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   166
    User::LeaveIfError( iChangeRequests.Append( operation ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   167
    CleanupStack::Pop();  //operation
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   168
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   169
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   170
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   171
// CXdmDocument::InsertL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   172
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   173
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   174
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   175
EXPORT_C void CXdmDocument::InsertL( CXdmDocumentNode* aDocNode )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   176
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   177
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   178
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::InsertL()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   179
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   180
    __ASSERT_DEBUG( aDocNode != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   181
    MXdmOperation* operation = iOperationFactory->InsertL(
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   182
                                *this, aDocNode );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   183
    CleanupStack::PushL( operation );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   184
    User::LeaveIfError( iChangeRequests.Append( operation ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   185
    CleanupStack::Pop();  //operation
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   186
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   187
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   188
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   189
// CXdmDocument::AppendL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   190
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   191
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   192
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   193
EXPORT_C void CXdmDocument::AppendL( CXdmDocumentNode* aDocNode )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   194
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   195
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   196
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::AppendL()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   197
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   198
    MXdmOperation* operation = 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   199
        iOperationFactory->AppendL( *this, aDocNode );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   200
    CleanupStack::PushL( operation );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   201
    User::LeaveIfError( iChangeRequests.Append( operation ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   202
    CleanupStack::Pop();  //operation
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   203
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   204
      
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   205
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   206
// CXdmDocument::DeleteDataL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   207
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   208
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   209
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   210
EXPORT_C void CXdmDocument::DeleteDataL( CXdmDocumentNode* aDocNode )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   211
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   212
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   213
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::DeleteDataL()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   214
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   215
    MXdmOperation* operation = aDocNode == NULL ?
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   216
        iOperationFactory->DeletionL( *this, NULL ) :
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   217
        iOperationFactory->DeletionL( *this, aDocNode );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   218
    CleanupStack::PushL( operation );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   219
    User::LeaveIfError( iChangeRequests.Append( operation ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   220
    CleanupStack::Pop();  //operation
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   221
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   222
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   223
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   224
// CXdmDocument::Find
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   225
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   226
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   227
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   228
EXPORT_C TInt CXdmDocument::Find( const CXdmDocumentNode& aTargetNode,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   229
                                  RPointerArray<CXdmDocumentNode>& aResultArray ) const
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   230
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   231
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   232
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::Find()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   233
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   234
    TInt error = KErrNone;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   235
    CXdmDocumentNode* root = DocumentRoot();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   236
    __ASSERT_ALWAYS( root != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   237
    if( root->NodeName().Compare( aTargetNode.NodeName() ) == 0 )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   238
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   239
        TBool found = EFalse;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   240
        TInt attrCount = root->AttributeCount();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   241
        TInt attrCount2 = aTargetNode.AttributeCount();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   242
        if( attrCount > 0 && attrCount == attrCount2 )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   243
            {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   244
            SXdmAttribute16 attribute;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   245
            for( TInt i = 0;i < attrCount;i++ )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   246
                {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   247
                attribute.iName.Set( aTargetNode.Attribute( i )->NodeName() );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   248
                attribute.iValue.Set( aTargetNode.Attribute( i )->AttributeValue() );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   249
                found = root->HasAttribute( attribute );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   250
                }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   251
            }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   252
        error = found ? aResultArray.Append( root ) : KErrNotFound;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   253
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   254
    else
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   255
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   256
        #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   257
            iXdmEngine.WriteToLog( _L8( " Root does not match, search child nodes" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   258
        #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   259
        error = root->Find( aTargetNode, aResultArray ); 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   260
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   261
    TInt count = aResultArray.Count();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   262
    return error == KErrNone && count > 0 ? count : KErrNotFound;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   263
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   264
    
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   265
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   266
// CXdmDocument::Find
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   267
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   268
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   269
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   270
EXPORT_C TInt CXdmDocument::Find( const TDesC& aNodeName,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   271
                                  RPointerArray<CXdmDocumentNode>& aResultArray,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   272
                                  const RPointerArray<SXdmAttribute16>& aAttributeArray ) const
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   273
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   274
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   275
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::Find()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   276
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   277
    TInt error = KErrNone;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   278
    CXdmDocumentNode* root = DocumentRoot();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   279
    __ASSERT_ALWAYS( root != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   280
    if( root->NodeName().Compare( aNodeName ) == 0 )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   281
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   282
        TBool found = EFalse;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   283
        TInt attrCount = root->AttributeCount();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   284
        if( attrCount > 0 )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   285
            {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   286
            for( TInt i = 0;i < attrCount;i++ )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   287
                found = root->HasAttribute( *aAttributeArray[i] );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   288
            }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   289
        error = found ? aResultArray.Append( root ) : KErrNotFound;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   290
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   291
    else
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   292
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   293
        #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   294
            iXdmEngine.WriteToLog( _L8( " Root does not match, search child nodes" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   295
        #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   296
        error = root->Find( aNodeName, aResultArray, aAttributeArray ); 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   297
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   298
    TInt count = aResultArray.Count();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   299
    return error == KErrNone && count > 0 ? count : KErrNotFound;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   300
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   301
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   302
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   303
// CXdmDocument::Find
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   304
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   305
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   306
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   307
EXPORT_C TInt CXdmDocument::Find( const TDesC& aNodeName,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   308
                                  RPointerArray<CXdmDocumentNode>& aResultArray ) const
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   309
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   310
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   311
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::Find()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   312
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   313
    TInt error = KErrNone;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   314
    CXdmDocumentNode* root = DocumentRoot();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   315
    __ASSERT_ALWAYS( root != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   316
    if( root->NodeName().Compare( aNodeName ) == 0 )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   317
        error = aResultArray.Append( root );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   318
    else
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   319
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   320
        #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   321
            iXdmEngine.WriteToLog( _L8( " Root does not match, search child nodes" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   322
        #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   323
        error = root->Find( aNodeName, aResultArray ); 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   324
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   325
    TInt count = aResultArray.Count();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   326
    return error == KErrNone && count > 0 ? count : KErrNotFound;                            
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   327
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   328
    
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   329
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   330
// CXcapDocument::operator==
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   331
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   332
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   333
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   334
EXPORT_C TBool CXdmDocument::operator==( CXdmDocument& aDocument ) const
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   335
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   336
    CXdmDocumentNode* root1 = DocumentRoot();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   337
    CXdmDocumentNode* root2 = aDocument.DocumentRoot();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   338
    __ASSERT_ALWAYS( root1 != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   339
    __ASSERT_ALWAYS( root2 != NULL, User::Panic( _L( "CXcapDocument" ), EDocNodeNull ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   340
    return Name().Compare( aDocument.Name() ) == 0 ? *root1 == *root2 : EFalse;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   341
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   342
    
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   343
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   344
// CXdmDocument::Name
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   345
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   346
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   347
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   348
EXPORT_C TPtrC CXdmDocument::Name() const
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   349
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   350
    return iDocumentName != NULL ? iDocumentName->Des() : TPtrC();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   351
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   352
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   353
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   354
// CXdmDocument::Find
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   355
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   356
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   357
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   358
EXPORT_C TInt CXdmDocument::Find( const TDesC& aAttributeName,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   359
                                  RPointerArray<CXdmNodeAttribute>& aResultArray ) const
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   360
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   361
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   362
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::Find()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   363
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   364
    TInt error = KErrNone;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   365
    CXdmDocumentNode* root = DocumentRoot();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   366
    __ASSERT_ALWAYS( root != NULL, User::Panic( _L( "CXdmDocument" ), EDocNodeNull ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   367
    error = DoFindAttributes( root, aAttributeName, aResultArray ); 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   368
    TInt count = aResultArray.Count();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   369
    return error == KErrNone && count > 0 ? count : KErrNotFound;                
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   370
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   371
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   372
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   373
// CXdmDocument::RemoveFromModelL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   374
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   375
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   376
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   377
EXPORT_C void CXdmDocument::RemoveFromModelL( CXdmDocumentNode* aChileNode )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   378
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   379
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   380
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::RemoveFromModel()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   381
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   382
    if( !iDocSubset )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   383
        {       
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   384
        CXdmDocumentNode* parent = aChileNode->Parent();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   385
        parent != NULL ? parent->RemoveChileNodeL( aChileNode ) : User::Leave( KErrArgument);
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   386
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   387
    else User::Leave( KErrGeneral );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   388
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   389
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   390
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   391
// CXdmDocument::ResetSubset
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   392
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   393
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   394
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   395
EXPORT_C void CXdmDocument::ResetSubset()
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   396
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   397
    iDocSubset = EFalse;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   398
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   399
      
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   400
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   401
// CXdmDocument::AppendToModelL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   402
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   403
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   404
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   405
EXPORT_C void CXdmDocument::AppendToModelL( CXdmDocumentNode* aNewNode,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   406
                                            CXdmDocumentNode* aParentNode )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   407
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   408
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   409
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::AppendToModelL()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   410
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   411
    if( !iDocSubset )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   412
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   413
        if( aNewNode != NULL && aParentNode != NULL )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   414
            aParentNode->AppendChileNodeL( aNewNode );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   415
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   416
    else User::Leave( KErrGeneral );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   417
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   418
        
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   419
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   420
// CXdmDocument::ReplaceInModelL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   421
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   422
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   423
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   424
EXPORT_C void CXdmDocument::ReplaceInModelL( CXdmDocumentNode* aNewNode,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   425
                                             CXdmDocumentNode* aTargetNode )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   426
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   427
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   428
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::ReplaceInModelL()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   429
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   430
    if( !iDocSubset )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   431
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   432
        CXdmDocumentNode* parent = aTargetNode->Parent();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   433
        parent != NULL ? parent->ReplaceChileNodeL( aNewNode, aTargetNode ) : User::Leave( KErrArgument);                                    
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   434
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   435
    else User::Leave( KErrGeneral );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   436
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   437
                                       
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   438
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   439
// CXdmDocument::DocumentSubsetL
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   440
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   441
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   442
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   443
EXPORT_C CXdmDocumentNode* CXdmDocument::DocumentSubsetL( const TDesC& aNodePath )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   444
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   445
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   446
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::DocumentSubsetL()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   447
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   448
    TBool ready = EFalse;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   449
    HBufC* temp = HBufC::NewLC( aNodePath.Length() );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   450
    temp->Des().Copy( aNodePath );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   451
    TPtr nodePath( temp->Des() );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   452
    while( !ready && nodePath.Length() != 0 )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   453
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   454
        TPtrC part;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   455
        TInt index = nodePath.LocateF( KXdmPathSeparatorChar );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   456
        if( index > 0 )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   457
            part.Set( nodePath.Left( index ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   458
        else
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   459
            {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   460
            part.Set( nodePath );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   461
            ready = ETrue;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   462
            }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   463
        AppendPathPartL( part );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   464
        nodePath.Delete( 0, index + 1 );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   465
        }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   466
    iDocSubset = ETrue;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   467
    CleanupStack::PopAndDestroy();  //temp
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   468
    return CurrentExtent();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   469
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   470
        
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   471
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   472
// CXdmDocument::DoFindAttributes
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   473
// 
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   474
// ----------------------------------------------------
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   475
//
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   476
TInt CXdmDocument::DoFindAttributes( CXdmDocumentNode* aNode,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   477
								     const TDesC& aAttributeName,
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   478
                                     RPointerArray<CXdmNodeAttribute>& aResultArray ) const
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   479
    {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   480
    #ifdef _DEBUG
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   481
        iXdmEngine.WriteToLog( _L8( "CXdmDocument::DoFindAttributes()" ) );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   482
    #endif
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   483
    TInt error = KErrNone;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   484
	CXdmDocumentNode* node = aNode;
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   485
	TInt attrCount = aNode->AttributeCount();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   486
    for( TInt i = 0; i < attrCount; i++ )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   487
        {
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   488
		CXdmNodeAttribute* attr = node->Attribute( i );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   489
	   	if( !attr->NodeName().CompareF( aAttributeName ) )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   490
    	   	error = aResultArray.Append( attr );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   491
	   	}
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   492
	TInt nodeCount = node->NodeCount();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   493
	for( TInt i = 0; i < nodeCount; i++ )
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   494
		{
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   495
		CXdmDocumentNode* child = node->ChileNode( i );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   496
	   	DoFindAttributes ( child, aAttributeName, aResultArray );
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   497
		}  
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   498
    TInt count = aResultArray.Count();
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   499
    return error == KErrNone && count > 0 ? count : KErrNotFound;            
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   500
    }
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   501
        
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   502
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   503
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   504
fbd2e7cec7ef Revert incorrect RCL_3 drop:
Pat Downey <patd@symbian.org>
parents:
diff changeset
   505