serviceproviders/sapi_landmarks/tsrc/dev/tlandmarkstest/tlmlandmarktests/inc/landmarkservice.h
changeset 5 989d2f495d90
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_landmarks/tsrc/dev/tlandmarkstest/tlmlandmarktests/inc/landmarkservice.h	Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,376 @@
+/*
+* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:   CLandmarkService class
+ *
+*/
+
+
+
+#ifndef __CLANDMARKSERVICE_H__
+#define __CLANDMARKSERVICE_H__
+
+#ifdef _DEBUG
+#include <flogger.h>
+#endif
+
+// INCLUDES
+#include <e32base.h>
+#include <e32cmn.h>
+#include <badesca.h>
+
+//FORWARD DECLARARTIONS
+class CLandmarkManageHandlers;
+class MLandmarkObserver;
+class CLandmarkFilter;
+class CPosLandmarkParser;
+class CPosLandmarkEncoder;
+class CPosLmItemIterator;
+class CPosLmDatabaseManager;
+class CPosLandmark;
+class CPosLandmarkCategory;
+class TPosLmDatabaseSettings;
+class CLandmarkManageObjects;
+
+/**
+ * CLandmarkService
+ * This class has the core implementation. The member functions of this class
+ * call the native landmarks api's to perform the necessary operations. This class 
+ * also owns the garbage collector which takes care of active objects associated 
+ * with async requests. It also owns the CLandmarkManageHandlers object that manages
+ * the handles to open databases. The interface class calls the appropriate member
+ * functions of this class to perform the required operation.
+ */
+// CLASS DECLARATION
+NONSHARABLE_CLASS(CLandmarkService): public CBase
+	{
+public:
+	/**
+	 * TPosItem
+	 * Specifies whether the id passed is a landmark id or a category id.
+	 */
+	enum TPosItem
+		{
+		ECategory = 0 /**<
+		 Item is a landmark category id. */,
+		ELandmark /**<
+		 Item is a landmark id. */,
+		};
+	/**
+	 * TDatabaseType
+	 *  Specifies whether the database is local or remote.
+	 */
+	enum TDatabaseType
+		{
+		ELocalDatabase = 0 /**<
+		 database is a local. */,
+		ERemoteDatabase /**<
+		 database is remote.  */,
+		};
+
+public: // New methods
+
+	/**
+	 * NewL.
+	 * Two-phased constructor.
+	 * Create a CLandmarkService object.
+	 * @return A pointer to the created instance of CLandmarkService.
+	 */
+	IMPORT_C static CLandmarkService* NewL();
+
+	/**
+	 * NewLC.
+	 * Two-phased constructor.
+	 * Create a CLandmarkService object.
+	 * @return A pointer to the created instance of CLandmarkService.
+	 */
+	IMPORT_C static CLandmarkService* NewLC();
+
+	/**
+	 * ~CLandmarkService
+	 * Destructor.
+	 */
+	~CLandmarkService();
+
+public: // Functions to retrieve data members
+
+	/**
+	 * ImportL.
+	 * Imports landmarks to the requested database.
+	 * @param aIterator A pointer reference to the list of imported landmarks. User
+	 * owns the iterator.
+	 * @param aLandmarkParser The instance of CPosLandmarkParser that 
+	 * will parse the input landmark file.
+	 * @param aDatabaseUri The URI of the database to which the parsed landmarks 
+	 * will be imported.
+	 */
+	IMPORT_C void ImportL( CPosLmItemIterator*& aIterator,
+			CPosLandmarkParser& aLandmarkParser,
+			const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * ExportL.
+	 * Export a set of landmarks from the requested database to a file.
+	 * @param aLandmarkEncoder A pointer to a landmark encoder object.
+	 * @param aLandmarkIdArray The array of landmark ids which should be exported.
+	 * @param aDatabaseUri The URI of the database from which the landmarks will 
+	 * be exported.
+	 */
+	IMPORT_C void ExportL( CPosLandmarkEncoder& aLandmarkEncoder,
+			const RArray<TPosLmItemId>& aLandmarkIdArray,
+			const TDesC& aDatabaseUri = KNullDesC ) const;
+
+	/**
+	 * GetListL.
+	 * Gets a list of landmarks/landmark categories from the requested database synchronously.
+	 * @param aIterator A pointer reference to the list of retrieved landmarks/landmark 
+	 * categories. User owns the iterator.
+	 * @param aFilter The filter to be used for searching landmarks/landmark categories
+	 * in database.
+	 * @param aDatabaseUri The URI of the database from which landmarks/lanmdark categories 
+	 * should be fetched.
+	 */
+	IMPORT_C void GetListL ( CPosLmItemIterator*& aIterator,
+			CLandmarkFilter& aFilter, const TDesC& aDatabaseUri = KNullDesC ) const;
+
+	/**
+	 * GetListL.
+	 * Gets a list of landmark databases.
+	 * @param aDatabaseList A pointer reference to the list of retrieved databases. 
+	 * User owns allocated list.
+	 * @param aProtocol Protocol which matches that of the databases to be retrieved.
+	 */
+	IMPORT_C void GetListL( CDesCArray*& aDatabaseList,
+			const TDesC& aProtocol = KNullDesC ) const;
+
+	/**
+	 * GetListL.
+	 * Gets a list of landmarks/landmark categories from the requested database asynchronously.
+	 * @param aTransactionId The transaction id assigned to this asynchronous request.
+	 * @param aFilter The filter to be used for searching landmarks/landmark categories 
+	 * in database.
+	 * @param aDatabaseUri The URI of the database from which landmarks/lanmdark categories 
+	 * should be fetched.
+	 */
+	IMPORT_C void GetListL( TInt32 aTransactionId,
+			CLandmarkFilter& aFilter, const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * AddItemL.
+	 * Adds a new Landmark to the given database.
+	 * @param aLandmark CPosLandmark instance to be added to database.
+	 * @param aDatabaseUri The URI of the database to which the CPosLandmark
+	 * instance should be added.
+	 */
+	IMPORT_C TPosLmItemId AddItemL( CPosLandmark& aLandmark,
+			const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * AddItemL.
+	 * Adds a new Landmark category to the given database.
+	 * @param aCategory CPosLandmarkCategory instance to be added to database.
+	 * @param aDatabaseUri The URI of the database to which CPosLandmarkCategory
+	 * instance should be added.
+	 */
+	IMPORT_C TPosLmItemId AddItemL( CPosLandmarkCategory& aCategory,
+			const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * AddItemL.
+	 * Adds a new database to terminal.
+	 * @param aDatabaseUri The URI of the database to be added to terminal.
+	 */
+	IMPORT_C void AddItemL( const TDesC& aDatabaseUri );
+
+	/**
+	 * UpdateItemL.
+	 * Updates an existing Landmark in the given database.
+	 * @param aLandmark CPosLandmark instance to be updated in database.
+	 * @param aDatabaseUri The URI of the database in which CPosLandmark 
+	 * instance should be updated.
+	 */
+	IMPORT_C void UpdateItemL( const CPosLandmark& aLandmark,
+			const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * UpdateItemL.
+	 * Updates an existing Landmark category in the given database.
+	 * @param aCategory CPosLandmarkCategory instance to be updated in database.
+	 * @param aDatabaseUri The URI of the database to which CPosLandmarkCategory 
+	 * instance should be updated.
+	 */
+	IMPORT_C void UpdateItemL( const CPosLandmarkCategory& aCategory,
+			const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * UpdateItemL.
+	 * Updates existing Database Information.
+	 * @param aSettings TPosLmDatabaseSettings information to be updated.
+	 * @param aDatabaseUri The URI of the database to be updated.
+	 */
+	IMPORT_C void UpdateItemL( TPosLmDatabaseSettings aSettings,
+			const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * LandmarkLC.
+	 * Retrieves a Landmark from the database.
+	 * @param aLandmarkId Id of the landmark to be retrieved.
+	 * @param aDatabaseUri The URI of the database from which the CPosLandmark
+	 * instance should be retrieved.
+	 * @return A pointer to CPosLandmark instance.
+	 */
+	IMPORT_C CPosLandmark* LandmarkLC( const TPosLmItemId& aLandmarkId,
+			const TDesC& aDatabaseUri = KNullDesC ) const;
+
+	/**
+	 * CategoryLC.
+	 * Retrieves a Landmark category from the database.
+	 * @param aCategoryId Id of the landmark category to be retrieved.
+	 * @param aDatabaseUri The URI of the database from which the CPosLandmarkCategory
+	 * instance should be retrieved.
+	 * @return A pointer to CPosLandmarkCategory instance.
+	 */
+	IMPORT_C CPosLandmarkCategory* CategoryLC( const TPosLmItemId& aCategoryId,
+			const TDesC& aDatabaseUri = KNullDesC ) const;
+
+	/**
+	 * RemoveItemL.
+	 * Removes a Landmark/Landmark category from given database.
+	 * @param aItemId The id of the Landmark/Landmark category to be removed.
+	 * @param aItemIsLandmark Whether id passed is a landmark id or a category id.
+	 * @param aDatabaseUri The URI of the database from which the 
+	 * Landmark/Landmark category is to be removed.
+	 */
+	IMPORT_C void RemoveItemL( TPosLmItemId aItemId, TPosItem aItemIsLandmark,
+			const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * RemoveItemL.
+	 * Removes the given database.
+	 * @param aDatabaseUri The URI of the database to be removed from terminal.
+	 */
+	IMPORT_C void RemoveItemL( const TDesC& aDatabaseUri );
+
+	/**
+	 * SetActiveL.
+	 * Sets specified database as an active database.
+	 * @param aDatabaseUri The URI of the database to be set as an active database.
+	 */
+	IMPORT_C void SetActiveL( const TDesC& aDatabaseUri );
+
+	/**
+	 * LinkCategoryToLandmarksL.
+	 * Associates a category with a set of landmarks.
+	 * @param aCategoryId The id of category.
+	 * @param aLandmarkIdArray The array of landmark ids to which the 
+	 * category is to be associated.
+	 * @param aDatabaseUri The URI of the database in which the landmarks and category exist.
+	 */
+	IMPORT_C void LinkCategoryToLandmarksL( TPosLmItemId aCategoryId,
+			RArray< TPosLmItemId >& aLandmarkIdArray,
+			const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * UnlinkCategoryToLandmarksL.
+	 * Dissociates a category with a set of landmarks.
+	 * @param aCategoryId The id of category.
+	 * @param aLandmarkIdArray The array of landmark ids to which the 
+	 * category is to be dissociated.
+	 * @param aDatabaseUri The URI of the database in which the landmarks and category exist.
+	 */
+	IMPORT_C void UnlinkCategoryToLandmarksL( TPosLmItemId aCategoryId,
+			RArray< TPosLmItemId >& aLandmarkIdArray,
+			const TDesC& aDatabaseUri = KNullDesC );
+
+	/**
+	 * RegisterObserver.
+	 * Registers an observer for Asynchronous call backs.
+	 * @param aObserver A pointer to a concrete MLandmarkObserver instance.
+	 */
+	IMPORT_C void RegisterObserver( MLandmarkObserver* aObserver );
+
+	/**
+	 * Cancel.
+	 * Cancels an ongoing asynchronous request.
+	 * @param aTransactionId The transaction id of the asynchronous request.
+	 */
+	IMPORT_C void Cancel( TInt32 aTransactionId ) const;
+
+	/**
+	 * GetDefaultDbUri.
+	 * Gets the URI of the default database.
+	 * @param aDefaultDbUri A reference to the URI of the default database.				
+	 */
+	IMPORT_C void GetDefaultDbUriL( TPtrC& aDefaultDbUri ) const;
+
+private:// helper functions
+
+	/**
+	 * GetDbTypeFromUri.
+	 * Gets the type of database.
+	 * @param aDatabaseUri The URI of the database whose information is queried.
+	 * @return Error.
+	 */
+	TDatabaseType GetDbTypeFromUri ( const TDesC& aDbUri ) const;
+
+private: // Constructors
+
+	/**
+	 * ConstructL
+	 * 2nd phase constructor.
+	 * Perform the second phase construction of a
+	 * CLandmarkService object.
+	 */
+	void ConstructL();
+
+	/**
+	 * CLandmarkService.
+	 * C++ default constructor.
+	 */
+	CLandmarkService();
+
+private: // Data members
+
+	/**
+	 * iManageHandler
+	 * CPosLmManageHandler instance.
+	 */
+	CLandmarkManageHandlers* iManageHandler;
+
+	/**
+	 * iDatabaseManager
+	 * CPosLmDatabaseManager instance.
+	 */
+	CPosLmDatabaseManager* iDatabaseManager;
+
+	/**
+	 * iObserver
+	 * MLandmarkObserver instance.
+	 */
+	MLandmarkObserver* iObserver;
+
+	/**
+	 * iManageObjects
+	 * CLandmarkManageObjects instance.
+	 */
+	CLandmarkManageObjects* iManageObjects;
+
+#ifdef _DEBUG
+	RFileLogger iLog;
+#endif		
+	};
+
+#endif // __CLANDMARKSERVICE_H__
+
+// End of File
+