omadmadapters/nsmldmbmadapter/inc/nsmldmbmsettingstore.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 23 Jun 2010 18:03:02 +0300
changeset 41 c742e1129640
permissions -rw-r--r--
Revision: 201023 Kit: 2010125

/*
* Copyright (c) 2006 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:   The class manages snap data in Commsdat using CMManager
*
*/




#ifndef NSMLDMBMSETTINGSTORE_H
#define NSMLDMBMSETTINGSTORE_H

#include <cmmanagerext.h>

#include "nsmldmbmadapter.h"

const TInt KShift8 = 8;

class CNSmlDmBmAdapter;
class CSmlDmBmCommandElement;
class CSmlDmBmSettingsElement;

/**
 *  Setting Store is used for managing settings in CommsDat
 *
 *  The class provides functions for executing commands 
 *  and sets of commands that involve manipulation of 
 *  data in CommsDat. 
 *
 *  @lib nsmldmbmadapter
 *  @since S60 v3.2
 */
class CNSmlDmBmSettingStore : public CBase
    {

public:

    /**
     * Two-phased constructor.
     */
    static CNSmlDmBmSettingStore * NewL( CNSmlDmBmAdapter* aAdapter );

    /**
     * Destructor.
     */
    virtual ~CNSmlDmBmSettingStore();


    /**
     * Executes all commands for the argument snap object.
     * Executed commands are set as executed and status is filled 
     * in. For Get commands also fetched data is filled in the command.
     *
     * @since S60 v3.2
     * @param aSettings Settings object for the SNAP, contains all 
     * commands to be executed for the SNAP
     */
    void StoreSnapL( CSmlDmBmSettingsElement& aSettings );

    
    /**
     * Executes the argument command. Checks the node from 
     * for which the command is intended and calls node specific functions.
     *
     * @since S60 v3.2
     * @param aCmd Command to be executed
     * @param aLuid LUID of the SNAP which command is referring.
     */
     void ExecuteCmdL( CSmlDmBmCommandElement& aCmd, TUint aLuid);

    /**
     * Fetches all SNAPs and inserts id of each SNAp into the argument array
     *
     * @since S60 v3.2
     * @param aLUIDArray Array for SNAP ids
     */
    void GetSnapsL( RArray<TUint32>& aLUIDArray );
 
private:

    CNSmlDmBmSettingStore( CNSmlDmBmAdapter * aAdapter );

    void ConstructL();

//----------- Commands for managing leaf nodes -------------------//

    /**
     * Executes snap commands. The valid commands include 
     * get and delete. With get commands the iData 
     * memeber is used to pass fetched data back to caller. 
     * After execution of command the function fills in the status 
     * in aCmd.iStatus memeber and sets aCmd.iExecuted as True. The function
     * leaves if command can not be executed for some reason. 
     *
     * @param aCmd The command to be executed
     * @param aLuid The id of the snap
     */
    void ExecuteSnapCmdL( CSmlDmBmCommandElement& aCmd, TUint aLuid );

    /**
     * Executes iap list commands. The valid commands include 
     * update and get. With update commands data is read from the 
     * iData memeber of the argument command. With get commands the iData 
     * memeber is used to pass fetched data back to caller. 
     * After execution of command the function fills in the status 
     * in aCmd.iStatus memeber and sets aCmd.iExecuted as True. The function
     * leaves if command can not be executed for some reason. 
     *
     * @param aCmd The command to be executed
     * @param aSnap The snap object
     */
    void ExecuteIapsCmdL( CSmlDmBmCommandElement& aCmd, 
                          RCmDestinationExt& aSnap );

    /**
     * Executes protection commands. The valid commands include 
     * update and get. With update commands data is read from the 
     * iData memeber of the argument command. With get commands the iData 
     * memeber is used to pass fetched data back to caller. 
     * After execution of command the function fills in the status 
     * in aCmd.iStatus memeber and sets aCmd.iExecuted as True. The function
     * leaves if command can not be executed for some reason. 
     *
     * @param aCmd The command to be executed
     * @param aSnap The snap object
     */
    void ExecuteProtectionCmdL( CSmlDmBmCommandElement& aCmd, 
                                RCmDestinationExt& aSnap );

    /**
     * Executes hidden commands. The valid commands include 
     * update and get. With update commands data is read from the 
     * iData memeber of the argument command. With get commands the iData 
     * memeber is used to pass fetched data back to caller. 
     * After execution of command the function fills in the status 
     * in aCmd.iStatus memeber and sets aCmd.iExecuted as True. The function
     * leaves if command can not be executed for some reason. 
     *
     * @param aCmd The command to be executed
     * @param aSnap The snap object
     */
    void ExecuteHiddenCmdL( CSmlDmBmCommandElement& aCmd, 
                            RCmDestinationExt& aSnap );

    /**
     * Executes metadata commands. The valid commands include 
     * update and get. With update commands data is read from the 
     * iData memeber of the argument command. With get commands the iData 
     * memeber is used to pass fetched data back to caller. 
     * After execution of command the function fills in the status 
     * in aCmd.iStatus memeber and sets aCmd.iExecuted as True. The function
     * leaves if command can not be executed for some reason. 
     *
     * @param aCmd The command to be executed
     * @param aSnap The snap object
     */
    void ExecuteMetadataCmdL( CSmlDmBmCommandElement& aCmd, 
                              RCmDestinationExt& aSnap );

    /**
     * Executes embedded snap commands. The valid commands include 
     * update, get and delete. With update commands data is read from the 
     * iData memeber of the argument command. With get commands the iData 
     * memeber is used to pass fetched data back to caller. 
     * After execution of command the function fills in the status 
     * in aCmd.iStatus memeber and sets aCmd.iExecuted as True. The function
     * leaves if command can not be executed for some reason. 
     *
     * @param aCmd The command to be executed
     * @param aLuid The id of the snap
     */
    void ExecuteEmbeddedSnapCmdL( CSmlDmBmCommandElement& aCmd, 
                                  RCmDestinationExt& aSnap );
    /**
     * Executes name commands. The valid commands include 
     * update and get. With update commands data is read from the 
     * iData memeber of the argument command. With get commands the iData 
     * memeber is used to pass fetched data back to caller. 
     * After execution of command the function fills in the status 
     * in aCmd.iStatus memeber and sets aCmd.iExecuted as True. The function
     * leaves if command can not be executed for some reason. 
     *
     * @param aCmd The command to be executed
     * @param aSnap The snap object
     */
    void ExecuteNameCmdL( CSmlDmBmCommandElement& aCmd, 
                          RCmDestinationExt& aSnap );


private: //data

    /**
     * CmManager is used for accessing CommsDat.
     */
     RCmManagerExt iCmManagerExt;
     
    /**
     * Pointer to the adapter. This is used for 
     * querying data from DM framework when necessary
     * and using helper functions. Not own.
     */ 
    CNSmlDmBmAdapter* iAdapter;

  };


#endif // NSmlDmBmSettingStore_H