syncmlfw/ds/settings/inc/NSmlProfileContentHandler.h
changeset 0 b497e44ab2fc
child 2 5594fba90824
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/ds/settings/inc/NSmlProfileContentHandler.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,310 @@
+/*
+* Copyright (c) 2002 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: XML parser call back implementation to read profile setting from xml file
+*
+*/
+
+
+
+#ifndef __NSmlProfileContentHandler_H
+#define __NSmlProfileContentHandler_H
+
+//  INCLUDES
+#include <e32std.h>
+#include <f32file.h>
+#include <eikenv.h> //JIM is this needed ??
+#include "MXMLAttributes.h"
+#include "MXMLContentHandler.h"
+
+#include "nsmldssettings.h"
+//#include "nsmldsresourceprofiledefs.h"
+#include <nsmldsconstants.h>
+#include <nsmlconstants.h>
+
+enum TDSparameterState
+	{
+	//Management operations
+	EProfileDisplayName,
+	EProfileServerURL,
+	EProfileIAPId,
+	EProfileTransportId,
+	EProfileSyncServerUsername,
+	EProfileSyncServerPassword,
+	EProfileServerAlertedAction,
+	EProfileDeleteAllowed,
+	EProfileHidden,
+	EProfileHttpAuthUsed,
+	EProfileHttpAuthUsername,
+	EProfileHttpAuthPassword,
+	EProfileAutoChangeIAP,
+    EProfileCreatorId,   
+	EProfileServerId,
+	EProfileProtocolVersion,	
+	ESyncType,
+	EDefaultProfile,
+	EAdapterImplementationId,
+	EAdapterServerDataSource,
+	EStateHandled
+	};
+
+// CLASS DECLARATION
+
+/**
+*  Interface for SAX Parser Callback events.
+*  If an application (client) needs to be informed of basic parsing events, 
+*  it implements this interface and registers an instance with the SAX parser using the SetContentHandler() method.
+*  The parser uses the instance to report basic document-related events like the start and end of elements.
+*
+*  @lib ?library
+*  @since ?Series60_version
+*/
+class CNSmlProfileContentHandler: public CBase, public MXMLContentHandler
+{
+public:
+
+
+	 /**
+        * Two-phased constructor.
+        */
+        static CNSmlProfileContentHandler* NewL(CNSmlDSSettings* aSettings ,CNSmlProfileArray* aArray);
+
+		static CNSmlProfileContentHandler* NewLC();
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CNSmlProfileContentHandler();
+
+/**
+* Receive notification of the beginning of a document.
+* @since ?Series60_version
+* @param none
+* @return none
+*/		
+     TInt StartDocument();
+
+/**
+* Receive notification of the end of a document.
+* @since ?Series60_version
+* @param none
+* @return none
+*/
+	TInt EndDocument();
+
+/**
+* Receive notification of the beginning of an element.
+* @since ?Series60_version
+* @param aURI: The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace
+*              processing is not being performed.
+* @param aLocalName: The local name (without prefix), or the empty string if Namespace processing is not being
+*                    performed.
+* @param aName: The qualified name, or the empty string if qualified names are not available.
+* @param aAttributeList: The attributes attached to the element. If there are no attributes, it shall be an 
+*                        empty Attributes object. 
+*        
+* @return none
+*/
+	TInt StartElement(TDesC& aURI, TDesC& aLocalName, TDesC& aName, MXMLAttributes *aAttributeList);
+
+/**
+* Receive notification 	void ConstructL( TResourceReader& aReader, CNSmlDSSettings* aSettings );of the end of an element.
+* @since ?Series60_version
+* @param aURI: The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace
+*              processing is not being performed.
+* @param aLocalName: The local name (without prefix), or the empty string if Namespace processing is not being
+*                    performed.
+* @param aName: The qualified name, or the empty string if qualified names are not available.
+* @return none
+*/
+	TInt EndElement(TDesC& aURI, TDesC& aLocalName, TDesC& aName);
+
+/**
+* Receive notification of the start of a CDATA section. 
+* The contents of the CDATA section will be reported through the Characters() event. 
+* @since ?Series60_version
+* @param none. 
+* @return none.
+*/
+	TInt StartCDATA();
+
+/**
+* Receive notification of the end of a CDATA section.  
+* @since ?Series60_version
+* @param none. 
+* @return none.
+*/
+	TInt EndCDATA();
+
+/**
+* Receive notification of character data inside an element.
+* @since ?Series60_version
+* @param aBuff: The characters.
+* @param aStart: The start position in the character buffer.
+* @param aLength: The number of characters to use from the character buffer.
+* @return none
+*/
+	TInt Charecters(TDesC& aBuf, TInt aStart, TInt aLength);
+
+/**
+* Receive notification of XML comment.
+* @since ?Series60_version
+* @param aComment: Buffer containing the comment.
+* @return none
+*/
+	TInt Comment(TDesC& aComment); // JIM might need start and end index as params.
+
+/**
+* Receive notification of a processing instruction
+* @since ?Series60_version
+* @param aTarget: The processing instruction target.
+* @param aData: The processing instruction data, or null if none is supplied.
+* @return none
+*/
+   TInt ProcessingInstructions(TDesC& aTarget, TDesC& aData);
+
+/**
+* Receive notification of ignorable whitespace in element content.
+* @since ?Series60_version
+* @param aString: The whitespace characters.
+* @return none
+*/
+	TInt IgnoreWhiteSpace(TDesC& aString); // JIM might need start and end index as params.
+
+/**
+* Receive notification of beginning of some internal and external XML entities.
+* @since ?Series60_version
+* @param aName: The name of the entity.
+* @return none
+*/
+	TInt StartEntity(TDesC& aName);
+
+/**
+* Receive notification of end of XML entities.
+* @since ?Series60_version
+* @param aName: The name of the entity.
+* @return none
+*/
+	TInt EndEntity(TDesC& aName);
+
+/**
+* Receive notification of a skipped entity.
+* @since ?Series60_version
+* @param aName: The name of the skipped entity.
+* @return none
+*/
+	TInt SkippedEntity(TDesC& aName);
+
+/**
+* Receive notification of error situation during parsing.
+* @since ?Series60_version
+* @param aErrorCode: Error status code.
+* @param aSeverity: Error Severity.
+* @return none.
+*/
+	TInt Error(TInt aErrorCode, TInt aSeverity);
+    
+/**
+* Create a content type
+* @param none
+* @return none.
+*/
+	void CreateContentTypeL();
+	
+/**
+* Check whether a content type is already created for the same profile
+* @param adapter ID
+* @return ETrue/EFalse.
+*/
+	TBool IsContentAdded(TInt aAdapter);
+	
+/**
+* Convert XML value to a valid server alert type 
+* @param TInt xml value
+* @return TSmlServerAlertedAction type
+*/
+	TSmlServerAlertedAction ServerAlertType(TInt aType);
+
+/**
+* Convert XML value to a valid sync type 
+* @param xml value
+* @return TSmlSyncType type
+*/
+	TSmlSyncType SyncType(TDesC& aBuf);
+	
+/**
+* Get the resolved access point ID for a string entered in XML
+* @param xml value
+* @return TInt access point ID
+*/
+	TInt AccessPointIdL(TDesC& aBuf);
+	
+/**
+* Check mandatory settings for content defention
+* @param none
+* @return ETrue/EFalse
+*/
+	TBool CheckXMLContentSetting();
+	
+/**
+* Configure visibility based on value entered in xml
+* @param value
+* @return none
+*/
+	void SetVisibility(TInt aValue);
+	
+/**
+* Configure visibility based on value entered in xml
+* @param value
+* @return none
+*/
+	
+	void SetServerURL(TDesC &aBuf);
+
+protected:
+
+		CNSmlProfileContentHandler();
+		
+
+	private:
+		void ConstructL(CNSmlDSSettings* aSettings ,CNSmlProfileArray* aArray);
+
+private:
+
+	// List of attributes
+//	CXMLAttributes *iAttr;
+	RFile iFile;
+	RFs iSession;
+	TBuf<255> ifilename;
+	TLex16 iLex;
+
+	TDSparameterState iState;
+	TInt iCounter;
+	TInt iContentCounter;
+	
+	TBool iDSSettingInProgress;
+	TBool iDSContentInProgress;
+	
+	TBool iInvalidContent;
+	
+	CNSmlDSSettings* iSettings;
+	CArrayFixFlat<TInt>* iSyncTypeArray;
+	CArrayPtrFlat<CNSmlDSProfile>* iCustomProfileArray;
+	CArrayPtrFlat<CNSmlDSContentSettingType>* iContentArray;
+
+};
+
+
+#endif      // __NSmlProfileContentHandler_H   
+            
+// End of File