pressrv_plat/authorization_api/inc/prescondvalidity.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:05:17 +0200
changeset 0 c8caa15ef882
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* 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 class represents Presence Condition
*  validity part.
*
*/



#ifndef __PRESCONDVALIDITY_H__
#define __PRESCONDVALIDITY_H__

// Includes
#include <e32std.h>
#include <e32base.h>
#include <badesca.h>
#include <rlspresxdmconsts.h>

// Forward declarations
class CPresenceXDM;
class CXdmDocumentNode;

// Class declaration
/** 
* This class should be used in conjunction with an already created CPresenceXDM.
*  The CPresenceXDM deals with the Presence rules as a whole and has communication
*  with the server.
*  TPresCondValidity is used to manipulate the validity part of Condition in a rule. 
*  Remember to call Init function after constructing this object.
*  
*  @lib rlspresxdm.lib
*  @since S60 3.2
*/
class TPresCondValidity
    {
    public:
    
        /**
        * C++ Constructor, After contructing Init must be called before using
        * this object.
        */                                        
        IMPORT_C TPresCondValidity();
        
        /**
        * Initializes the object with the given pointer to CPresenceXDM.
        * This function must be called before using other functions.
        *
        * @param CPresenceXDM* pointer to created CPresenceXDM
        * @return none
        */
        IMPORT_C void Init(CPresenceXDM* const aPresXDM);
        
        /**
        * Gets condition validity values from a rule
        *
        * @param TDesC& aRuleID rule ID.
        * @param RArray<TTimePeriod>& returned array of valid times in local time.
        * @return TInt KErrNone, KErrNotFound if rule doesnt found or none
        *   of validities found
        */
        IMPORT_C TInt GetValidityL(const TDesC& aRuleID, 
                                        RArray<TTimePeriod>& aValidTimes);
                                        
        /**
        * Deletes condition validity values from a rule
        *
        * @param TDesC& aRuleID rule ID.
        * @return TInt KErrNone, KErrNotFound if rule doesnt found.
        */
        IMPORT_C TInt DeleteAllValidityL(const TDesC& aRuleID);
        
        /**
        * Adds condition validity to a rule
        *
        * @param TDesC& aRuleID rule ID.
        * @param TTimePeriod valid time to be added. In local time.
        * @return TInt KErrNone, KErrNotFound if rule doesnt found.
        */
        IMPORT_C TInt AddValidityL(const TDesC& aRuleID, 
                                                const TTimePeriod aValidTime);
                                                
        /**
        * Checks if rule is valid for given time
        *
        * @param TDesC& aRuleID rule ID.
        * @param TTimePeriod valid time to be checked, in local time
        * @return ETrue if given time is a subset of valid times in a rule
        */
        IMPORT_C TBool IsTimeValidL(const TDesC& aRuleID, 
                                                const TTimePeriod aTime);
                                                
    private:
    
        /**
        * Gets the Validity node pointer in a rule
        *
        * @param TDesC& aRuleID rule ID.
        * @param TBool aCreate if ETrue, creates Validity node if not exist
        * @return CXdmDocumentNode* pointer to Validity node or NULL
        */
        CXdmDocumentNode* GetValidityNodeL(const TDesC& aRuleID, 
                                                        TBool aCreate);

        /**
        * Parse from XML time string to TTime
        *
        * @param TDesC& aXMLTimeString, XML time string to parse
        * @param TTime& aDateTime, returned here in TTime format
        * @return error code
        */
        TInt ParseFromXMLTimeString(const TDesC& aXMLTimeString, 
                                                          TTime& aDateTime);
                                                          
        /**
        * Parse to XML time string from TTime
        *
        * @param TDes& aXMLTimeString, retuned XML time string
        * @param TTime aDateTime, input TTime
        * @return error code
        */
        TInt FormatToXMLTimeStringL(TDes& aXMLTimeString, const TTime aDateTime);
        
        /**
        * Convert local time to universal time
        *
        * @param TTime& aLocalDateTime, coverted to universal TTime
        * @return none
        */
        void ConvertToUniversal(TTime& aLocalDateTime);
        
        /**
        * Convert universal time to local time
        *
        * @param TTime& aUniversalDateTime, coverted to local TTime
        * @return none
        */
        void ConvertToLocal(TTime& aUniversalDateTime);
        

        /**
        * Logs Given dateTime
        *
        * @param TDateTime aDateTime date time to log
        * @return None
        */
        void LogDateTime(TDateTime aDateTime);

    private: // data
        
        // Pointer to CPresenceXDM - not owned
        CPresenceXDM*           iPresXDM;      // not owned
        
    };
    
   
#endif //__PRESCONDVALIDITY_H__