ncdengine/provider/server/inc/ncdreport.h
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/server/inc/ncdreport.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,238 @@
+/*
+* Copyright (c) 2007-2008 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_NCDREPORT_H
+#define C_NCDREPORT_H
+
+#include <e32base.h>
+
+#include "catalogshttptypes.h"
+#include "ncdreportstatusinfo.h"
+#include "ncdattributes.h"
+#include "ncdstoragedataitem.h"
+#include "catalogsconnectionmethod.h"
+
+class MCatalogsHttpOperation;
+class CNcdNodeIdentifier;
+class CNcdReportManager;
+class CNcdRequestInstallation;
+class CCatalogsAccessPoint;
+
+class CNcdReport : public CBase, 
+                   public MNcdStorageDataItem
+    {
+public:
+
+    virtual ~CNcdReport();
+
+public: // From MNcdStorageDataItem
+
+    virtual void ExternalizeL( RWriteStream& aStream );
+    virtual void InternalizeL( RReadStream& aStream );
+
+public: // Common methods
+
+    /**
+     * @return TNcdReportType Report type getter.
+     */
+    const TNcdReportType& ReportType() const;
+
+    /**
+     * Access point setter
+     */
+    virtual void SetAccessPoint( const TCatalogsConnectionMethod& aAp );
+    
+    /**
+     * Access point getter
+     *
+     */
+    virtual const TCatalogsConnectionMethod& ConnectionMethod() const;
+
+
+    /**
+     * Sets the id for the report
+     *
+     */
+    virtual void SetReportId( const TNcdReportId& aReportId );
+    
+    
+    /**
+     * Report id getter
+     */
+    virtual const TNcdReportId& ReportId() const;
+    
+
+    /** 
+     * Attribute getter
+     */
+    CNcdAttributes& Attributes();
+    const CNcdAttributes& Attributes() const;
+               
+
+    /**
+     * Status getter
+     */        
+    virtual const TNcdReportStatusInfo& Status() const;
+    
+    /**
+     * @param aStatus New status
+     * @return Symbian error code. Default implementation always returns 
+     * KErrNone
+     */
+    virtual TInt SetStatus( const TNcdReportStatusInfo& aStatus );
+
+
+    /** 
+     * Sets a timestimp
+     */
+    virtual void SetTimeStamp( 
+        const TNcdReportTimeStamps& aTimeStamp,
+        const TTime& aTime );
+    
+    /**    
+     * Timestamp getter
+     */
+    virtual const TInt64& TimeStamp( 
+        const TNcdReportTimeStamps& aTimeStamp ) const;
+
+    /**
+     * Reset time stamps
+     */
+    virtual void ResetTimeStampsL();
+    
+    
+    /**
+     * Current report transaction getter
+     *
+     * @return Current transaction used for sending the report or NULL
+     */
+    virtual const MCatalogsHttpOperation* ReportTransaction() const;
+    
+    
+    /**
+     * Report transaction setter
+     */
+    virtual void SetReportTransaction(         
+        MCatalogsHttpOperation* aTransaction );
+    
+    
+    /**
+     * Metadata id 
+     */    
+    virtual const CNcdNodeIdentifier& MetadataId() const; 
+
+
+    /**
+     * Compares this report to given parameters and returns true
+     * if they match
+     */
+    virtual TBool Match( 
+        const CNcdNodeIdentifier& aMetadataId,
+        const TDesC& aGenericId,
+        const TDesC& aReportUri,
+        const TNcdReportType& aReportType ) const;
+    
+    /**
+     * Compares two reports
+     */
+    static TInt Compare( 
+        const CNcdReport& aFirst,
+        const CNcdReport& aSecond );
+    
+
+    /**
+     * Sets current time to the timestamp pointed by aTime
+     */
+    void SetCurrentTime( const TNcdReportTimeStamps& aTime );
+    
+    
+    /**
+     * Calculates the time between start and end timestamps. The result
+     * is in seconds
+     */
+    TInt DurationInSecondsL( 
+        const TNcdReportTimeStamps& aStart,
+        const TNcdReportTimeStamps& aEnd ) const;
+    
+
+    /**
+     * Reports should return ETrue if they can be bundled with other 
+     * reports. Default implementation returns EFalse
+     */
+    virtual TBool CanBundle() const;    
+    
+    /** 
+     * Used to add report data to a bundle
+     * Default implementation leaves with KErrNotSupported
+     */
+    virtual void AddReportDataL( CNcdRequestInstallation& aRequest ) const;
+
+public: // Must be implemented by child classes
+
+    virtual TBool IsSendable() const = 0;
+    
+    /**
+     * Return true when the report can be removed
+     */
+    virtual TBool CanBeRemoved() const = 0;
+    
+    virtual HBufC8* CreateReportL() const = 0;
+    
+    virtual void UpdateTransactionConfigL( 
+        MCatalogsHttpOperation& aTransaction ) = 0;
+    
+    /**
+     * @return ETrue if the status cannot change anymore
+     */
+    virtual TBool StatusIsFinal() const = 0;
+
+protected:    
+
+    CNcdReport( 
+        TNcdReportType aType, 
+        CNcdReportManager& aReportManager,
+        const TNcdReportStatusInfo& aStatus );
+        
+    void BaseConstructL( const CNcdNodeIdentifier& aMetadataId );
+
+    const CNcdReportManager& ReportManager() const;
+    
+    CNcdReportManager& ReportManager();
+
+
+private:
+
+    CNcdReport( const CNcdReport& );
+    CNcdReport& operator=( const CNcdReport& );    
+    
+
+private:
+
+    TNcdReportType iType;
+    CNcdReportManager& iReportManager;    
+    TNcdReportStatusInfo iStatus;	
+    
+    TCatalogsConnectionMethod iAccessPoint;
+    RArray<TInt64> iTimeStamps;
+    MCatalogsHttpOperation* iReportTransaction;
+    CNcdAttributes* iAttributes; 
+    CNcdNodeIdentifier* iMetadataId;   
+    TNcdReportId iReportId;
+    };
+
+#endif // C_NCDREPORT_H