syncmlfw/ds/settings/inc/nsmlroam.h
changeset 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/ds/settings/inc/nsmlroam.h	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,232 @@
+/*
+* Copyright (c) 2004 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:  Multiple bearers
+*
+*/
+
+
+#ifndef __NSMLROAM_H_
+#define __NSMLROAM_H_
+
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h> 
+#include <s32file.h> 
+#include <d32dbms.h>
+
+//#define __MODULETEST
+
+#ifdef __MODULETEST
+#include "../test/DSSettingsTester/inc/NSmlTest.h"
+#endif
+
+_LIT(KColProfileId, "profileid");
+_LIT(KColIapId, "iapid");
+_LIT(KColPriority, "priority");
+_LIT(KTable, "iaptable");
+
+_LIT(KSQLCreateTable, "CREATE TABLE iaptable ( profileid INTEGER NOT NULL, priority INTEGER NOT NULL, iapid UNSIGNED INTEGER )");
+_LIT(KSQLCreateIndex, "CREATE UNIQUE INDEX iapindex  ON iaptable ( profileid, priority)");
+_LIT(KSQLDeleteForId, "DELETE FROM iaptable WHERE profileid = %d");
+_LIT(KSQLInsertQuery, "INSERT INTO iaptable ( profileid, priority, iapid) VALUES (%d, %d, %d)");
+_LIT(KSQLMatchQuery2, "SELECT profileid, priority, iapid FROM iaptable");
+_LIT(KSQLSelectUint, "SELECT  profileid, priority, iapid FROM iaptable WHERE profileid = %d and priority = %d");
+_LIT(KSQLMultiQuery, "SELECT  profileid, priority, iapid FROM iaptable WHERE profileid = %d");
+
+const TUint8 KNSmlMaxSQLLength = 100;
+
+class CNSmlRoamTable;
+		
+class CNSmlRoamItem : public CBase
+	{
+	public:
+		/**
+        * Constructor
+        * @return -
+		*/
+		CNSmlRoamItem();
+
+		/**
+        * Constructor
+        * @return -
+		*/
+		CNSmlRoamItem(TInt aProfileId, TUint32 aIAPId, TInt aPriority);
+		
+		/**
+        * Destructor
+        * @return -
+		*/
+		virtual ~CNSmlRoamItem();
+		
+		/**
+        * TInt ProfileId()
+        * @return - Profile id
+		*/
+		inline TInt ProfileId();
+
+		/**
+        * TUint32 IapId()
+        * @return - IAP id
+		*/
+		inline TUint32 IapId();
+
+		/**
+        * TInt Priority()
+        * @return - Priority
+		*/
+		inline TInt Priority();
+			
+	private:
+		friend class CNSmlRoamTable;
+		TInt iProfileId;
+		TUint32 iIAPId;
+		TInt iPriority;
+	};
+
+typedef CArrayPtr<CNSmlRoamItem> CNSmlRoamItemArray;
+typedef CArrayFixFlat<TUint32> CNSmlIAPArray;
+
+
+class CNSmlRoamTable : public CBase
+	{
+	public:
+
+		/**
+        * Constructor
+		* NewLC(RDbNamedDatabase& aDatabase)
+		* @param - Reference to RDBNamedDatabase
+        * @return -  CNSmlRoamTable instance pointer
+		*/
+		IMPORT_C static CNSmlRoamTable* NewLC(RDbNamedDatabase& aDatabase);
+		
+		/**
+        * Constructor
+		* NewL(RDbNamedDatabase& aDatabase)
+		* @param - Reference to RDBNamedDatabase
+        * @return - CNSmlRoamTable instance pointer
+		*/
+		IMPORT_C static CNSmlRoamTable* NewL(RDbNamedDatabase& aDatabase);
+		
+		/**
+        * Destructor
+        * @return - 
+		*/
+		IMPORT_C virtual ~CNSmlRoamTable();
+		
+		/**
+        * void PutItemsL(TInt aProfileId, CIapArray* aItems )
+		* Adds IAPs from array for profile id
+		* @param TInt aProfileId - Profile id
+		* @param CNSmlIAPArray* aItems - pointer to (TUint32) IAP array 
+        * @return -
+		*/
+		IMPORT_C void PutItemsL(TInt aProfileId, CNSmlIAPArray* aItems );
+
+		/**
+        * CIapArray* GetItemsForIdL(TInt aProfileId)
+		* Gets IAPs for profile in an array
+		* @param TInt aProfileId - Profile id
+		* @return - pointer to array of IAPs
+		*/
+		IMPORT_C CNSmlIAPArray* GetItemsForIdL(TInt aProfileId);
+		
+		/**
+        * TUint32 GetItemIAPL(TInt aProfileId, TInt aPriority)
+		* Get IAP for profile and priority
+		* @param TInt aProfileId - Profile id
+		* @param TInt aPriority - Priority
+		* @return - IAP id
+		*/
+		IMPORT_C TUint32 GetItemIAPL(TInt aProfileId, TInt aPriority);
+		
+		/**
+        * void RemoveAllByIdL(TInt aProfileId)
+		* Removes all IAPs for profile id 
+		* @param TInt aProfileId - Profile id
+		* @return -
+		*/
+		IMPORT_C void RemoveAllByIdL(TInt aProfileId);
+
+#ifdef __MODULETEST	
+		IMPORT_C CTestClass* Test();
+#endif
+	private:
+
+		/**
+        * Second construstor
+		* @return -
+		*/
+		void ConstructL();
+
+		/**
+		* Constructor
+		* CNSmlRoamTable( RDbNamedDatabase& aDatabase )
+		* @param RDbNamedDatabase& aDatabase - The database to be used.
+        * @return -
+		*/
+		CNSmlRoamTable( RDbNamedDatabase& aDatabase );
+		
+		/**
+		* Adds item to table
+		* AddItemL( CNSmlRoamItem& aItem )
+		* @param CNSmlRoamItem& aItem - Container for profile id, IAP id and priority
+        * @return -
+		*/
+		void AddItemL( CNSmlRoamItem& aItem );
+		
+		/**
+		* Replaces item to table
+		* void UpdateItemL(RDbView& aView, CNSmlRoamItem& aItem )
+		* @param RDbView& aView - view to table
+		* @param - CNSmlRoamItem& aItem - Container for profile id, IAP id and priority
+        * @return -
+		*/
+		void UpdateItemL(RDbView& aView, CNSmlRoamItem& aItem );
+
+		/**
+		* Handles the insertion of the item
+		* void HandleItemL(CNSmlRoamItem& aItem);
+		* @param CNSmlRoamItem& aItem - Container for profile id, IAP id and priority
+        * @return -
+		*/
+		void HandleItemL(CNSmlRoamItem& aItem);
+
+		/**
+		* Checks whether items for Profile id exists
+		* TBool IsNewItemL(RDbView& aView, TInt aProfileId);
+		* @param RDbView& aView - View to table
+		* @param TInt aProfileId - Profile id
+        * @return - ETrue if new item
+		*/
+		TBool IsNewItemL(RDbView& aView, TInt aProfileId);
+
+		/**
+		* Checks whether item already exists on table
+		* TBool IsNewItemL(RDbView& aView, TInt aProfileId);
+		* @param RDbView& aView - View to table
+		* @param CNSmlRoamItem& aItem - Container for profile id, IAP id and priority
+        * @return - ETrue if new item
+		*/
+		TBool IsNewItemL(RDbView& aView, CNSmlRoamItem& aItem );
+		
+	private:		
+		RDbNamedDatabase& iDatabase;
+		CDbColSet* iColSet;
+
+#ifdef __MODULETEST
+		CTestClass test;
+#endif
+	};
+
+#endif
\ No newline at end of file