diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/server/inc/ncdsubscriptiondatacompleter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/server/inc/ncdsubscriptiondatacompleter.h Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,267 @@ +/* +* Copyright (c) 2007 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: Contains CNcdSubscriptionDataCompleterDataCompleter class +* +*/ + + +#ifndef NCD_SUBSCRIPTION_DATA_COMPLETER_H +#define NCD_SUBSCRIPTION_DATA_COMPLETER_H + +#include +#include + +class CNcdSubscriptionManager; +class CNcdNodeIdentifier; +class MNcdSubscriptionManagerObserver; +class CNcdNodeManager; +class CNcdSubscription; +class CNcdNodeMetaData; +class CNcdOperationManager; +class MCatalogsContext; + +/** + * This server side class contains the functionality to complete + * the data of subscriptions whose data is incomplete. + * + * + * @lib ?library + * @since S60 ?S60_version *** for example, S60 v3.0 + */ +class CNcdSubscriptionDataCompleter : public CBase + { + +public: + /** + * NewL + * + * @param aManager Reference to subscription manager which started + * this completer. + * @param aNodeManager Reference to node manager. + * @param aOperationManager Reference to operation manager. + * @return CNcdSubscriptionDataCompleter* Pointer to the + * created object of this class. + */ + static CNcdSubscriptionDataCompleter* NewL( + CNcdSubscriptionManager& aSubscriptionManager, + CNcdNodeManager& aNodeManager, + CNcdOperationManager& aOperationManager ); + + /** + * NewLC + * + * @param aManager Reference to subscription manager which started + * this completer. + * @param aNodeManager Reference to node manager. + * @param aOperationManager Reference to operation manager. + * @return CNcdSubscriptionDataCompleter* Pointer to the + * created object of this class. + */ + static CNcdSubscriptionDataCompleter* NewLC( + CNcdSubscriptionManager& aSubscriptionManager, + CNcdNodeManager& aNodeManager, + CNcdOperationManager& aOperationManager ); + + /** + * Destructor + * + */ + virtual ~CNcdSubscriptionDataCompleter(); + + /** + * Function for checking that subscriptions of given goups have + * all needed data and if not get the data from the corresponding + * nodes. Does also the needed callback of observer and notifying + * of subscription manager's listeners + * + * @note Given groups are thought to be obtained from one server + * + * @param aClientUid Id of the client that should be notified + * of subscription manager content change. + * @param aNodeIds Identifiers of nodes which were used to buy + * the subscriptions. + * @param aPurchaseOptionIDs Purchase option ids which were + * used to buy the subscriptions. + * @param aContext Not used. + * @param aObserver Observer that is informed of internalisation + * completion. + * @return Symbian error code. + */ + TInt CompleteSubscriptions( TUid aClientUid, + RPointerArray aNodeIds, + MDesCArray* aPurchaseOptionIDs, + MCatalogsContext* aContext, + MNcdSubscriptionManagerObserver* aObserver ); + +protected: + + /** + * Constructor + * Is set in the NewLC function. + * @param aSubscriptionManager Reference to subscription manager + * which started this completer. + * @param aNodeManager Reference to node manager. + * @param aOperationManager Reference to operation manager. + */ + CNcdSubscriptionDataCompleter( + CNcdSubscriptionManager& aSubscriptionManager, + CNcdNodeManager& aNodeManager, + CNcdOperationManager& aOperationManager ); + + /** + * ConstructL + */ + virtual void ConstructL(); + + + +private: + + // Prevent these two if they are not implemented + CNcdSubscriptionDataCompleter( + const CNcdSubscriptionDataCompleter& aObject ); + CNcdSubscriptionDataCompleter& + operator=( const CNcdSubscriptionDataCompleter& aObject ); + + void ProceedCompletion(); + + /** + * Function for completing given subscription from the given node. + * Also saves updated node to database. + * + * @param aCurrentSubscription Subscription to update. + * @param aCurrentNode Node which should be used in the completion. + * @param aPurchaseOptionId Purchase option id which was + * used to buy the subscription. + * @param aClientUid Uid of the client whose subscription we + * are updating. + */ + void CompleteSubscriptionL( CNcdSubscription& aCurrentSubscription, + const CNcdNodeMetaData& aCurrentNodeMetaData, + const TDesC& aPurchaseOptionId, + TUid aClientUid ) const; + + /** + * Returns identified subscription if found. + * + * @param aNodeIdentifier Identifier of the node which was used + * to buy the subscription. + * @param aPurchaseOptionId Purchase option id which was + * used to buy the subscription. + */ + CNcdSubscription& SubscriptionL( + const CNcdNodeIdentifier& aNodeIdentifier, + const TDesC& aPurchaseOptionId ) const; + + /** + * Function for checking whether given subscription is incomplete + * or not. + * + * @param aSubscription Subscription to check. + */ + TBool SubscriptionIncomplete( + const CNcdSubscription& aSubscription ) const; + + /** + * Function for setting name of the given subscription from + * the purchase option of given metadata identified by the + * purchase option id. + * + * @param aSubscription Subscription whose name has to be set. + * @param aMetaData Meta data which contains purchase option + * whose name is used as the name of the + * subscription. + * @param aPurchaseOptionId Purchase option whose name is + * set to be the name of the subscription. + */ + void CompleteSubscriptionNameL( + CNcdSubscription& aSubscription, + const CNcdNodeMetaData& aMetaData, + const TDesC& aPurchaseOptionId ) const; + + /** + * Function for setting icon of the given subscription from + * the given metadata. + * + * @param aSubscription Subscription whose icon has to be set. + * @param aMetaData Meta data which contains the icon for the + * subscription. + */ + void CompleteSubscriptionIconL( + CNcdSubscription& aSubscription, + const CNcdNodeMetaData& aMetaData ) const; + +private: // data + + /** + * Reference to subscription manager which started this completer. + */ + CNcdSubscriptionManager& iSubscriptionManager; + + /** + * Reference to node manager for node creation/retrieval purposes. + */ + CNcdNodeManager& iNodeManager; + + /** + * Reference to operation manager for operation creation purposes. + */ + CNcdOperationManager& iOperationManager; + + /** + * Client uid of the client that should be notified of + * subscription manager state change after the internalization. + */ + TUid iClientUid; + + /** + * Indexer to index subscriptions which are being completed. + * Member variable to enable possible asynchronous operations. + * (although such operations are not needed at the moment) + */ + TInt iIndexer; + + /** + * Array of node ids identifying the nodes which contained + * the purchase options which were used to buy the + * subscriptions whose data should be completed. + */ + RPointerArray iNodeIds; + + /** + * Array of purchase option ids which were used to buy the + * subscriptions whose data should be completed. + * Own. + */ + MDesCArray* iPurchaseOptionIds; + + /** + * Not used at the moment. + * Context to identify client if node loads would ever be + * implemented here. + * Not own. + */ + MCatalogsContext* iContext; + + /** + * Observer that should be notified when internalization of + * subscriptions has ended. + * Not own. + */ + MNcdSubscriptionManagerObserver* iInternalizationObserver; + + + }; + +#endif // NCD_SUBSCRIPTION_DATA_COMPLETER_H