mtpfws/mtpfw/dataproviders/dputility/inc/cmtpknowledgehandler.h
changeset 17 aabe5387f5ce
parent 0 d0791faffa3f
child 47 63cf70d3ecd8
--- a/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpknowledgehandler.h	Tue Feb 02 01:11:40 2010 +0200
+++ b/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpknowledgehandler.h	Fri Mar 19 09:40:39 2010 +0200
@@ -31,6 +31,93 @@
 class CMTPTypeFile;
 class CRepository;
 
+NONSHARABLE_CLASS(CKnowledgeObject) : public CBase
+	{
+public:
+	static CKnowledgeObject* NewL(CRepository& aRepository);
+	~CKnowledgeObject();
+	
+	/**
+	Get the value from the central repository
+	@leave One of the system wide error codes, if repository get value fail
+	*/
+	void LoadL();
+	/**
+	Set the cached value to the central repository
+	@leave One of the system wide error codes, if repository set value fail
+	*/
+	void CommitL();
+	/** 
+	Clear the cached knowledge object property values 
+	*/
+	void Clear();
+	/**
+	Update cached DateModified to current Device time
+	*/
+	void RefreshDateModifed();
+	/**
+	Check if the cached object property values are aligned with repository
+	*/
+	TBool IsDirty() {return iDirty;};
+	
+	//Get method for all prop
+	TUint64 Size(){return iKnowledgeObjectSize;};
+	TDesC& DateModified(){return iDateModified;};
+	TDesC& Name(){return iName;};
+	const TMTPTypeUint128& LastAuthorProxyID() {return iLastAuthorProxyID;};
+	
+	//Set method for all prop
+	void SetSize(TUint64 aSize);
+	void SetDateModified(const TDesC& aDateModified);
+	void SetName(const TDesC& aName);
+	void SetLastAuthorProxyID(TUint64 aHigh, TUint64 aLow);
+	
+private:
+	//key of central repository
+	enum TMTPKnowledgeStoreKeyNum
+		{
+		ESize 				= 0x10001, 
+		EDateModified 		= 0x10002,
+		EName 				= 0x10003,
+		ELastAuthorProxyID 	= 0x10004
+		};
+
+	// Bit flag of the property
+	enum TMTPKnowledgeBitFlag
+		{
+		EBitFlagNone 				= 0x00,
+		EBitFlagSize 				= 0x01, 
+		EBitFlagDateModified 		= 0x02,
+		EBitFlagName 				= 0x04,
+		EBitFlagLastAuthorProxyID 	= 0x08,
+		EBitFlagAll 				= 0x0F
+		};
+
+private:
+	CKnowledgeObject(CRepository& aRepository);
+	
+	void ConstructL();
+	
+	TMTPResponseCode SetColumnType128Value(TMTPKnowledgeStoreKeyNum aColumnNum, TMTPTypeUint128& aNewData);
+	
+	CRepository&     	iRepository;
+
+	// The bit wise value of TMTPKnowledgeBitFlag 
+	// to state which property is not aligned with repository
+	TUint				iDirty;
+	
+	TUint64          	iKnowledgeObjectSize; 
+	RBuf             	iDateModified;
+	RBuf             	iName;
+	TMTPTypeUint128  	iLastAuthorProxyID;
+	
+	/**
+	FLOGGER debug trace member variable.
+	*/
+	__FLOG_DECLARATION_MEMBER_MUTABLE;
+	
+	};
+
 /** 
 Controls access to the knowledge object.
 @internalComponent
@@ -68,58 +155,24 @@
 	void RollBack();
 	void ReleaseObjectBuffer();	
 
-	enum TCacheStatus
-		{
-		EOK,
-		EDirty,
-		EDeleted
-		};
-	//key of central repository
-	enum TMTPKnowledgeStoreKeyNum
-		{
-		ESize = 0x10001, 
-		EDateModified = 0x10002,
-		EName = 0x10003,
-		ELastAuthorProxyID = 0x10004
-		};
 	
-	TMTPResponseCode SetColumnType128Value(TMTPKnowledgeStoreKeyNum aColumnNum, TMTPTypeUint128& aNewData);
-
 private:
 	CMTPKnowledgeHandler(MMTPDataProviderFramework& aFramework,TUint16 aFormatCode, CRepository& aReposotry, const TDesC& aKwgSuid);
 	void ConstructL();
 	
 	/**
-	Get the value from the central repository
-	@leave One of the system wide error codes, if repository get value fail
-	*/
-	void LoadKnowledgeObjPropertiesL();
-	/**
-	Cleanup Item operation for drop all knowledge properties
-	*/
-	static void DropCacheWrapper(TAny* aObject);
-	void DropKnowledgeObjPropertiesCache();
-	/**
 	Helper for GetObjectInfo request handling
 	*/
 	void BuildObjectInfoL(CMTPTypeObjectInfo& aObjectInfo) const;
-	/**
-	Delete knowledge object properties and content
-	@leave One of the system wide error codes, if repository set value fail
-	*/
-	void DeleteAllObjectPropertiesL();
 	
 private:
 	MMTPDataProviderFramework&  iFramework;
 	CRepository&                iRepository;
 	TUint32                     iStorageID;
 	TUint16                     iKnowledgeFormatCode;
-	TUint64                     iKnowledgeObjectSize; 
-	HBufC*                      iDateModified;
-	HBufC*                      iName;
-	TMTPTypeUint128             iLastAuthorProxyID;
-	TCacheStatus                iCacheStatus;
-	TCacheStatus                iCacheStatusFlag;
+	
+	CKnowledgeObject*			iCachedKnowledgeObject;
+	
 	TFileName                   iKnowObjFileName;
 	TFileName                   iKnowObjSwpFileName;
 	// Knowledge object content file