ncdengine/provider/server/inc/ncdinstalloperationimpl.h
changeset 0 ba25891c3a9e
--- /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 <e32cmn.h>
+#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<TUid>& 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