mtpfws/mtpfw/dataproviders/dputility/inc/cmtpknowledgehandler.h
changeset 0 d0791faffa3f
child 1 f8e15b44d440
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpknowledgehandler.h	Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,136 @@
+// Copyright (c) 2008-2009 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:
+// mw/remoteconn/mtpfws/mtpfw/dataproviders/dputility/inc/cmtpknowledgehandler.h
+
+/**
+ @file
+ @internalComponent
+ */
+
+#ifndef __CMTPKNOWLEDGEHANDLER_H__
+#define __CMTPKNOWLEDGEHANDLER_H__
+
+#include <mtp/cmtptypeserviceproplist.h>
+#include <mtp/mtpprotocolconstants.h>
+
+#include "mtpdebug.h"
+#include "mtpsvcdpconst.h"
+#include "mmtpsvcobjecthandler.h"
+
+class CMTPTypeFile;
+class CRepository;
+
+/** 
+Controls access to the knowledge object.
+@internalComponent
+*/
+class CMTPKnowledgeHandler : public CBase, public MMTPSvcObjectHandler
+	{
+public:
+	// Basic function
+	IMPORT_C static CMTPKnowledgeHandler* NewL(MMTPDataProviderFramework& aFramework, TUint16 aFormatCode, CRepository& aReposotry, const TDesC& aKwgSuid);
+	IMPORT_C ~CMTPKnowledgeHandler();
+
+	
+	IMPORT_C void SetStorageId(TUint32 aStorageId);
+	IMPORT_C void GetObjectSuidL(TDes& aSuid) const;
+
+protected:
+	// MMTPSvcObjectHandler
+	TMTPResponseCode SendObjectInfoL(const CMTPTypeObjectInfo& aObjectInfo, TUint32& aParentHandle, TDes& aSuid);
+	TMTPResponseCode GetObjectInfoL(const CMTPObjectMetaData& aObjectMetaData, CMTPTypeObjectInfo& aObjectInfo);
+
+	TMTPResponseCode SendObjectPropListL(TUint64 aObjectSize, const CMTPTypeObjectPropList& aObjectPropList, TUint32& aParentHandle, TDes& aSuid);
+	TMTPResponseCode SetObjectPropertyL(const TDesC& aSuid, const CMTPTypeObjectPropListElement& aElement, TMTPOperationCode aOperationCode);
+	TMTPResponseCode GetObjectPropertyL(const CMTPObjectMetaData& aObjectMetaData, TUint16 aPropertyCode, CMTPTypeObjectPropList& aPropList);
+	TMTPResponseCode DeleteObjectPropertyL(const CMTPObjectMetaData& aObjectMetaData, const TUint16 aPropertyCode);
+
+	TMTPResponseCode GetBufferForSendObjectL(const CMTPObjectMetaData& aObjectMetaData, MMTPType** aBuffer);
+	TMTPResponseCode GetObjectL(const CMTPObjectMetaData& aObjectMetaData, MMTPType** aBuffer);
+	TMTPResponseCode DeleteObjectL(const CMTPObjectMetaData& aObjectMetaData);
+
+	TMTPResponseCode GetObjectSizeL(const TDesC& aSuid, TUint64& aObjectSize);
+	TMTPResponseCode GetAllObjectPropCodeByGroupL(TUint32 aGroupId, RArray<TUint32>& aPropCodes);
+	
+	void CommitL();
+	void CommitForNewObjectL(TDes& aSuid);
+	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;
+	TFileName                   iKnowObjFileName;
+	TFileName                   iKnowObjSwpFileName;
+	// Knowledge object content file
+	CMTPTypeFile*               iKnowledgeObj;
+	// Knowledge object swap file
+	CMTPTypeFile*               iKnowledgeSwpBuffer;
+	const TDesC&               iSuid;
+	/**
+	FLOGGER debug trace member variable.
+	*/
+	__FLOG_DECLARATION_MEMBER_MUTABLE;
+	};
+
+#endif // __CMTPKNOWLEDGEHANDLER_H__