deviceupdatesui/omadmadapters/connmoadapter/inc/ProxyBranch.h
changeset 44 137912d1a556
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/deviceupdatesui/omadmadapters/connmoadapter/inc/ProxyBranch.h	Tue Jul 13 03:44:34 2010 +0530
@@ -0,0 +1,197 @@
+/*
+* ==============================================================================
+* Copyright (c) 2009 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:
+*
+* ==============================================================================
+*/
+
+#ifndef PROXYBRANCH_H_
+#define PROXYBRANCH_H_
+
+
+// ------------------------------------------------------------------------------------------------
+// Includes
+// ------------------------------------------------------------------------------------------------
+#include <smldmadapter.h>
+#include "BranchBase.h"
+#include "cmmanagerext.h"
+#include "AddBuffer.h"
+
+/**
+ * Class for handling Proxy settings in ConnMo DM tree
+ */
+class CProxyBranch : public CBranchBase
+    {
+public:
+
+    static CProxyBranch* NewL(MSmlDmCallback* aDmCallback, 
+                              CAddBuffer* aBuffer,
+                              RCmManagerExt* aCmManagerExt );
+    
+    // Adapter branch interface from CProxyBranch
+    void DDFStructureL( MSmlDmDDFObject& aDDF );
+
+    void UpdateLeafObjectL( const TDesC8& aURI, 
+                            const TDesC8& aLUID,
+                            const TDesC8& aObject, 
+                            const TDesC8& aType,
+                            TInt aStatusRef );
+    
+    void DeleteObjectL( const TDesC8& aURI, 
+                        const TDesC8& aLUID,
+                        TInt aStatusRef );
+    
+    void FetchLeafObjectL( const TDesC8& aURI, 
+                           const TDesC8& aLUID,
+                           const TDesC8& aType, 
+                           TInt aResultsRef,
+                           TInt aStatusRef );
+    
+
+    void FetchLeafObjectSizeL( const TDesC8& aURI, 
+                               const TDesC8& aLUID,
+                               const TDesC8& aType, 
+                               TInt aResultsRef,
+                               TInt aStatusRef);
+
+    void ChildURIListL( const TDesC8& aURI, 
+                        const TDesC8& aLUID,
+                        const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList,
+                        TInt aResultsRef, 
+                        TInt aStatusRef );
+    
+    void AddNodeObjectL( const TDesC8& aURI, 
+                         const TDesC8& aParentLUID,
+                         TInt aStatusRef );
+    
+    /**
+     * The function processes all proxy nodes from add buffer.
+     * @param aCmManagerExt Reference to CmManager session. 
+     */
+    void ProcessBufferL();
+    
+    virtual ~CProxyBranch(); 
+    
+private:
+    
+    //-----------------------------------------------------------------------------
+    // Private functions
+    //-----------------------------------------------------------------------------
+    CProxyBranch(MSmlDmCallback* aDmCallback, 
+                 CAddBuffer* aBuffer, 
+                 RCmManagerExt* aCmManagerExt );
+        
+    /**
+     * The function returns URI list of dynamic Proxy nodes. The list is returned by 
+     * calling the SetResultsL function of MSmlCallback callback interface.
+     * @param aURI URI of the parent object.
+     * @param aPreviousURISegmentList URI list with mapping LUID information.
+     * @param aResultsRef Reference to correct results.
+     * @param aStatusRef  Reference to correct command.
+     * @param aCmManagerExt Reference to CmManager session. 
+     */
+    void GetAllDynamicProxyNodesL( const TDesC8& aURI,
+                                   const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList,
+                                   TInt aResultsRef, 
+                                   TInt aStatusRef,
+                                   CBufBase& aCurrentURISegmentList );
+    
+    /**
+     * The function returns URI list of requested dynamic Proxy node.
+     * @param aLUID LUID of the parent object.
+     * @param aResultsRef Reference to correct results.
+     * @param aStatusRef  Reference to correct command.
+     * @param aCmManagerExt Reference to CmManager session. 
+     */
+    void GetURIListForProxyNodeL( const TDesC8& aLUID,
+                                  TInt aResultsRef, 
+                                  TInt aStatusRef );
+    
+    /**
+     * The function adjust DM operation return values for hardcoded fields.
+     * @param aURI URI of the object.
+     * @return CSmlDmAdapter::TError Status value for DM operation.
+     */
+    CSmlDmAdapter::TError CheckForUnmodifiableField( const TDesC8& aUri );
+    
+    /**
+     * The function returns CMManager's attribute enum that corresponds to uri.
+     * @param aURI URI of the object.
+     * @return TUint32 Attribute enum for CM.
+     */
+    TUint32 MapUriToCmAttribute( const TDesC8& aUri );
+    
+    /**
+     * The function searches for connection method that is referenced from proxy buffered
+     * in the addbuffer.
+     * @param aCmManagerExt Reference to CmManager session. 
+     * @return TUint32 CM ID.
+     */
+    TInt32 FindConnectionMethodL();
+    
+    /**
+     * The function checs that the addbuffer contains all necessary fields 
+     * to create new proxy entry.
+     * @return TBool True if all mandatory fields found.
+     */
+    TBool AllMandatoryProxyFieldsFound();
+    
+    /**
+     * The function writes information from the addbuffer to connection method.
+     * @param aURI URI of the object.
+     * @param aLUID Local UID of the leaf.
+     * @param aObject objecto to be written in CM.
+     * @param aStatusRef  Reference to correct command.
+     * @param aCm Reference to Connection Method. 
+     */
+    void SetLeafDataL( const TDesC8& aURI, 
+                       const TDesC8& aLUID,
+                       const TDesC8& aObject, 
+                       TInt aStatusRef, 
+                       RCmConnectionMethodExt& aCm);
+    
+    /**
+     * The function informs framework about new nodes.
+     * @param aNode Node to be saved.
+     * @param aCm Reference to Connection Method.
+     */
+    void SetNodeDataL( CConnMoNodeElement* aNode, RCmConnectionMethodExt& aCm );
+    
+    /**
+     * Fethces leaf object data from connection settings
+     * @param aURI Target node
+     * @param aLuid Local UID for target node
+     * @param buffer for returning object data
+     * @return CSmlDmAdapter::TError Return value informs completion status of the operation
+     */
+    CSmlDmAdapter::TError FetchLeafObjectL( const TDesC8& aURI,
+                                            const TDesC8& aLUID,
+                                            CBufBase& aLeafObject );
+    
+    TPtrC8 GetDynamicProxyNodeUri( const TDesC8& aURI );
+    
+    TBool IsProxyUriFormatMatchPredefined(const TDesC8 & aURI);
+ 
+    TInt GetCmIdFromURIL(const TDesC8& aURI);
+    
+    //-----------------------------------------------------------------------------
+    // Private member variables
+    //-----------------------------------------------------------------------------
+    MSmlDmCallback* iCallback;
+    CAddBuffer* iBuffer;
+    RCmManagerExt* iCmManager;
+    };
+    
+#endif /* PROXYBRANCH_H_ */