--- /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