diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/server/inc/ncdreport.h --- /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 + +#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 iTimeStamps; + MCatalogsHttpOperation* iReportTransaction; + CNcdAttributes* iAttributes; + CNcdNodeIdentifier* iMetadataId; + TNcdReportId iReportId; + }; + +#endif // C_NCDREPORT_H