wvsettings20/IMPSSrc/CIMPSSAPCenRep.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvsettings20/IMPSSrc/CIMPSSAPCenRep.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,259 @@
+/*
+* 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:  IMPS SAP Settings Store implementation.
+*
+*/
+
+
+#ifndef CIMPSSAPCENREP_H
+#define CIMPSSAPCENREP_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <commdb.h>
+
+#include "impssapsettings.h"
+
+//Encryption & decryption passwords has been removed
+//401-1808 - Ease of Instant Messaging SERVER customization
+
+
+// FORWARD DECLARATIONS
+
+class CRepository;
+class CIMPSSAPSettings;
+class CIMPSSAPSettingsList;
+class CIMPSSAPNotifier;
+class MIMPSSAPObserver;
+
+// CLASS DECLARATION
+
+/**
+*  Implementation for CIMPSSAPSettingsStore.
+*  Uses central repository for storing SAP data.
+*
+*  @see CIMPSSAPSettingStore
+*  @lib WVSAPSettings.dll
+*  @since 3.0
+*/
+NONSHARABLE_CLASS( CIMPSSAPCenRep ): public CBase
+    {
+public:  // Constructors and destructor
+
+    /**
+    * Two-phased constructor.
+    * @param aPriority Priority for active object based store event
+    *        notifier. This determines priority of notifying store
+    *        event observers.
+    */
+    static CIMPSSAPCenRep* NewL( TInt aPriority );
+    static CIMPSSAPCenRep* NewLC( TInt aPriority );
+
+    /**
+    * Destructor.
+    */
+    virtual ~CIMPSSAPCenRep();
+
+
+public: // Implemented methods for CIMPSSAPSettingsStore
+
+    /**
+     * @see CIMPSAPSettingsStore for description of these methods.
+     *
+     * @since 3.0
+     */
+
+    // Observer support
+
+    void AddObserverL( MIMPSSAPObserver* aObserver, TIMPSAccessGroup aGroup );
+    void RemoveObserver( MIMPSSAPObserver* aObserver );
+
+    // SAP Settings related
+
+    TUint32 StoreNewSAPL( CIMPSSAPSettings* aSAPSettings, TIMPSAccessGroup aGroup );
+    void GetSAPL( TUint32 aUid, CIMPSSAPSettings* aSAPSettings );
+    void DoGetSAPL( TUint32 aUid, CIMPSSAPSettings* aSAPSettings );
+    TInt SAPCountL( TIMPSAccessGroup aGroup );
+    void DeleteSAPL( TUint32 aUid );
+    void UpdateOldSAPL( CIMPSSAPSettings* aSAPSettings, TUint32 aUid );
+    void PopulateSAPSettingsListL( CIMPSSAPSettingsList& aList,
+                                   TIMPSAccessGroup aGroup,
+                                   TBool aAscending = ETrue );
+
+    // Default SAP
+
+    void GetDefaultL( TUint32& aUid, TIMPSAccessGroup aGroup );
+    void GetDefaultL( CIMPSSAPSettings* aSAPSettings, TIMPSAccessGroup aGroup );
+    void SetToDefaultL( TUint32 aUid, TIMPSAccessGroup aGroup );
+
+private: //Constructors
+
+    /**
+    * C++ default constructor.
+    */
+    CIMPSSAPCenRep();
+
+    /**
+    * By default Symbian 2nd phase constructor is private.
+    *
+    * @param aPriority Priority for active object based store event
+    *        notifier. This determines priority of notifying store
+    *        event observers.
+    */
+    void ConstructL( TInt aPriority );
+
+private: //Helper methods
+
+    /**
+     * Calculates cenrep Id for a setting using bitmasks.
+     *
+     * @param aSetting The enumerated setting value to use in calculation
+     * @param aUid Uid of the SAP.
+     * @param aGroup Access group of the SAP
+     * @return The calculated Id
+     * @since 3.0
+     */
+    TUint32 MaskedId( TInt aSetting, TUint32 aUid, TIMPSAccessGroup aGroup );
+
+    /**
+     * Checks if SAP with given name already exists.
+     *
+     * @param aSAPName Name of the SAP to be checked
+     * @param aUid SAP's name in SAP with this Uid is allowed to be duplicate
+     *		  to enable updating of existing SAPs
+     * @param aGroup Access group which within the check is made
+     * @return ETrue if name already exists, otherwise EFalse
+     * @since 3.0
+     */
+
+    TBool SAPNameExistsL( const TDesC& aSAPName, TUint32 aUid, TIMPSAccessGroup aGroup );
+
+    /**
+     * Checks if SAP exists in the central repository. Leaves
+     * wíth KErrNotFound if SAP does not exist.
+     *
+     * @param aUid Uid to check
+     * @since 3.0
+     */
+
+    void SAPExistsL( TUint32 aUid );
+
+    /**
+     * Gets new unique uid for storing new SAP.
+     *
+     * @return New Uid, leaves with KErrInUse if all Uids are in use
+     * @since 3.0
+     */
+
+    TUint32 NewUidL();
+
+    /**
+     * Gets SAP access group .
+     *
+     * @param aUid Uid of the SAP for getting access group
+     * @return SAP access group
+     * @since 3.0
+     */
+
+    TIMPSAccessGroup SAPTypeL( TUint32 aUid );
+
+    /**
+     * Gets SAP protection level.
+     *
+     * @param aUid Uid of the SAP for getting protection
+     * @param aGroup SAP's access group
+     * @return SAP protection level
+     * @since 3.0
+     */
+
+    TIMPSSAPProtection SAPProtectionL( TUint32 aUid, TIMPSAccessGroup aGroup );
+
+    /**
+     * Sets up default SAP ids if they do not exist in the repository.
+     *
+     * @since 3.0
+     */
+
+    void SetUpDefaultsL();
+
+    /**
+     * Finds existing SAP ids from desired access group and populates them
+     * to an array.
+     *
+     * @param aGroup desired access group
+     * @param aFoundSAPs array for storing found SAP ids
+     * @since 3.0
+     */
+
+    void FindSAPsFromAccessGroupL( TIMPSAccessGroup aGroup,
+                                   RArray<TUint32>& aFoundSAPs );
+
+    /**
+     * Starts new transaction if there is no ongoing transaction.
+     *
+     * @param aMode Transaction mode
+     * @since 3.0
+     */
+
+		TBool StartOwnTransactionL( TInt aMode );
+
+    /**
+     * Converts Access Point Name into AP value
+     * Configurability req.
+     * 401-1808 - Ease of Instant Messaging SERVER customization
+     * @param aAPName - AP name
+     * @return AP Number in the Commnection DB
+     * @since 5.0
+     */
+
+    TUint32 DoGetAccessPointsL( const TDesC& aAPName );
+
+
+    /**
+     * Converts Access Point Number into AP Name value
+     * Configurability req.
+     * 401-1808 - Ease of Instant Messaging SERVER customization
+     * @param aAP - AP Number in the Commnection DB
+     * @return HBufC AP name, Caller should free this data.
+     * @since 5.0
+     */
+    HBufC* DoGetAccessPointsNameL( const TUint32 aAP );
+
+		/**
+		* Reset iInTransaction state by invoke ReSetTransactionFlag(). 
+		* This happens when iRepository is not committed and leave occurred.
+		* @param aAP - Instance of this class
+		*/		
+		static void ReSetTransactionState(TAny* aPtr);
+
+		/**
+		* Reset iInTransaction flag
+		*/	
+		void ReSetTransactionFlag();
+
+    /**
+     * Unit test class is a friend class.
+     */
+    friend class T_CIMPSSAPSecurity;	// CSI: 36 #
+
+private:    // Data
+    CRepository* iRepository; // Handle to central repository session (own)
+    CIMPSSAPNotifier* iNotifier; // SAP Settings notifier (own)
+    CCommsDatabase* iCommsDatabase; //Accesses the communications database
+    TBool iInTransaction;
+    };
+
+#endif      // CIMPSSAPCENREP_H
+
+// End of File