diff -r 000000000000 -r c8caa15ef882 xdmprotocols/LocalProtocol/inc/LocalDocument.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xdmprotocols/LocalProtocol/inc/LocalDocument.h Tue Feb 02 01:05:17 2010 +0200 @@ -0,0 +1,336 @@ +/* +* 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 +* +*/ + + + + +#ifndef __LOCALDOCUMENT__ +#define __LOCALDOCUMENT__ + +#include +#include "XdmDocument.h" + +_LIT( KTimeStampFileExt, ".tmsp"); +_LIT( KDateFormat, "%1-%2-%3"); +_LIT( KTimeFormat, "%H:%T:%S"); +const TInt KDateTimeMaxSize = 200; +const TInt KDateBufferMaxSize = 50; + +//FORWARD DECLARATIONS +class CXdmNamespace; +class MXdmOperation; +class CLocalProtocol; +class CLocalDocumentNode; +class CXdmOperationFactory; + +//CLASS DECLARATION +class CLocalDocument : public CXdmDocument + { + public: + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + static CLocalDocument* NewL( CXdmEngine& aXdmEngine, + const TDesC& aDocumentName, + CLocalProtocol& aLocalProtocol ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + //static CLocalDocument* NewL( const TDesC8& aDocumentName ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void StartInternalL( TRequestStatus& aStatus ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void CancelUpdate(); + + /** + * Destructor. + */ + virtual ~CLocalDocument(); + + public: //Exported methods + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C CLocalDocument* TempCopyL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C TPtrC XmlFilePath() const; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C TBool IsSubset() const; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C virtual void ResetSubset(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C void RemoveData( CLocalDocumentNode* aDocumentNode ); + + public: //From CXdmDocument + + /** + * Return the root element of this document + * + * @return CXdmDocumentNode The root element of the document + * + * NOTE: The returning node may or may not contain any data, + * since, in the case that this document model does not + * have content yet, the element is a simple "entry point" + * to the whole document. Thus, for instance, if the client + * application requests the Xdm Engine to fetch a particular + * document, the root element points to nothing until the + * request has been completed. + * + */ + CXdmDocumentNode* DocumentRoot() const; + + private: //From CXdmDocument + + /** + * Construct an "anonymous" entry point for this document. + * This node effectively becomes the root of this document. + * + */ + CXdmDocumentNode* CreateRootL(); + + /* + * Reset the contents of this document model. + */ + void ResetContents(); + + /** + * Return the time stamp for this document + * + * @return TTime + */ + TTime TimeStamp() const; + + /** + * Return an error document for a failed update + * + * NOTE: Error document is not supported in this + * protocol. The returning pointer will be NULL. + * + * @return CXdmDocument* The error document + */ + CXdmDocumentNode* ErrorRoot(); + + /** + * Append an element to the path identifying the + * the current document subset + * @return void + */ + void AppendPathPartL( const TDesC& aString ); + + /** + * Return the current document subset (including descendants) + * @return void + */ + CXdmDocumentNode* CurrentExtent() const; + + /** + * Construct an "anonymous" entry point for this document. + * This node effectively becomes the root of this document. + */ + TXdmDocType DocumentType() const; + + private: //From MXdmNamespaceContainer + + /** + * Return the number of namespace declarations + * @return TInt Namespace declaration count + */ + TInt Count() const; + + /** + * Copies the request data + * @param aRequestData Data to be sent + */ + void AppendNamespaceL( const TDesC8& aUri, const TDesC8& aPrefix ); + + /** + * Remove a namespace from the document + * @param TDesC8& URI of the namespace + * @param TDesC8& Prefix of the namespace + */ + void RemoveNamespace( const TDesC8& aUri ); + + /** + * Copies the request data + * @param aRequestData Data to be sent + */ + TPtrC8 Uri( const TDesC8& aPrefix ) const; + + /** + * Fetch the aIndex-th URI + * @param TInt The index of the desired URI string + * @return TPtrC URI string + */ + TPtrC8 Uri( TInt aIndex ) const; + + /** + * Fetch the aIndex-th prefix + * @param TDesC8 The index of the desired prefix string + * @return TPtrC Prefix string + */ + TPtrC8 Prefix( TInt aIndex ) const; + + /** + * Resets namespaces from the document + */ + void ResetNamespaces( ); + + private: + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + CLocalDocument( CXdmEngine& aXdmEngine, + CLocalProtocol& aLocalProtocol ); + + /** + * From CActive. + * @return void + */ + void RunL(); + + /** + * From CActive. + * @return void + */ + void DoCancel(); + + /** + * From CActive. + * @return void + */ + void FinaliseOperation( TInt aIndex ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void StartUpdateL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void SaveClientStatus( TRequestStatus& aStatus ); + + /** + * _DEBUG + */ + void DumpResponseBodyL( const TDesC8& aResponseBody ) const; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void ConstructL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void ConstructL( const TDesC8& aDocumentName ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void FetchTimeStampL(); + + private: //Data + + enum TLocalOperation + { + EFetch = 0, + EReplace, + EInsert, + EFetchPartial, + EInsertPartial, + EReplacePartial, + }; + + enum TLocalDocumentState + { + EXdmDocIdle = 0, + EXdmDocUpdating, + EResolvingAsyncConflict, + }; + + TInt iDataLength; + TInt iUpdateIndex; + TInt iOperationCount; + TInt iOperationError; + TTime iLastAccess; + TTime iLastModification; + TBool iWholeDoc; + HBufC* iFullPath; + HBufC* iDocSubsetPath; + TLocalOperation iOperationType; + CLocalProtocol& iLocalProtocol; + CLocalDocumentNode* iDocumentRoot; + TLocalDocumentState iDocumentState; + RPointerArray iNamespaces; + }; + +#endif //__XCAPDOCUMENT__ + +// End of File