syncmlfw/dm/treedbhandler/inc/nsmldmaclparser.h
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/dm/treedbhandler/inc/nsmldmaclparser.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,130 @@
+/*
+* Copyright (c) 2005 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:  header file for dm acl parser
+*
+*/
+
+#ifndef __NSMLDMACLPARSER_H
+#define __NSMLDMACLPARSER_H
+
+#include <nsmldmdbhandler.h>
+
+
+// ===========================================================================
+// CNSmlDmACLParser
+// ===========================================================================
+class CNSmlAclElement;
+
+/**
+* CNSmlDmACLParser is used for parsing and generating acl strings from
+* structures and vice versa
+*
+*  @since
+*/
+class CNSmlDmACLParser : public CBase
+	{
+	public:
+
+	/**
+	* Two-phased constructor
+	* @return						Pointer to newly created module instance
+	*/
+	static CNSmlDmACLParser* NewLC();
+
+	/**
+	* Destructor
+	*/
+	~CNSmlDmACLParser();
+	
+	/**
+	* Parses acl to structure
+	* @param	aACL		Acl in descriptor
+	* @return				KErrNone if succesfully parsed
+	*/
+	TInt ParseL(const TDesC8& aACL);
+
+	/**
+	* Generates ACL from structure
+	* @return				Generated acl
+	*/
+	HBufC8* GenerateL();
+
+	/**
+	* Removes all the references to server from acls
+	* @param	aServerId	Server id to be removed from acls
+	*/
+	void RemoveAllReferences(const TDesC8& aServerId);
+	
+	/**
+	* Check if current acl can be deleted. The Acl can be deleted if it is
+	* empty, i.e. no references to any server in any command
+	* @return				ETrue if can be deleted
+	*/
+	TBool ShouldDelete();
+
+	/**
+	* Check if server has access rights for certain command 
+	* @param	aServerId		Server id to be checked
+	* @param	aCommandType	Type of command (add,...)
+	* @return					ETrue if access OK
+	*/
+	TBool HasRights(const TDesC8& aServerId,TNSmlDmCmdType aCommandType);
+
+	private:
+	void Reset();
+	CNSmlAclElement* iCommandAcls;
+	};
+
+/**
+* CNSmlAclElement is container class for one command in acls
+*
+*  @since
+*/
+class CNSmlAclElement : public CBase
+	{
+	public:
+	/**
+	* Constructor
+	*/
+	CNSmlAclElement();
+	
+	/**
+	* Destructor
+	*/
+	virtual ~CNSmlAclElement();
+
+	/**
+	* Type of command
+	*/
+	TNSmlDmCmdType iCommandType;
+
+	/**
+	* Array of server ids to one command
+	*/
+	RPointerArray<HBufC8> iServerIds;
+
+	/**
+	* True if all servers has access rigths, i.e acl value is *
+	*/
+	TBool iAllServers;
+
+	/**
+	* Pointer to next element
+	*/
+	CNSmlAclElement* iNext;
+	};
+
+
+
+#endif // __NSMLDMACLPARSER_H
\ No newline at end of file