iaupdate/IAD/engine/controller/inc/iaupdatenodefactory.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:51:10 +0200
changeset 0 ba25891c3a9e
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* 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:   ?Description
*
*/



#ifndef IA_UPDATE_NODE_FACTORY_H
#define IA_UPDATE_NODE_FACTORY_H


#include <e32base.h>

class MNcdNode;
class CIAUpdateController;
class CIAUpdateNode;
class CIAUpdateFwNode;


/**
 * IAUpdateNodeFactory is used to create the correct iaupdate nodes
 * from the NCD nodes.
 *
 */
namespace IAUpdateNodeFactory
    {

    /**
     * @note Ownership of aNode is transferred. And if this function leaves,
     * then it automatically deletes the aNode.
     *
     * @param aNode NCD Engine node that is used for the iaupdate node.
     * Ownership is transferred. So, do not release the node after
     * giving it here. This class object supposes that the reference
     * count of the given node is at least one when it is given.
     * @param aController Update controller that is required by the iaupdate node.
     * @return CIAUpdateNode* IAUpdate node that is created. 
     * Ownership is transferred.
     * @exception Leaves with KErrArgument if aNode is NULL. Else leaves with
     * system wide error code.
     **/
    CIAUpdateNode* CreateNodeLC( MNcdNode* aNode,
                                 CIAUpdateController& aController );
    
    /**
     * @see IAUpdateNodeFactory::CreateNodeLC
     **/
    CIAUpdateNode* CreateNodeL( MNcdNode* aNode,
                                CIAUpdateController& aController );

    
    /**
     * @param aUid Uid of the node. This UID is checked agains the known UIDs that
     * require self update.
     * @return TBool ETrue if the node corresponding the given UID requires
     * self update. EFalse if the self update is not required.
     **/
    TBool IsSelfUpdate( const TUid& aUid );


    /**
     * @param aUid Uid of the node. This UID is checked agains the IAD UIDs.
     * @return TBool ETrue if the aUid describes IAD. Else EFalse.
     **/
    TBool IsIad( const TUid& aUid );
    

    /**
     * @param aUid Uid of the node. This UID is checked agains the NCD UIDs.
     * @return TBool ETrue if the aUid describes NCD. Else EFalse.
     **/
    TBool IsNcd( const TUid& aUid );


    /**
     * @param aUid Uid of the node. This UID is checked agains the IAD self 
     * updater UIDs.
     * @return TBool ETrue if the aUid describes IAD self updater. Else EFalse.
     **/
    TBool IsUpdater( const TUid& aUid );


    /**
     * @note Ownership of aNode is transferred. And if this function leaves,
     * then it automatically deletes the aNode.
     *
     * @param aNode NCD Engine node that is used for the iaupdate firmware node.
     * Ownership is transferred. So, do not release the node after
     * giving it here. This class object supposes that the reference
     * count of the given node is at least one when it is given.
     * @param aController Update controller that is required by the iaupdate node.
     * @return CIAUpdateNode* IAUpdate node that is created. 
     * Ownership is transferred.
     * @exception Leaves with KErrArgument if aNode is NULL. Else leaves with
     * system wide error code.
     **/
    CIAUpdateFwNode* CreateFwNodeLC( MNcdNode* aNode,
                                     CIAUpdateController& aController );
    
    /**
     * @see IAUpdateNodeFactory::CreateFwNodeLC
     **/
    CIAUpdateFwNode* CreateFwNodeL( MNcdNode* aNode,
                                    CIAUpdateController& aController );


    /**
     * @param aNode Node whose information is used to check if
     * the node describes a firmware update.
     * @return TBool ETrue if the given node is for firmware updates.
     * @exception Leaves with system wide error code.
     */
    TBool IsFwUpdateL( MNcdNode& aNode );


    /**
     * @param aMime MIME type is used to check if it describes 
     * a firmware update.
     * @return TBool ETrue if the given MIME is for firmware updates.
     */
    TBool IsFwUpdate( const TDesC& aMime );


    /**
     * @param aMime MIME type is used to check if it describes 
     * service pack.
     * @return TBool ETrue if the given MIME is for service pack.
     */
    TBool IsServicePack( const TDesC& aMime );


    /**
     * @param aMime MIME type is used to check if it describes 
     * a hidden item.
     * @return TBool ETrue if the given MIME is for a hidden item.
     * Else, EFalse.
     */
    TBool IsHidden( const TDesC& aMime );
    
    }
    
    
#endif  //  IA_UPDATE_NODE_FACTORY_H