syncmlfw/ds/dsutils/dbcaps/inc/NSmldbcapsSerializer.h
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/ds/dsutils/dbcaps/inc/NSmldbcapsSerializer.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,283 @@
+/*
+* 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:  for dbcaps streaming and converting to CSmlDataStoreFormat.
+*
+*/
+
+
+#ifndef __NSMLDBCAPSSERIALIZER_H__
+#define __NSMLDBCAPSSERIALIZER_H__
+
+// ------------------------------------------------------------------------------------------------
+// Includes
+// ------------------------------------------------------------------------------------------------
+#include <SmlDataFormat.h>
+#include <SmlDataFormat.hrh>
+
+// ------------------------------------------------------------------------------------------------
+// Class forwards
+// ------------------------------------------------------------------------------------------------
+class CNSmlDbCaps;
+class CNSmlDevInfProp;
+class CNSmlPropParam;
+class CNSmlDevInfProp;
+class CNSmlCtCap;
+class CNSmlFilterCap;
+struct sml_devinf_propparam_s;
+struct sml_devinf_property_s;
+struct sml_devinf_filtercap_s;
+struct sml_devinf_ctcap_s;
+struct sml_pcdata_list_s;
+struct sml_pcdata_s;
+
+// ------------------------------------------------------------------------------------------------
+// TNSmlDbCapsSerializer
+// Handles internalization and externalization of CNSmlDbCaps to stream, that can
+// be internalized to and externalized from CSmlDataStoreFormat. 
+//
+//	@lib nsmldbcaps.lib
+// ------------------------------------------------------------------------------------------------
+class TNSmlDbCapsSerializer
+	{
+	private:
+	
+		// ------------------------------------------------------------------------------------------------
+		// CNSmlFilterCapabilityData
+		// Data for CSmlFilterCapability
+		//
+		// @lib nsmldbcaps.lib
+		// ------------------------------------------------------------------------------------------------
+		struct CNSmlFilterCapabilityData
+			{
+				/**
+				* constructs CNSmlFilterCapabilityData
+				* @return CNSmlFilterCapabilityData*. Created instance
+				*/
+				static CNSmlFilterCapabilityData* NewLC();
+				
+				/**
+				* C++ Destructor
+				*/
+				~CNSmlFilterCapabilityData();
+				
+				/**
+				* fills members from array of filtercapdata
+				* @param aFilterInfoArr. array of filter capabilities.
+				*/
+				void MakeL( const RStringPool& aStringPool, const CArrayFix<TNSmlFilterCapData>& aFilterInfoArr );
+				
+			public: //Data
+			
+				RPointerArray<CSmlFilterCapability> iFilterCapabilities;
+				RArray<RString> iKeywordList;
+				RArray<RString> iPropertyList;
+				RStringF iMimeVersion;
+				RStringF iMimeType;
+			};
+
+		// ------------------------------------------------------------------------------------------------
+		// CNSmlDataFieldFromDbCaps
+		// inherited from CSmlDataField to have access to protected member variables.
+		//
+		// @lib nsmldbcaps.lib
+		// ------------------------------------------------------------------------------------------------
+		class CNSmlDataFieldFromDbCaps : public CSmlDataField
+			{
+		public:
+		
+			/**
+		    * constructs CSmlDataField from parameters
+		    * @param aStringPool. string pool to use
+		    * @param aDisplayName. display name- field
+		    * @param aPropName. property name- field
+		    * @param aDataType. datatype name- field
+		    * @param aValEnums. value enumerations
+		    * @return CSmlDataField*. created instance.
+		    */
+			static CSmlDataField* NewLC(
+				const RStringPool& aStringPool,
+				const TPtrC8& aDisplayName, 
+				const TPtrC8& aPropName,
+				const TPtrC8& aDataType,
+				const sml_pcdata_list_s* aValEnums);
+
+			};
+			
+		// ------------------------------------------------------------------------------------------------
+		// CNSmlDataPropertyParamFromDbCaps
+		// inherited from CSmlDataPropertyParam to have access to protected member variables.
+		//
+		// @lib nsmldbcaps.lib
+		// ------------------------------------------------------------------------------------------------
+		class CNSmlDataPropertyParamFromDbCaps : CSmlDataPropertyParam
+			{
+		public:
+		
+			/**
+		    * constructs CSmlDataPropertyParam from parameters
+		    * @param aStringPool. string pool to use
+		    * @param aDipp. property parameters
+		    * @return CSmlDataPropertyParam*. created instance.
+		    */
+			static CSmlDataPropertyParam* NewLC( const RStringPool& aStringPool, 
+				const sml_devinf_propparam_s* aDipp );
+			};
+
+		// ------------------------------------------------------------------------------------------------
+		// CNSmlDataPropertyFromDbCaps
+		// inherited from CSmlDataProperty to have access to protected member variables.
+		//
+		// @lib nsmldbcaps.lib
+		// ------------------------------------------------------------------------------------------------
+		class CNSmlDataPropertyFromDbCaps : CSmlDataProperty
+			{
+		public:
+		
+			/**
+		    * constructs CSmlDataProperty from parameters
+		    * @param aStringPool. string pool to use
+		    * @param aDipp. properties
+		    * @return CSmlDataProperty*. created instance.
+		    */
+			static CSmlDataProperty* NewLC( const RStringPool& aStringPool, const sml_devinf_property_s* aDipp );
+			};
+
+		// ------------------------------------------------------------------------------------------------
+		// CNSmlFilterCapabilityFromDbCaps
+		// inherited from CSmlFilterCapability to have access to protected member variables.
+		//
+		// @lib nsmldbcaps.lib
+		// ------------------------------------------------------------------------------------------------
+		class CNSmlFilterCapabilityFromDbCaps : CSmlFilterCapability
+			{
+		public:
+		
+			/**
+		    * constructs CSmlFilterCapability from parameters
+		    * @param aStringPool. string pool to use
+		    * @param aFtCap. filter capabilities
+		    * @return CSmlFilterCapability*. created instance.
+		    */
+			static CSmlFilterCapability* NewLC( const RStringPool& aStringPool, const sml_devinf_filtercap_s* aFtCap );
+			};
+
+		// ------------------------------------------------------------------------------------------------
+		// CNSmlMimeFormatFromDbCaps
+		// inherited from CSmlMimeFormat to have access to protected member variables.
+		//
+		// @lib nsmldbcaps.lib
+		// ------------------------------------------------------------------------------------------------
+		class CNSmlMimeFormatFromDbCaps : CSmlMimeFormat
+			{
+		public:
+
+			/**
+		    * constructs CSmlMimeFormat from parameters
+		    * @param aStringPool. string pool to use
+		    * @param aDic. ctcap.
+		    * @return CSmlMimeFormat*. created instance.
+		    */
+			static CSmlMimeFormat* NewLC( const RStringPool& aStringPool, const sml_devinf_ctcap_s& aDic );
+			};
+		// ------------------------------------------------------------------------------------------------
+		// CNSmlDataStoreFormatFromDbCaps
+		// inherited from CSmlDataStoreFormat to have access to protected member variables.
+		//
+		// @lib nsmldbcaps.lib
+		// ------------------------------------------------------------------------------------------------
+		class CNSmlDataStoreFormatFromDbCaps : CSmlDataStoreFormat
+			{
+		public:
+
+			/**
+		    * constructs CSmlDataStoreFormat from parameters
+		    * @param aStringPool. string pool to use
+		    * @param aDbCaps. Db caps
+		    * @return CSmlDataStoreFormat*. created instance.
+		    */
+			static CSmlDataStoreFormat* NewLC( const RStringPool& aStringPool, const CNSmlDbCaps& aDbCaps );
+			};
+			
+	public: //Constructor
+		IMPORT_C TNSmlDbCapsSerializer();
+
+		/**
+		* Internalizes from data store stream to dbcaps instance.
+		* @param aDataStoreFormatStream. Store format stream.
+		* @return CNSmlDbCaps*. Instance internalized from stream.
+		*/
+		IMPORT_C CNSmlDbCaps* InternalizeL( RReadStream& aDataStoreFormatStream ) const;
+		
+		/**
+		* externalizes from dbcaps to data store stream
+		* @param aDbCaps. Object to externalize
+		* @param aDataStoreFormatStream. Stream, where externalized
+		*/
+		IMPORT_C void ExternalizeL( const CNSmlDbCaps& aDbCaps, RWriteStream& aDataStoreFormatStream ) const;
+		/**
+		* externalizes from dbcaps to data store stream
+		* @param const CArrayFix<TNSmlFilterCapData>& aFilterInfoArr. filter info to externalize.
+		* @param aDataStoreFormatStream. Stream, where externalized
+		*/		
+		IMPORT_C void ExternalizeL( const CNSmlDbCaps& aDbCaps, const CArrayFix<TNSmlFilterCapData>& aFilterInfoArr, RWriteStream& aDataStoreFormatStream ) const;
+		
+		/**
+		* copies and converts data from aFrom to aTo
+		* @param aFrom. Source Object
+		* @param aTo. Destination Object
+		*/	
+		IMPORT_C void SetFromL( const CSmlDataProperty& aFrom, CNSmlDevInfProp& aTo ) const;
+		
+		/**
+		* checks for null before returning data pointer
+		* @param aPcdata. place to extract pointer.
+		* @return. safe data pointer
+		*/
+		static TPtrC8 SafePtr( sml_pcdata_s* aPcdata );
+		
+	private:
+
+		/**
+		* copies and converts data from aFrom to aTo
+		* @param aFrom. Source Object
+		* @param aTo. Destination Object
+		*/
+		void SetFromL( const CSmlDataStoreFormat& aFrom, CNSmlDbCaps& aTo ) const;
+
+		/**
+		* copies and converts data from aFrom to aTo
+		* @param aFrom. Source Object
+		* @param aTo. Destination Object
+		*/
+		void SetFromL( const CSmlDataPropertyParam& aFrom, CNSmlPropParam& aTo ) const;
+		
+		/**
+		* copies and converts data from aFrom to aTo
+		* @param aFrom. Source Object
+		* @param aTo. Destination Object
+		*/
+		void SetFromL( const CSmlMimeFormat& aFrom, CNSmlCtCap& aTo ) const;
+		
+		/**
+		* copies and converts data from aFrom to aTo
+		* @param aFrom. Source Object
+		* @param aTo. Destination Object
+		*/
+		void SetFromL( const CSmlFilterCapability& aFrom, CNSmlFilterCap& aTo ) const;
+	private:
+	};
+	
+#endif //__NSMLDBCAPSSERIALIZER_H__
+
+// End of File