diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/server/inc/ncdinstalloperationimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/server/inc/ncdinstalloperationimpl.h Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,193 @@ +/* +* 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: +* +*/ + + +#ifndef C_NCDINSTALLOPERATION_H +#define C_NCDINSTALLOPERATION_H + +#include +#include "ncdbaseoperation.h" +#include "ncdoperationdatatypes.h" +#include "ncdreportdefines.h" + +class CNcdNodeManager; +class MNcdStorageClient; +class CNcdNodeIdentifier; +class MCatalogsContext; +class CNcdFileInfo; +class MNcdOperationRemoveHandler; +class MNcdPurchaseDetails; +class MNcdPurchaseInstallInfo; +class MCatalogsHttpSession; +class MCatalogsAccessPointManager; +class MNcdInstallReportObserver; +class MNcdInstallationService; + +/** + * Install operation + * + */ +class CNcdInstallOperation : public CNcdBaseOperation + { +public: + + /** + * NewL + * + */ + static CNcdInstallOperation* NewL( + MNcdOperationRemoveHandler& aRemoveHandler, + const CNcdNodeIdentifier& aNodeId, + CNcdGeneralManager& aGeneralManager, + MCatalogsHttpSession& aHttpSession, + MNcdInstallReportObserver& aReportObserver, + MCatalogsSession& aSession ); + + + /** + * Destructor + */ + ~CNcdInstallOperation(); + +public: // New functions + + /** + * Returns the identifier of the node that this operation relates to. + * + * @return Node identifier. + */ + const CNcdNodeIdentifier& NodeIdentifier() const; + +public: // From CNcdBaseOperation + + /** + * @see CNcdBaseOperation::Cancel() + */ + void Cancel(); + + + /** + * @see CNcdBaseOperation::ReceiveMessage() + */ + void ReceiveMessage( + MCatalogsBaseMessage* aMessage, + TInt aFunctionNumber ); + + /** + * @see CNcdBaseOperation::CounterPartLost + */ + void CounterPartLost( const MCatalogsSession& aSession ); + + +protected: // From CNcdBaseOperation + + /** + * @see CNcdBaseOperation::RunOperation() + */ + TInt RunOperation(); + + + /** + * @see CNcdBaseOperation::Initialize() + */ + TInt Initialize(); + +protected: + + // Constructor + CNcdInstallOperation( + MNcdOperationRemoveHandler& aRemoveHandler, + CNcdGeneralManager& aGeneralManager, + MCatalogsHttpSession& aHttpSession, + MNcdInstallReportObserver& aReportObserver, + MCatalogsSession& aSession ); + + void ConstructL( const CNcdNodeIdentifier& aNodeId ); + +protected: + + + void GetFileInfoL( MCatalogsBaseMessage& aMessage ); + + void HandleAllFilesInstalledL( + TInt aFinalIndex, + MCatalogsBaseMessage& aMessage ); + + void UpdateInstalledFileInfoL( + MCatalogsBaseMessage& aMessage ); + + void CreateReportL(); + void StartReportL( MCatalogsBaseMessage& aMessage ); + void CompleteReportL( MCatalogsBaseMessage& aMessage ); + void UpdateReportAccessPointL( const TUid& aClientUid ); + + + // Updates the file info to purchase history + void UpdatePurchaseHistoryL( const CNcdFileInfo& aInfo, + const RArray& aAppUids, const TUid& aClientUid ); + + + TBool ReplaceInstallInfoL( + MNcdPurchaseDetails& aDetails, + const MNcdPurchaseInstallInfo& aInfo ); + + + TBool IsJava( + const TDesC& aMimeType, + TBool aAcceptJad = EFalse ) const; + + /** + * Gets the path of the file that matches the index in the message + */ + HBufC* FilePathLC( + MCatalogsBaseMessage& aMessage ); + + void OpenFileL( + MCatalogsBaseMessage& aMessage ); + + void DoReceiveMessageL( + MCatalogsBaseMessage* aMessage, + TInt aFunctionNumber ); + + + void DeleteFileL( MCatalogsBaseMessage& aMessage ); + + TInt ReadFileIndexL( MCatalogsBaseMessage& aMessage ); + + // Deletes the JAD from disk, iJadFile is also deleted + void DeleteJad(); +private: + + MCatalogsHttpSession& iHttpSession; + MCatalogsAccessPointManager& iAccessPointManager; + MNcdInstallReportObserver& iReportObserver; + TNcdReportId iReportId; + + CNcdNodeIdentifier* iNodeId; + + // The message is set when ReceiveMessage is called. The message + // is used in the CounterPartLost-function that informs the message + // if the session has been lost. + MCatalogsBaseMessage* iMessage; + + TBool iIsDependency; + + HBufC* iJadFile; // JAD path if installing JAD+JAR + MNcdInstallationService* iInstallService; // not owned + }; + +#endif // C_NCDINSTALLOPERATION_H