metadataengine/server/inc/mdsfindengine.h
changeset 0 c53acadfccc6
child 14 646a02f170b9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/metadataengine/server/inc/mdsfindengine.h	Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,208 @@
+/*
+* Copyright (c) 2005-2009 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:  This is find engine to manage object searching,*
+*/
+
+#ifndef __MDSFINDENGINE_H__
+#define __MDSFINDENGINE_H__
+
+#include <e32base.h>
+
+#include "mdscommoninternal.h"
+
+// FORWARD DECLARATIONS
+class CMdSFindSequence;
+class CMdSServerSession;
+class CMdSObjectLockList;
+class CMdCSerializationBuffer;
+class CMdsSchema;
+class CMdSServer;
+
+// CLASS DECLARATION
+/**
+* CMdSFindEngine.
+*  Class for searching objects from metadata database.
+*/
+class CMdSFindEngine : public CBase
+    {
+    public: // Constructors and destructors
+
+        /**
+        * NewL.
+        * Two-phased constructor.
+        * @param aQueryId query id
+        * @param aParent the session back reference
+        * @param aLockList list of locked objects
+        * @param aSchemaNew schema reference
+        * 
+        * @return Pointer to created CMdSFindEngine object.
+        */
+        static CMdSFindEngine* NewL(
+        	TUint32 aQueryId, 
+            CMdSServerSession& aParent,
+            CMdSObjectLockList& aLockList,
+            CMdsSchema& aSchemaNew);
+
+        /**
+        * NewLC.
+        * Two-phased constructor.
+        * @param aQueryId query id
+        * @param aParent the session back reference
+        * @param aLockList list of locked objects
+        * @param aSchemaNew schema reference
+        * @return Pointer to created CMdSFindEngine object.
+        */
+        static CMdSFindEngine* NewLC(
+        	TUint32 aQueryId, 
+            CMdSServerSession& aParent,
+            CMdSObjectLockList& aLockList,
+            CMdsSchema& aSchemaNew);
+
+        /**
+        * 2nd phase constructor
+        */
+        void ConstructL( CMdsSchema& aSchema );
+
+        /**
+        * ~CMdSFindEngine.
+        * Destructor.
+        */
+        virtual ~CMdSFindEngine();
+
+    public:
+
+	    /**
+	    * Returns query's ID
+	    * @return query ID
+	    */
+	    TUint32 QueryId();
+
+        /**
+        * Creates the result set and sets message pointer
+        * @param aMessage message for asynchronous client messaging
+        */
+        void CreateResultSet(RMessage2 aMessage);
+
+        /**
+        * Sets parameters for the find. Ownership is transferred.
+        */
+        void SetFindParams( TUint32 aNotifyCount );
+
+        /**
+        * Sets serialized criteria buffer for the find. Ownership is transferred.
+        */
+        void SetFindCriteria( CMdCSerializationBuffer* aSerializedCriteria );
+
+	    /**
+	    * Initiates find
+	    * @param aUserLevel defines user's access rights
+	    * @return error code or KErrNone
+	    */
+        TInt FindL( TUserLevel aUserLevel );
+
+	    /**
+	    * Continues ongoing sync find
+        * @return error code or KErrNone
+	    */
+        TInt ContinueL();
+
+	    /** 
+	    * Initiates asynchronous find
+        * @param aUserLevel defines user's access rights
+	    */
+        void FindAsyncL( TUserLevel aUserLevel );
+
+	    /** 
+	    * Continues ongoing find
+	    */
+	    void ContinueAsync();
+
+	    /** 
+	    * Cancels find
+	    */
+        void Cancel( TInt aError );
+
+        /**
+        * Transfer result set to client
+        * @aError error code or KErrNone
+        */
+        void SetComplete( TInt aError );
+
+        /**
+        * Transfer results to client and completes find
+        * @aError error code or KErrNone
+        */
+        void FindComplete( TInt aError );
+
+		const CMdCSerializationBuffer& ResultsL() const;
+
+		/**
+		 * Locks query result objects.
+		 * @param aLockList list of objects that must be locked
+		 */
+		void LockFindResultObjectsL( CMdSObjectLockList& aLockList );
+
+		/**
+		 * Sets result mode.
+		 * @param aResultModeItems ETrue if result mode is item mode
+		 */
+		void SetResultMode( TBool aResultModeItems );
+
+	    /**
+	    * Returns whether find engine is complete or not.
+	    * Completed sequence can be safely delete.
+	    */
+		TBool IsComplete() const;
+
+	    /**
+	    * Returns whether find engine's query is complete or not.
+	    */
+		TBool IsQueryComplete();
+
+		CMdSServer& GetServer() const;
+
+    private: // Constructors and destructors
+
+        /**
+        * CMdSManipulationEngine.
+        * C++ default constructor.
+        * @param .
+        */
+        CMdSFindEngine(
+        	TUint32 aQueryId, 
+            CMdSServerSession& aParent,
+            CMdSObjectLockList& aLockList);
+
+    private: // Data
+    
+    	TUint32 iQueryId;
+
+        CMdSServerSession& iParent;
+
+        CMdSObjectLockList& iLockList;
+
+        CMdSFindSequence* iSequence;
+
+		CMdCSerializationBuffer* iSerializedCriteria;
+
+        RMessage2 iMessage;
+
+        TBool iAsyncPending;
+        
+        // if last query result was Items result
+        TBool iLastResultModeItems;
+
+    };
+
+#endif //__MDSFINDENGINE_H__
\ No newline at end of file