--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pressrv_plat/authorization_api/inc/cpresencexdm.h Tue Feb 02 01:05:17 2010 +0200
@@ -0,0 +1,267 @@
+/*
+* Copyright (c) 2006 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: RLS and Presence XDM, This is primary class for Presence XDM
+*
+*/
+
+
+
+#ifndef __PRESENCEXDM_H__
+#define __PRESENCEXDM_H__
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <badesca.h>
+#include <rlspresxdmconsts.h>
+
+#include "prescondidentityone.h"
+#include "prescondidentitymany.h"
+#include "prescondmisc.h"
+#include "prescondvalidity.h"
+#include "prescondsphere.h"
+#include "presenceactionxdm.h"
+#include "presencetransformxdm.h"
+
+// Forward declarations
+class MRLSPresXDMAsyncHandler;
+class CXdmDocumentNode;
+class CXdmProtocolInfo;
+class CXdmEngine;
+class CXdmDocument;
+
+// Class declaration
+/**
+* This class deals with the Presence rules as a whole and has communication
+* with the server. Rules can be manipulated using this class, however the
+* three childrens of rule namely condition, action and transform manipulation
+* also requires their respective classes in conjunction with this class.
+*
+* @lib rlspresxdm.lib
+* @since S60 3.2
+*/
+class CPresenceXDM : public CActive
+ {
+ public:
+
+ /**
+ * Create CPresenceXDM
+ *
+ * @param TInt XDMSettingsList ID, see XDMSettingsApi.h for more info
+ * @return Pointer to created CPresenceXDM
+ */
+ IMPORT_C static CPresenceXDM* NewL(const TInt aSettingId);
+
+ /**
+ * Create CPresenceXDM, leaves pointer to stack
+ *
+ * @param TInt XDMSettingsList ID, see XDMSettingsApi.h for more info
+ * @return Pointer to created CPresenceXDM, pushed on cleanup stack
+ */
+ IMPORT_C static CPresenceXDM* NewLC( const TInt aSettingId );
+
+
+ /**
+ * Updates information (document) to server. This results in
+ * HandlePresUpdateDocumentL on completion.
+ *
+ * @param aHandler, pointer to MRLSPresXDMAsyncHandler callback handler
+ * @return Error code, KErrAlreadyExist if some async already going on
+ */
+ IMPORT_C TInt UpdateToServerL(MRLSPresXDMAsyncHandler* const aHandler);
+
+ /**
+ * Updates all information (document) from server. This results in
+ * HandlePresUpdateDocumentL on completion.
+ *
+ * @param aHandler, pointer to MRLSPresXDMAsyncHandler callback handler
+ * @return Error code, KErrAlreadyExist if some async already going on
+ */
+ IMPORT_C TInt UpdateAllFromServerL(MRLSPresXDMAsyncHandler* const aHandler);
+
+ /**
+ * Cancels document update to/from server if going on. This results in
+ * HandlePresUpdateCancelL on completion.
+ */
+ IMPORT_C void CancelUpdateL();
+
+ /**
+ * Gets all rule IDs in an array
+ *
+ * @param CDesCArray& aRuleIds, reference to rule IDs
+ */
+ IMPORT_C void GetAllRulesL(CDesCArray& aRuleIds);
+
+ /**
+ * Delete Rule and associated coditions/actions/transforms
+ *
+ * @param TDesC& aRuleId rule ID
+ * @return KErrNotFound if not found. System wide error codes
+ */
+ IMPORT_C TInt DeleteRuleL(const TDesC& aRuleId);
+
+ /**
+ * Add a new rule. If aRuleId contains a valid descriptor it is used as
+ * rule id for the new rule. If a NULL descriptor is provided instead,
+ * a random id is generated automatically and returned in aRuleId.
+ * The new rule is created without condition, action or transformation.
+ * Those elements can be created using their respective classes.
+ *
+ * @param TDesC& aRuleId, if provided treated as rule id. Otherwise a
+ / random rule id is created and returned.
+ * @return Error code, KErrAlreadyExists, KErrNone, KErrNotFound if
+ * document root doesnt found.
+ */
+ IMPORT_C TInt CreateNewRuleL(TDes& aRuleId);
+
+ /**
+ * Finds if a Rule Exist
+ *
+ * @param TDesC& aRuleId rule ID
+ * @return TBool if rule exist
+ */
+ IMPORT_C TBool IsRuleExist(const TDesC& aRuleId);
+
+ /**
+ * Delete all data by deleting all rules and their children
+ */
+ IMPORT_C void DeleteAllRules();
+
+ /**
+ * Deletes all rules which are empty
+ */
+ IMPORT_C void DeleteEmptyRulesL();
+
+
+ /**
+ * From CActive
+ *
+ */
+ void DoCancel();
+
+ /**
+ * From CActive
+ *
+ */
+ void RunL();
+
+ /**
+ * From CActive
+ *
+ */
+ TInt RunError(TInt aError);
+
+ /**
+ * Destructor
+ *
+ */
+ ~CPresenceXDM();
+
+ /**
+ * Friend classes
+ *
+ */
+ friend class TPresenceActionXDM;
+ friend class TPresenceTransformXDM;
+ friend class TPresCondIdentityOne;
+ friend class TPresCondIdentityMany;
+ friend class TPresCondSphere;
+ friend class TPresCondValidity;
+ friend class TPresCondMisc;
+
+
+
+ protected:
+
+ /**
+ * Removes given node from document model
+ *
+ * @param CXdmDocumentNode* aNode
+ */
+ void RemoveFromModelL( CXdmDocumentNode* aNode );
+
+
+ private:
+
+ /**
+ * Second phase constructor
+ *
+ * @param TInt XDMSettingsList ID
+ */
+ void ConstructL(const TInt aSettingId );
+
+ /**
+ * C++ constructor
+ *
+ * @param none
+ * @return none
+ */
+ CPresenceXDM();
+
+ /**
+ * Creates the document root if needed
+ */
+ void CreateRootIfNeededL();
+
+ /**
+ * Finds if a Rule Exist, returns its pointer
+ *
+ * @param TDesC& aRuleId rule ID
+ * @return CXdmDocumentNode if rule exist
+ */
+ CXdmDocumentNode* IsRuleExistInt(const TDesC& aRuleId);
+
+ /**
+ * Gets the condition, action or transform node. It is
+ * caller's responsiblity to provide a valid child name.
+ *
+ * @param TDesC& aRuleId rule ID.
+ * @param aRuleChild child node of a rule
+ * @param TBool aCreate if ETrue, creates child node if not exist
+ * @return CXdmDocumentNode* pointer to rule child node or NULL
+ */
+ CXdmDocumentNode* GetRuleChildNodeL(const TDesC& aRuleId,
+ const TDesC& aRuleChild, TBool aCreate);
+
+ /**
+ * Gets the conditions child node pointer in a rule. It is
+ * caller's responsiblity to provide a valid child name.
+ *
+ * @param TDesC& aRuleId rule ID.
+ * @param aCondChild child node of condition
+ * @param TBool aCreate if ETrue, creates child node if not exist
+ * @return CXdmDocumentNode* pointer to condition child node or NULL
+ */
+ CXdmDocumentNode* GetConditionChildNodeL(const TDesC& aRuleId,
+ const TDesC& aCondChild, TBool aCreate);
+
+ /**
+ * Gets a unique rule id
+ *
+ * @param TDesC& aRuleId unique rule id
+ */
+ void GetUniqueRuleId(TDes& aRuleId);
+
+ private: // data
+
+ CXdmProtocolInfo* iXDMProtocolInfo;
+ CXdmEngine* iXDMEngine;
+ CXdmDocument* iPresDocument;
+ TInt iAsyncReq;
+ MRLSPresXDMAsyncHandler* iAsyncHandler;
+
+ };
+
+#endif //__PRESENCEXDM_H__
+
+