omadm/omadmextensions/adapters/lawmodmadapter/inc/lawmodmadapter.h
branchRCL_3
changeset 70 5d5344402085
parent 65 450d1facd418
child 73 5042b6604f6f
--- a/omadm/omadmextensions/adapters/lawmodmadapter/inc/lawmodmadapter.h	Wed Sep 15 11:58:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,562 +0,0 @@
-/*
-* 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:  LAWMO DM Adapter
-*
-*/
-
-#ifndef __LAWMODMADAPTER_H
-#define __LAWMOMADAPTER_H
-
-// INCLUDES
-#include <e32base.h>
-#include <smldmadapter.h>
-#include <centralrepository.h>
-#include <lawmoclient.h>
-#include <dcmoconst.h>
-
-const TInt KMaxBufferLength = 256;
-
-_LIT8( KMimeType, "text/plain" );
-_LIT8( KNSmlLAWMOAdapterTitle,      "LAWMO DM Adapter" );
-_LIT8( KNSmlTrue,					"true" );
-_LIT8( KNSmlFalse,					"false" );
-_LIT8( KLAWMODMAdapterVersion, "1.0" ); // Adapter version
-
-//DDF accepted DM-fieldnames
-_LIT8( KNSmlDdfState,				"State" );
-_LIT8( KNSmlDdfAvailWipeList,		"AvailableWipeList" );
-_LIT8( KNSmlDdfListItemName,		"ListItemName" );
-_LIT8( KNSmlDdfToBeWiped,           "ToBeWiped" );
-_LIT8( KNSmlDdfOperations,			"Operations" );
-_LIT8( KNSmlDdfFullyLock,		    "FullyLock" );
-_LIT8( KNSmlDdfPartLock,			"PartiallyLock" );
-_LIT8( KNSmlDdfUnlock,	            "UnLock" );
-_LIT8( KNSmlDdfFactoryReset,		"FactoryReset" );
-_LIT8( KNSmlDdfWipe,			    "Wipe" );
-_LIT8( KNSmlDdfEnable,				"Enable" );
-_LIT8( KNSmlDdfDisable,				"Disable" );
-_LIT8( KNSmlDdfOpExt,				"Ext" ); 
-_LIT8( KNSmlDdfOpExtWipeAll,	    "WipeAll" );
-_LIT8( KNSmlDdfLawMoConfig,         "LAWMOConfig" );
-
-//DDF DM-field descriptions
-_LIT8( KNSmlDdfStateDescription,             "State of LAWMO" );
-_LIT8( KNSmlDdfAWLDescription,               "Available WipeList node" );
-_LIT8( KNSmlDdfDynNodeDescription,           "Dynamic node" );
-_LIT8( KNSmlDdfListDescription,              "Name of List Item" );
-_LIT8( KNSmlDdfToWipeDescription,            "Item to be wiped or not" );
-_LIT8( KNSmlDdfOperationsDescription,        "Operations node" );
-_LIT8( KNSmlDdfFullLockDescription,          "Fully lock operation" );
-_LIT8( KNSmlDdfPartLockDescription,          "Partially lock operation" );
-_LIT8( KNSmlDdfUnlockDescription,            "Unlock operation" );
-_LIT8( KNSmlDdfFactResetDescription,         "Factory Reset operation" );
-_LIT8( KNSmlDdfWipeDescription,              "Wipe operation" );
-_LIT8( KNSmlDdfExtDescription ,              "Extra Operations " );
-_LIT8( KNSmlDdfOpExtDescription,             "Wipe All Operation" );
-_LIT8( KNSmlDdfLawConfigDescription,         "Configuration node" );
-
-
-_LIT8( KLawmoMatch2,                                          "/" );
-_LIT8( KSegmLawmo,                                            "AvailableWipeList/Ext/LAWMOConfig/Operations/State");
-_LIT8( KLawmoAvWipe,                                          "AvailableWipeList" );
-_LIT8( KLawmoAvWipe2,                                         "AvailableWipeList/*" );
-_LIT8( KSegmLawmo2,                                            "Messages");
-_LIT8( KSegmLawmo3,                                            "ListItemName/ToBeWiped");
-_LIT8( KLawmoOperationsMatch,                                   "Operations");
-_LIT8( KSegmLawmoOperations,                                    "FactoryReset/FullyLock/PartiallyLock/UnLock/Wipe");
-_LIT8( KLawmoOperationsExtMatch,                                "Ext");
-
-_LIT8( KLawmoMetatype,          "urn:oma:at:lawmo:1.0:OperationComplete" );
-_LIT8( KLawmoMetaformat,        "text/plain" );
-_LIT8( KLawmoMetamark,          "warning" );
-
-// CLASS DECLARATION
-
-/**
-* Adapter class
-* Provides DM adapter interface
-*/
-class CLawmoDMAdapter : public CSmlDmAdapter
-    {
-    
-    public: // Constructors, destructor
-        /**
-        * Create instance of CLawmoDMAdapter
-        * @param aDmCallBack
-        * @return Instance of CLawmoDMAdapter
-        */    
-        static CLawmoDMAdapter* NewL( MSmlDmCallback* aDmCallback );
-
-        /**
-        * Create instance of CLawmoDMAdapter
-        * @param aDmCallBack
-        * @return Instance of CLawmoDMAdapter
-        */   
-        static CLawmoDMAdapter* NewLC( MSmlDmCallback* aDmCallback );
-
-        /**
-        * C++ Destructor
-        */
-        virtual ~CLawmoDMAdapter();
-
-    public:
-	    /**
-	    * The function returns current version of the DDF.
-	    * By asking current DDF versions from adapters DM Module can control
-	    * possible changes in the data structure and send the changed DDF
-	    * description to a management server.
-	    * This function is always called after DDFStructureL.
-        * @param aVersion DDF version of the adapter. (filled by the adapter)
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void DDFVersionL( CBufBase& aVersion );
-	
-	    /**
-	    * The function for filling the DDF structure of the adapter
-	    * This function is only called once, immediately after the adapter is created.
-	    * @param aDDFObject	Reference to root object. A DM adapter starts filling
-		         the data structure by calling AddChildObjectL to the root object and
-				 so describes the DDF of the adapter. 
-	    * @publishedPartner
-	    * @prototype
-	    */
-        void DDFStructureL( MSmlDmDDFObject& aDDF );
-	
-	    /**
-	    * The function creates new leaf objects, or replaces data in existing leaf
-	    * objects. The information about the success of the command should be
-	    * returned by calling SetStatusL function of MSmlDmCallback callback
-	    * interface. This makes it possible to buffer the commands. However, all
-	    * the status codes for buffered commands must be returned at the latest when
-	    * the adapter's CompleteOutstandingCmdsL() is called.
-	    * @param aURI			URI of the object
-	    * @param aLUID		LUID of the object (if the adapter has earlier returned a
-	 	     				LUID to the DM Module). For new objects, this is the LUID
- 			    			inherited through the parent node.
- 	    * @param aObject		Data of the object. 
-	    * @param aType		MIME type of the object
-	    * @param aStatusRef	Reference to correct command, i.e. this reference
-	 					must be used when calling the SetStatusL of this command
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void UpdateLeafObjectL( const TDesC8& aURI, 
-	                            const TDesC8& aLUID,
-			                    const TDesC8& aObject, 
-			 				    const TDesC8& aType,
-							    TInt aStatusRef 
-							  );
-		
-        /**
-	    * The function creates new leaf objects, or replaces data in existing leaf
-	    * objects, in the case where data is large enough to be streamed. The
-	    * information about the success of the command should be returned by calling
-	    * SetStatusL function of MSmlDmCallback callback interface. This makes it
-	    * possible to buffer the commands.  However, all the status codes for buffered
-	    * commands must be returned at the latest when the CompleteOutstandingCmdsL()
-	    * of adapter is called.
-	    * @param aURI		URI of the object
-	    * @param aLUID		LUID of the object (if the adapter has earlier returned a
-    						LUID to the DM Module). For new objects, this is the LUID
-	    					inherited through the parent node.
-	    * @param aStream	Data of the object. Adapter should create write stream
-		    				and return, when data is written to stream by DM agent,
-			    			StreamCommittedL() is called by DM engine
-	    * @param aType		MIME type of the object
-	    * @param aStatusRef	Reference to correct command, i.e. this reference
-    						must be used when calling the SetStatusL of this
-		    				command.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void UpdateLeafObjectL( const TDesC8& aURI, 
-	                            const TDesC8& aLUID,
-								RWriteStream*& aStream, 
-								const TDesC8& aType,
-		 						TInt aStatusRef 
-		 				      );
-	    
-	    
-	    TInt InternalUpdateObjectL( const TDesC8& aURI, 
-                                    const TDesC8& /*aLUID*/,
-                                    const TDesC8& aObject, 
-                                    const TDesC8& /*aType*/,
-                                    TInt aStatusRef );
-	    /**
-	    * The function deletes an object and its child objects. The SetStatusL
-	    * should be used as described in UpdateLeafObjectL()
-	    * @param aURI		URI of the object
-	    * @param aLUID		LUID of the object (if the adapter have earlier returned
-    						LUID to the DM Module).
-	    * @param aStatusRef	Reference to correct command, i.e. this reference must
-						be used when calling the SetStatusL of this command.
-        * @publishedPartner
-	    * @prototype
-	    */
-	    void DeleteObjectL( const TDesC8& aURI, 
-	                        const TDesC8& aLUID,
-							TInt aStatusRef 
-					      );
-	
-	    /**
-	    * The function fetches data of a leaf object. The SetStatusL should be used
-	    * as described in UpdateLeafObjectL(). The data is returned by using the
-	    * SetResultsL function of MSmlCallback callback interface, and may be streamed.
-	    * @param aURI			URI of the object
-	    * @param aLUID			LUID of the object (if the adapter have earlier
-    							returned LUID to the DM Module).   
-	    * @param aType 			MIME type of the object
-	    * @param aResultsRef	Reference to correct results, i.e. this reference
-    							must be used when returning the result by calling
-	    						the SetResultsL.
-	    * @param aStatusRef		Reference to correct command, i.e. this reference
-		    					must be used when calling the SetStatusL of this
-    							command.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void FetchLeafObjectL( const TDesC8& aURI, 
-	                           const TDesC8& aLUID,
-							   const TDesC8& aType, 
-							   TInt aResultsRef,
-							   TInt aStatusRef 
-							 );
-	    
-	    TInt InternalFetchObjectL(  const TDesC8& aURI, 
-                                    const TDesC8& aLUID, const TDesC8& aType, 
-                                    CBufFlat* aObject,
-                                    TInt aStatusRef );
-	    
-	    /**
-	    * The function fetches the size of the data of a leaf object. The size is
-	    * in bytes, and must reflect the number of bytes that will be transferred
-	    * when the framework calls FetchLeafObjectL. The SetStatusL should be used
-	    * as described in FetchLeafObjectL(). The size value is returned by using
-	    * the SetResultsL function of MSmlCallback callback interface, and must be
-	    * a decimal integer expressed as a string, eg. "1234".
-	    * Results from this call MUST NOT be streamed.
-	    * @param aURI			URI of the object
-	    * @param aLUID			LUID of the object (if the adapter have earlier
-    							returned LUID to the DM Module).   
-	    * @param aType 			MIME type of the object
-	    * @param aResultsRef	Reference to correct results, i.e. this reference
-    							must be used when returning the result by calling
-	    						the SetResultsL.
-	    * @param aStatusRef		Reference to correct command, i.e. this reference
-     							must be used when calling the SetStatusL of this
-	    						command.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void FetchLeafObjectSizeL( const TDesC8& aURI, 
-	                               const TDesC8& aLUID,
-								   const TDesC8& aType, 
-								   TInt aResultsRef,
-								   TInt aStatusRef 
-								 );
-	    /**
-	    * The function fetches URI list. An adapter returns the list of URI segments
-	    * under the given URI be separated by slash ("/"). The URI segment names for
-	    * new objects must be given by the adapter.
-	    * The list is returned by calling the SetResultsL function of MSmlCallback
-	    * callback interface.	Results from this call MUST NOT be streamed.
-	    * @param aParentURI					URI of the parent object
-	    * @param aParentLUID				LUID of the parent object (if the
-    										adapter have earlier returned LUID to
-		    								the DM Module).   
-	    * @param aPreviousURISegmentList	URI list with mapping LUID information,
-			    							which is known by DM engine. An adapter
-				    						can use this information when verifying
-					    					if old objects still exists. An adapter
-						    				also knows what objects are new to DM
-							    			engine and can provide LUID mapping for
-								    		them. aPreviousURISegmentList parameter
-									    	(see above) helps to recognise new
-    										objects.
-	    * @param aResultsRef				Reference to correct results, i.e. this
-    										reference must be used when returning
-	    									the result by calling the SetResultsL.
-	    * @param aStatusRef					Reference to correct command, i.e. this
-		    								reference must be used when calling the
-			    							SetStatusL of this command.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void ChildURIListL( const TDesC8& aURI, 
-	                        const TDesC8& aLUID,
-					        const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList,
-					        TInt aResultsRef, 
-					        TInt aStatusRef 
-					      );
-	
-        /**
-	    * The function adds node object. In some cases an implementation of the
-	    * function may be empty function, if the node object does not need concrete
-	    * database update. Still this function may be helpful to an adapter, i.e. in
-	    * passing mapping LUID of the node to DM Module. The SetStatusL should be
-	    * used as described in UpdateLeafObjectL()
-	    * @param aURI			URI of the object
-	    * @param aParentLUID	LUID of the parent object (if the adapter have
-     							earlier returned LUID to the DM Module).   
-	    * @param aStatusRef		Reference to correct command, i.e. this reference
-		    					must be used when calling the SetStatusL of this
-			    				command.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void AddNodeObjectL( const TDesC8& aURI, 
-	                         const TDesC8& aParentLUID,
-		  					 TInt aStatusRef 
-		  				   );
-
-	    /**
-	    * The function implements execute command. The information about the success
-	    * of the command should be returned by calling SetStatusL function of
-	    * MSmlDmCallback callback interface. This makes it possible to buffer the
-	    * commands.
-	    * However, all the status codes for buffered commands must be returned at
-	    * the latest when the CompleteOutstandingCmdsL() of adapter is called.
-	    * @param aURI			URI of the command
-	    * @param aLUID			LUID of the object (if the adapter have earlier
-    							returned LUID to the DM Module).   
-	    * @param aArgument		Argument for the command
-	    * @param aType			MIME type of the object 
-	    * @param aStatusRef		Reference to correct command, i.e. this reference
-    							must be used when calling the SetStatusL of this
-	    						command.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void ExecuteCommandL( const TDesC8& aURI, 
-	                          const TDesC8& aLUID,
-							  const TDesC8& aArgument, 
-							  const TDesC8& aType,
-							  TInt aStatusRef 
-							);
-
-	    /**
-	    * The function implements execute command. The information about the
-	    * success of the command should be returned by calling SetStatusL function
-	    * of MSmlDmCallback callback interface. This makes it possible to buffer the
-	    * commands.
-	    * However, all the status codes for buffered commands must be returned at
-	    * the latest when the CompleteOutstandingCmdsL() of adapter is called.
-	    * @param aURI			URI of the command
-	    * @param aLUID			LUID of the object (if the adapter have earlier
-    							returned LUID to the DM Module).   
-	    * @param aStream		Argument for the command. Adapter should create
-		    					write stream and return, when data is written to
-			    				stream by DM agent, StreamCommittedL() is called by
-				    			DM engine
-	    * @param aType			MIME type of the object 
-	    * @param aStatusRef		Reference to correct command, i.e. this reference
-    							must be used when calling the SetStatusL of this
-	    						command.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void ExecuteCommandL( const TDesC8& aURI, 
-	                          const TDesC8& aLUID,
-							  RWriteStream*& aStream, 
-							  const TDesC8& aType,
-							  TInt aStatusRef 
-							);
-
-	    /**
-	    * The function implements copy command. The information about the success of
-	    * the command should be returned by calling SetStatusL function of
-	    * MSmlDmCallback callback interface. This makes it possible to buffer the
-	    * commands.
-	    * However, all the status codes for buffered commands must be returned at
-	    * the latest when the CompleteOutstandingCmdsL() of adapter is called.
-	    * @param aTargetURI		Target URI for the command
-	    * @param aSourceLUID	LUID of the target object (if one exists, and if the adapter
-    							has	earlier returned a LUID to the DM Module).   
-	    * @param aSourceURI		Source URI for the command
-	    * @param aSourceLUID	LUID of the source object (if the adapter has
-    							earlier returned a LUID to the DM Module).   
-	    * @param aType			MIME type of the objects
-	    * @param aStatusRef		Reference to correct command, i.e. this reference
-    							must be used when calling the SetStatusL of this
-	    						command.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void CopyCommandL( const TDesC8& aTargetURI, 
-	                       const TDesC8& aTargetLUID,
-						   const TDesC8& aSourceURI, 
-						   const TDesC8& aSourceLUID,
-						   const TDesC8& aType, 
-						   TInt aStatusRef 
-						 );
-
-	    /**
-	    * The function indicates start of Atomic command.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void StartAtomicL();
-	
-	    /**
-	    * The function indicates successful end of Atomic command. The adapter
-	    * should commit all changes issued between StartAtomicL() and
-	    * CommitAtomicL()
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void CommitAtomicL();
-	
-	    /**
-	    * The function indicates unsuccessful end of Atomic command. The adapter
-	    * should rollback all changes issued between StartAtomicL() and
-	    * RollbackAtomicL(). If rollback fails for a command, adapter should use
-	    * SetStatusL() to indicate it.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void RollbackAtomicL();
-	
-	    /**
-        * Returns ETrue if adapter supports streaming otherwise EFalse.
-	    * @param aItemSize size limit for stream usage
-        * @return TBool ETrue for streaming support
-	    * @publishedPartner
-	    * @prototype
-        */
-	    TBool StreamingSupport( TInt& aItemSize );
-	
-	    /**
-        * Called when stream returned from UpdateLeafObjectL or ExecuteCommandL has
-	    * been written to and committed. Not called when fetching item.
-	    * @publishedPartner
-	    * @prototype
-        */	
-	    void StreamCommittedL();
-	
-	    /**
-	    * The function tells the adapter that all the commands of the message that
-	    * can be passed to the adapter have now been passed.  This indicates that
-	    * the adapter must supply status codes and results to any buffered commands.
-	    * This must be done at latest by the time this function returns.
-	    * This function is used at the end of SyncML messages, and during processing
-	    * of Atomic.   In the case of Atomic processing, the function will be
-	    * followed by a call to CommitAtomicL or RollbackAtomicL.
-	    * @publishedPartner
-	    * @prototype
-	    */
-	    void CompleteOutstandingCmdsL();
-
-    private: // New methods
-    	
-    	/**
-	    * The function fills the adapter node with the details
-	    * @publishedPartner
-	    * @prototype
-	    */
-        void FillNodeInfoL( MSmlDmDDFObject& aDDFObject, 
-                                            TSmlDmAccessTypes& aAccessTypes, 
-                                            MSmlDmDDFObject::TScope aScope,
-                                            MSmlDmDDFObject::TDFFormat aFormat, 
-                                            MSmlDmDDFObject::TOccurence aOccurence,
-                                            const TDesC8& aDescription,
-                                            const TDesC8& aMIMEType );
-        
-        /**
-	    * This function constructs the DDFnode with the details 
-	    * @publishedPartner
-	    * @prototype
-	    */ 
-        void FillLAWMODDFL(MSmlDmDDFObject& aDDF);   
-        
-        // Fills the DDFnode details with the dynamic node info
-        
-        void FillDynamicNodeL(MSmlDmDDFObject& aDDF); 
-        
-        /**
-    	* Maps a system wide error code to a TError.
-    	* @param aError A system wide error code.
-    	* @return A TError value depending on aError.
-    	*/
-    	CSmlDmAdapter::TError MapErrorToStatus( TInt aError ) const;    
-    	
-    	// Issues a lock request using tarm 3rd party api
-    	TLawMoStatus LockDeviceL();
-    	
-    	// Issues a Unlock request using tarm 3rd party api
-    	TLawMoStatus UnLockDeviceL();
-    	
-    	// Gets the current Lawmo state store in the cenrep
-    	TLawMoStatus GetStateL(TInt& aState);
-                         	
-    private: // Constructor
-        /**
-        * Symbian 2nd phase constructor
-        */
-        void ConstructL();
-
-        /**
-        * C++ Constructor
-        */    
-        CLawmoDMAdapter( TAny* aEcomArguments );
-        
-        // Sends the Generic alert for wipe command
-        void SendGenericAlertL();
-        
-        // Updates the current server id to the store
-        void SetCurrentServerIdL();
-        
-        // Checks if the current profile doing the operation
-        // is a factory profile
-        TBool IsFactoryProfileL();
-        
-    private: // Data
-        
-        enum TNodeIdentifier
-            {
-            ENodeLawMo = 0,
-            ENodeState,
-            ENodeAvWipeList,
-            ENodeDynamic,
-            ENodeItemName,
-            ENodeToBeWiped,
-            ENodeOperations,
-            ENodePartLock,
-            ENodeUnlock,
-            ENodeWipe,
-            ENodeExt,
-            ENodeWipeAll,
-            ENodeNotUsedAndAlwaysLast
-            };
-        
-        enum TLawmoState
-            {
-            EFullLocked = 10,
-            EPartialLocked = 20,
-            EUnlocked = 30
-            };
-        
-        RLawmoClient ilawmoSession;
-        TBool iConnected;
-        TBuf8<KMaxBufferLength> iRootNode;        
-
-    private:        
-        // Gets the current node based on the URI
-        TNodeIdentifier GetNodeIdentifier(const TDesC8& aURI);
-        
-    };
-
-#endif // __DCMODMADAPTER_H
-
-// End Of File