videoscheduler/SchedulerServer/inc/CCseScheduleDB.h
branchRCL_3
changeset 22 826cea16efd9
parent 21 798ee5f1972c
child 23 13a33d82ad98
--- a/videoscheduler/SchedulerServer/inc/CCseScheduleDB.h	Thu Aug 19 10:54:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,447 +0,0 @@
-/*
-* 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 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:    header file for CCseScheduleDB class*
-*/
-
-
-
-#ifndef _CCSESCHEDULEDB_H
-#define _CCSESCHEDULEDB_H
-
-#include <e32base.h>
-#include <d32dbms.h>    // RDbStoreDatabase
-#include <f32file.h>    // RFs
-#include <s32file.h>
-#include <babackup.h>
-
-// CONSTANTS
-const int KCseCustomSqlLength               = 256;
-const int KCseDbCompactTimeout              = 30000000;
-
-// Constant for filename definition
-_LIT( KCseScheduleDBName, "CseSchedules.db" );
-// Database table
-_LIT( KCseDatabaseTable,                    "CseDatabase" );
-_LIT( KCseDatabaseVersionCol,               "DbVersion" );
-_LIT( KCseDatabaseReserved1Col,             "DbReserved1" );
-_LIT( KCseDatabaseReserved2Col,             "DbReserved2" );
-
-// Program table
-_LIT( KCseScheduleTable, 					"ScheduleEvent" );
-_LIT( KCseScheduleDbKeyCol, 				"Key" );
-_LIT( KCseScheduleNameCol,					"Name" );
-_LIT( KCseScheduleStartTimeCol,				"StartTime" );
-_LIT( KCseScheduleEndTimeCol,				"EndTime" );
-_LIT( KCseScheduleApplicationUIDCol, 		"ApplicationUID" );
-_LIT( KCseSchedulePlugInUIDCol,    			"PlugInUID" );
-_LIT( KCseScheduleTypeCol,					"Type" );
-_LIT( KCseScheduleApplicationSpecificCol,	"ApplicationSpecificData" );
-_LIT( KCseScheduleRunCountCol,              "ScheduleRunCount" );
-_LIT( KCseScheduleStateCol,                 "ScheduleState" );
-_LIT( KCseSchedulePluginTypeCol,            "PluginType" );
-_LIT( KCseScheduleReserved1Col,             "ScheduleReserved1" );
-_LIT( KCseScheduleReserved2Col,             "ScheduleReserved2" );
-
-class CCseScheduledProgram;
-
-/**  
-* Version of CleanupXxxxPushL() that can be used to 'ResetAndDestroy'
-* the supplied object if the clean-up stack unwinds.
-*/
-template <class T>
-class CleanupResetAndDestroy
-    {
-    public:
-        inline static void PushL( T& aRef );
-    private:
-        static void ResetAndDestroy( TAny *aPtr );
-    };
-    
-template <class T>
-    inline void CleanupResetAndDestroyPushL( T& aRef );
-
-template <class T>
-inline void CleanupResetAndDestroy<T>::PushL( T& aRef )
-     {
-     CleanupStack::PushL( TCleanupItem( &ResetAndDestroy, &aRef ) );
-     }
-
-template <class T>
-void CleanupResetAndDestroy<T>::ResetAndDestroy( TAny *aPtr )
-    {
-    ( static_cast<T*>( aPtr ) )->ResetAndDestroy();
-    }
-    
-template <class T>
-inline void CleanupResetAndDestroyPushL( T& aRef )
-    {
-    CleanupResetAndDestroy<T>::PushL( aRef );
-    }
-    
-    
-/**
-* Schedule database.
-*/
-class CCseScheduleDB : public CBase,
-                       public MBackupObserver
-{
-	public:	// Constructors and destructors	
-		virtual ~CCseScheduleDB();
-		
-		/**
-        * Two-phased constructor.
-        */
-		IMPORT_C static CCseScheduleDB* NewL();
-		
-		/**
-        * Enum for schedule state
-        */
-		enum TCseScheduleState
-            {
-            ECseWaiting = 0,
-            ECseRunning            
-            };
-        
-        /**
-        * Enum for database access
-        */    
-        enum TCseDatabaseAccess
-            {
-            ECseDbOpen = 0,
-            ECseDbLocked            
-            };
-            
-    public: // Methods from MBackupObserver
-        void ChangeFileLockL(const TDesC &aFileName, TFileLockFlags aFlags);
-		
-	public: // New methods
-		/**
-		* Adds given schedule to database. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param	aData schedule to be added to database.
-		* @return	None
-		*/
-		void AddScheduleL( CCseScheduledProgram& aData );
-		
-		/**
-		* Removes schedule from database. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param	aData schedule to be removed from database.
-		* @return	None
-		*/
-		void RemoveScheduleL( const TUint32 aDbIdentifier );
-		
-		/**
-		* Finds start time of the schedule that is happening next from the database.
-		* Method will leave with KErrLocked -error code if Backup/Restore is going on.
-		* @return	Start time of the next schedule.
-		*/
-		TTime GetNextScheduleTimeL();
-		
-		/**
-		* Fills parameter array with schedules that have same starting time as
-		* paramter time. Method will leave with KErrLocked -error code if
-		* Backup/Restore is going on.
-		* @param	aSchdeduleTime      Start time of the schedules fetched.
-		* @param	aNextScheduleArray  Array containing schedules after call
-		*                               is completed.
-		* @return	None
-		*/
-		void FillScheduleArrayByTimeL( const TTime& aScheduleTime, 
-			 		RPointerArray<CCseScheduledProgram>& aNextScheduleArray );
-		
-		/**
-		* Gets the given schedule from database. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param	aDbIdentifier       Database identifier of the schedule fetched.
-		* @param	aSchedule           Pointer where schedule is stored when call
-		*                               is completed.
-		* @return	None
-		*/	 						 
-		void GetScheduleByDbIdentifierL( const TUint32 aDbIdentifier, 
-                                         CCseScheduledProgram* aSchedule );
-	
-		/**
-		* Get application specific schedules from db. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param    aAppUid         Application UID.
-		* @param    aScheduleArray  Array where to put scheduled events.
-		* @return	None
-		*/
-		void GetApplicationSchedulesL( const TInt32 aAppUid, 
-                                       RPointerArray<CCseScheduledProgram>& aArray );
-
-		/**
-		* Get overlapping schedules. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param    aType           Schedule type (one from 
-		* 		                    CCseScheduledProgram::TCseScheduleType)
-		* @param    aStartTime      Start time
-		* @param    aEndTime        End Time
-		* @param    aResultArray    On return, contains pointers to overlapping schedules
-		*               		    empty if none found.
-		* @return   None.
-		*/
-		void GetOverlappingSchedulesL( const TInt32 aType, 
-			                           const TTime& aStartTime,
-			                           const TTime& aEndTime,
-			                           RPointerArray<CCseScheduledProgram>& aResultArray );
-			
-		/**
-		* Increases runcount of given schedule in DB. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param    aDbIdentifier   Database identifier of the schedule thats
-		*                           runcount is to be incremented		
-		*/
-		void IncreaseRunCountL( const TUint32 aDbIdentifier );
-		
-		/**
-		* Gets the runcount of give schedule. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param    aDbIdentifier   DbIdentifier of the schedule whos runcount is fetched.
-		* @return   Run count of the schedule.
-		*/
-		TInt32 GetRunCountL( const TUint32 aDbIdentifier );
-		
-		/**
-		* Gets the state of give schedule. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param    aDbIdentifier   DbIdentifier of the schedule whos state is fetched.
-		* @return   Schedule state (one of the CCseScheduledDB::TCseScheduleState)
-		*/
-		TInt32 GetScheduleStateL( const TUint32 aDbIdentifier );
-		
-		/**
-		* Sets the state of give schedule. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param    aDbIdentifier   DbIdentifier of the schedule whos state is fetched.
-		* @param    aState          State to be set.
-		* @return   None
-		*/
-		void SetScheduleStateL( const TUint32 aDbIdentifier,
-                                const TInt32 aState );
-        
-        /**
-		* Gets the startup schedules from the DB. When phone is set on, we try to run all
-		* schdeulus that were on run when the phone was set off (run count is bigger than 0).
-		* Method will leave with KErrLocked -error code if Backup/Restore is going on.
-		* @param    aResultArray   Array where schedules that were on run are stored.
-		* @return   None
-		*/
-        void StartupSchedulesL( RPointerArray<CCseScheduledProgram>& aResultArray );
-        
-        /**
-		* Get plugin specific schedules from db. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param    aPluginUid      Application UID.
-		* @param    aScheduleArray  Array where to put scheduled events.
-		* @return	None
-		*/
-        void GetSchedulesByPluginL( const TInt32 aPluginUid,
-						            RPointerArray<CCseScheduledProgram>& aArray );
-
-        /**
-		* Get plugin specific schedules of specific type from db. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.
-		* @param    aType           Schedule type
-		* @param    aScheduleArray  Array where to put scheduled events.
-		* @return	None
-		*/
-        void GetSchedulesByTypeL( const TInt32 aType,
-						          RPointerArray<CCseScheduledProgram>& aArray );
-						          
-        /**
-		* Get schedules in given timeframe. Method will leave with
-		* KErrLocked -error code if Backup/Restore is going on.	
-		* @param    aBeginning      Start time of timeframe
-		* @param    aEnd            End Time of timeframe
-		* @param    aResultArray    On return, contains pointers to overlapping schedules
-		*               		    empty if none found.
-		* @return   None.
-		*/
-		void GetSchedulesByTimeframeL( const TTime& aStartTime,
-			                           const TTime& aEndTime,
-			                           RPointerArray<CCseScheduledProgram>& aResultArray );
-			                           
-        /**
-		* Gets all the uid's of different plugins that are in DB.
-		* KErrLocked -error code if Backup/Restore is going on.	
-		* @param    aPlugins    On return, contains all the different plugin uid's in
-		*               		db. Empty if none found.
-		*/
-		void GetPluginsL( RArray<TInt32>& aPlugins );
-		
-		/**
-		* Get the next happening time of schedule from database based on plugin uid.
-		* KErrLocked -error code if Backup/Restore is going on.	
-		* @param    aPluginUid  Plugin uid in which to base the search
-	    * @return   Next start time of the schedule of given plugin Uid.
-		*/
-		TTime GetNextScheduleTimeByPluginL( TInt32 aPluginUid );
-		
-		/**
-		* Gets all the schedules that are going to happen at the given time based on plugin uid.
-		* KErrLocked -error code if Backup/Restore is going on.	
-		* @param    aScheduleTime       Start time in which to base the search
-		* @param    aPluginUid          Plugin uid in which to base the search
-		* @param    aNextScheduleArray  On return, contains pointers to schedules.
-		*/
-		void GetSchedulesByTimeAndPluginL( 
-		                         const TTime& aScheduleTime, 
-                                 TInt32 aPluginUid,
-					             RPointerArray<CCseScheduledProgram>& aNextScheduleArray );
-
-
-	private:
-	    /**
-        * C++ default constructor.        
-        */
-		CCseScheduleDB();
-	
-		/**
-        * By default Symbian 2nd phase constructor is private.
-        */
-		void ConstructL();
-
-	private: // Methods        
-        /**
-        * Checks the db version from db. If it is older than current one, destroy it
-        * and create new one.
-        * @return	None
-        */
-        void CheckDbVersionL();
-        
-        /**        
-        * Open DB or create new database if DB file is not found. 
-        * @return	None
-        */
-        void OpenOrCreateDbL();
-            	
-    	/**
-		* Create schedule table.
-		* @param	aDatabase where to create schedule table.
-		* @return	None
-		*/
-    	void CreateScheduleTableL( RDbStoreDatabase& aDatabase ) const;
-    	
-    	/**
- 		* Create database table.
- 		* @param	aDatabase where to create database table.
- 		* @return	None
- 		*/
-     	void CreateDatabaseTableL( RDbStoreDatabase& aDatabase );
-     	
-     	/**
-  		* Gets the database version number
-  		* @param	None
-  		* @return	None
-  		*/
-      	TInt GetDbVersionL(  );
-      	
-     	/**
-  		* Set hardcoded database version to database. Used after creating new database.
-  		* @param	None
-  		* @return	None
-  		*/
-      	void SetDatabaseVersionL();
-
-        /**
-        * Removes existing database.
-        * @return   None
-        */
-		void RemoveDbL();
-		
-		/**
-        * Static call back for CPeriodic.
-        * @param    aThis   Pointer to CCseScheduleDB so that we can
-        *                   direct call back to class. 
-        * @return   Always TFalse
-        */
-		static TInt CompactCallback( TAny* aThis );
-		
-		/**
-        * We want to compact database 30 seconds after last database operation.
-        * this resets 30 sec counter.
-        * @return   None
-        */
-		void ResetCompactTimer( );
-		
-		/**
-        * Compacts database.
-        * @return   None
-        */
-		void CompactDb();
-		
-		/**
-        * Closed Db file and sets iDbAccess to ECseDbLocked.
-        * @return   None
-        */
-		void CloseDbFile();
-		
-		/**
-        * Closed Db file and sets iDbAccess to ECseDbOpen.
-        * @return   None
-        */
-		void OpenDbFileL();
-		
-		/**
-        * Leaves with KErrLocked if iDbAccess is ECseDbLocked.
-        * @return   None
-        */
-		void LeaveIfDbLockedL() const;
-
-	private: // Data
-		/**
-		* File server session is connected in construction and closed in
-		* destruction
-		*/
-    	RFs iFsSession;
-    	
-    	/**
-    	* File name of the database which to handle
-    	*/    	
-		TFileName iDbFile;
-		
-		/**
-		* For database operations
-		*/
-        RDbStoreDatabase iScheduleDb;
-        
-        /**
-        * For creating and opening services database file. Own.
-        */
-        CFileStore* iScheduleFileStore;
-
-        /**
-        * Timer used in compacting database. Own.
-        */
-		CPeriodic* iCompactTimer;  
-        
-        /**
-        * SQL string for SQL calls
-        */
-        TBuf<KCseCustomSqlLength> iSqlSchedule;
-        
-        /**
-        * Status is database accessible
-        */
-        TCseDatabaseAccess iDbAccess;
-        
-        /**
-        * Wrapper to get notification if backup/restore is
-        * about to happen. Own.
-        */
-        CBaBackupSessionWrapper* iBackupWrapper;
-};
-#endif _CCSESCHEDULEDB_H
\ No newline at end of file