IMPSengine/datautils/inc/impsdataaccessor.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/IMPSengine/datautils/inc/impsdataaccessor.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,256 @@
+/*
+* 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: Data accessor for imps engine
+* 
+*/
+
+
+#ifndef CImpsDataAccessor_H
+#define CImpsDataAccessor_H
+
+//  INCLUDES
+#include "impsdataaccessorapi.h"
+#include "impstdataaccessor.h"
+
+/**
+*  CImpsDataAccessor
+*/
+class CImpsDataAccessor : public CBase, public MImpsDataAccessor
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @param is a pointer to aImpsFields class
+        */
+        IMPORT_C static CImpsDataAccessor* NewL( CImpsFields* aImpsFields );
+
+        /**
+        * Two-phased constructor.
+        * @param is a pointer to aImpsFields class
+        */
+        IMPORT_C static CImpsDataAccessor* NewLC( CImpsFields* aImpsFields );
+
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~CImpsDataAccessor();
+
+    public: // Functions from base classes
+
+        /**
+        * Accessor creates an instance of MImpsKey entity.
+        * It is NOT deleted by Accessor! You must do that yourself.
+        * @return MImpsKey new key
+        */
+        inline MImpsKey* NewKeyL();
+
+        /**
+        * descriptor value mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aValue Value
+        */
+        inline void StoreDescL( MImpsKey* aKey, TPtrC aValue );
+
+        /**
+        * descriptor8 value mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aValue Value
+        */
+        inline void StoreDesc8L( MImpsKey* aKey, TPtrC8 aValue );
+
+        /**
+        * Integer value mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aValue Value
+        */
+        inline void StoreIntegerL( MImpsKey* aKey, TInt aValue );
+
+        /**
+        * boolean value mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aValue Value
+        */
+        inline void StoreBooleanL( MImpsKey* aKey, TBool aValue );
+
+        /**
+        * key is a byte sequence, which defines how value is stored
+        * empty value mutator
+        * @param aKey Key
+        */
+        inline void StoreEmptyL( MImpsKey* aKey );
+
+        /**
+        * extension attribute mutator
+        * key is a byte sequence, which defines how value is stored
+        * @param aKey Key
+        * @param aName Extension attribute name
+        * @param aValue Extension attribute value
+        */
+        inline void StoreExtL( MImpsKey* aKey, TPtrC8 aName, TPtrC8 aValue );
+
+        /**
+        * descriptor value accessor
+        * aBuf doesn't go out of scope even if we call this function again.
+        * This way there is no need to copy the buffer
+        * @param aKey Key for restore
+        * @param aBuf OUT Pointer to TDesC object
+        * @return ETrue if key is found, EFalse otherwise
+        */
+        inline TBool RestoreDescL( MImpsKey* aKey, TDesC*& aBuf );
+
+        /**
+        * descriptor value accessor
+        * @param aKey Key for restore
+        * @param aDes OUT Pointer to TDesC8 object
+        * @return ETrue if key is found, EFalse otherwise
+        */
+        inline TBool RestoreDesc8L( MImpsKey* aKey, TDesC8*& aDes );
+
+        /**
+        * integer value accessor
+        * @param aKey Key for restore
+        * @param aInt OUT TInt object
+        * @return ETrue if key is found, EFalse otherwise
+        */
+        inline TBool RestoreIntegerL( MImpsKey* aKey, TInt& aInt );
+
+        /**
+        * Boolean value accessor
+        * @param aKey Key for restore
+        * @param aBuf OUT Boolean object
+        * @return ETrue if key is found, EFalse otherwise
+        */
+        inline TBool RestoreBooleanL( MImpsKey* aKey, TBool& aBool );
+
+        /**
+        * empty value accessor
+        * @param aKey Key for restore
+        * @return ETrue if key is found, EFalse otherwise
+        */
+        inline TBool RestoreEmptyL( MImpsKey* aKey );
+
+        /**
+        * extension attribute accessor
+        * @param aKey Key for restore
+        * @param aName OUT Pointer to TDesC8 object
+        * @param aValue OUT Pointer to TDesC8 object
+        * @return ETrue if key is found, EFalse otherwise
+        */
+        inline TBool RestoreExtL( MImpsKey* aKey,
+                                  TDesC8*& aName, TDesC8*& aValue );
+
+        /**
+        * data type accessor
+        * Leaves with KErrArgument if illegal key not in WV DTD.
+        * return data type. Note that one possible value is "not supported".
+        * @param aKey Key type
+        * @return TImpsDataType Datatype
+        */
+        inline TImpsDataType KeyTypeL( MImpsKey* aKey );
+
+        /**
+        * Finds the alternative key
+        * This function finds if the supplied key has a child in the
+        * datastorage and returns the information of the element.
+        * This is usefull with e.g. TransactionContent
+        * @param aKey key in
+        * @param aEnum Enum value out
+        * @param aIndex index out
+        * @param aType type out
+        * @return ETrue if found, EFalse if not found
+        */
+        inline TBool RestoreAlternativeL( const MImpsKey* aKey,
+                                          TInt& aEnum,
+                                          TInt& aIndex,
+                                          TImpsKeyType& aType ) const;
+
+        /**
+        * Checks if the key exists
+        * This function finds if the supplied key exists as it self or with
+        * children and returns ETrue or EFalse
+        * @param aKey key in
+        * @return ETrue if found, EFalse if not found
+        */
+        inline TBool CheckBranchExistenceL( const MImpsKey* aKey ) const;
+
+        /**
+        * Returns the number of transactions. This is used in MultiTrans
+        * This function calculates the number of transaction elements which have
+        * different index and returns it.
+        * @return 0 if none found, positive for number of found
+        */
+        inline TInt NbrOfTransactionsL( ) const;
+
+        /**
+        * Gets the given transaction. If no transaction is found using the given
+        * index, this function returns EFalse. ETrue if found.
+        * The new transactions index is set to 0.
+        * aFields members are also set accordingly.
+        * @param aIndex Which transaction to get
+        * @param aFields Fields object where the data is copied
+        * If this parameter is NULL then the DataAccessors impsfiels
+        * transactionID and messagetype are set from CImpsdata.
+        * @return ETrue if found, EFalse if not found
+        */
+        inline TBool GetTransactionL( TInt aIndex, CImpsFields* aFields ) const;
+
+        /**
+        * Copy specific part of the message to the current message
+        * @param aSource where to copy data elements
+        * @param aKey which part of message is copied. NULL means that all data
+        *        is copied.
+        */
+        void CopyDataL(
+            MImpsDataAccessor& aSource,
+            MImpsKey* aKey = NULL );
+
+        /**
+        * impsfields accessor
+        * @return CImpsFields*
+        */
+        inline CImpsFields* GetImpsFields() const;
+
+
+#ifdef _DEBUG
+        void DumpToFileL( RFs& aFs, const TDesC& aFilename );
+#endif
+
+    private:
+
+        /**
+        * By default Symbian OS constructor is private.
+        */
+        CImpsDataAccessor();
+
+        /**
+        * Actual construction.
+        * @param aImpsFields is pointer to message data storage class
+        */
+        void ConstructL( CImpsFields* aImpsFields );
+
+    private:    // Data
+        TImpsDataAccessor   iDataAccessor;
+
+    };
+
+#include "ImpsDataAccessor.inl"
+
+#endif      // CImpsDataAccessor_H
+
+// End of File