diff -r 000000000000 -r c8caa15ef882 pressrv_plat/authorization_api/inc/cpresencexdm.h --- /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 +#include +#include + +#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__ + +