diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpharvester/common/cmsqlwrapper/inc/cmsqlconnection.h --- a/upnpharvester/common/cmsqlwrapper/inc/cmsqlconnection.h Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,575 +0,0 @@ -/* -* Copyright (c) 2008 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: SQLite Connection class -* -*/ - - - - - - - -#ifndef C_CMSQLCONNECTION_H -#define C_CMSQLCONNECTION_H - -#include -#include -#include "cmcommontypes.h" - -/* Forward declarations. */ -class CCmSqlBaseItem; -class CCmSqlGenericItem; -class CCmSqlPropertyItem; -class CCmBaseListItem; -class CCmFillListItem; -class CCmFillRule; -class CCmSqlPropertyCollector; -class CCmSqlPropertyContainer; - -// Constants -const TUint KCmSqlBatchSize = 100; - -// CLASS DECLARATION - /** - * Class represents methods to communication with SQLite database API. - * - * @lib cmsqlwrapper.lib - * - * @since S60 5.1 - */ -class CCmSqlConnection : public CBase - { - -private: - - // Operation modes - enum TCmSqlOperationMode - { - ECmSqlFillItemGet = 1, - ECmSqlBaseItemGet, - ECmSqlPropertyValueGet, - ECmSqlGenericItemAdd, - ECmSqlPropertyItemAdd, - ECmSqlIdle, - ECmSqlDeletingMetadata, - ECmSqlFilteredPropertyGet - }; -public: - - /** - * Two-phased constructor. - */ - static CCmSqlConnection* NewL(); - - /** - * Two-phased constructor. - */ - static CCmSqlConnection* NewLC(); - - /** - * Destructor. - */ - virtual ~CCmSqlConnection(); - - /** - * Open database (creates if doesn't exist) - * - * @since S60 5.1 - * @param aDb, Database filename and path - * @return error code - */ - TInt OpenDb( const TDesC& aDb ); - - /** - * Close opened database - * - * @since S60 5.1 - * @param None - * @return None - */ - void CloseDb(); - - /** - * Creates db file - * @since S60 5.1 - * @param aDb, Database filename and path - * @return error code - */ - TInt CreateDbFile( const TDesC& aDb ); - - /** - * Validates database existence and format - * - * @since S60 5.1 - * @param None - * @return ETrue if db valid - */ - TBool Validate(); - - /** - * Executes sql command - * - * @since S60 5.1 - * @param aCommand, command to be executed - * @return None - */ - void ExecuteL( const TDesC8& aCommand ); - - /** - * Cance asyncronous operation - * - * @since S60 5.1 - * @param None - * @return None - */ - void CancelAsyncOperation(); - - /** - * Setting media server id - * - * @since S60 5.1 - * @param aId, media server id to be used - * @return None - */ - void SetMsId( TUint aId ); - - /** - * Setting mmc quota - * - * @since S60 5.1 - * @param aQuota, quota to be used - * @return None - */ - void SetQuota( TInt64 aQuota ); - - /** - * Asyncronous batch add - * - * @since S60 5.1 - * @param aItems, items to be inserted into database - * @param aStatus, request status to be completed after insert is ready - * @return None - */ - void AsyncBatchAdd( RPointerArray& aItems, - TRequestStatus& aStatus ); - - /** - * Asyncronous property item batch add - * - * @since S60 5.1 - * @param aItems, items to be inserted into database - * @param aField, property type identifier - * @param aStatus, request status to be completed after insert is ready - * @return None - */ - void AsyncBatchAddPropertyItems( - RPointerArray& aItems, TCmMetadataField aField, - TRequestStatus& aStatus ); - - /** - * Syncronous property item add - * - * @since S60 5.1 - * @param aItem, item to be inserted into database - * @param aField, property type identifier - * @return None - */ - void SyncAddPropertyItemL( - CCmSqlPropertyItem& aItem, TCmMetadataField aField ); - - /** - * Asyncronous item batch delete - * - * @since S60 5.1 - * @param aItems, items to be deleted - * @param aStatus, request status to be completed - * @return None - */ - void AsyncBatchDelete( RPointerArray& aItems, - TRequestStatus& aStatus ); - - /** - * Asyncronous metadata delete - * - * @since S60 5.1 - * @param aMsIds, defines where metadata is harvested - * @param aStatus, request status to be completed - * @return None - */ - void AsyncMetadataDelete( RArray& aMsIds, - TRequestStatus& aStatus ); - - /** - * SELECT XXX oldest and delete those - * Delete defined amount of media items - * - * @since S60 5.1 - * @param aType, media type identifier - * @param aCount, amount to be deleted - * @return None - */ - void DeleteOldestMediaItemsL( TCmMediaType aType, TInt64 aCount ); - - /** - * Deletes unused propertys - * - * @since S60 5.1 - * @param None - * @return None - */ - void DeleteUnusedPropertys( ); - - /** - * Asyncronous metadata column qyery - * - * @since S60 5.1 - * @param aItems, listed base items ( included only ItemId, dbId and - * Hash code ) - * @param aStatus, request status to be completed when result set ready - * @return None - */ - void GetItemsL( RPointerArray& aItems, - TRequestStatus& aStatus ); - - /** - * Asyncronous metadata qyery for fill list - * - * @since S60 5.1 - * @param aItems, listed fill list items - * @param aClause, sql clause to be executed - * @param aRule, used fill list - * @param aStatus, request status to be completed when result set ready - * @return None - */ - void GetFillItemsL( RPointerArray& aItems, - TDesC8& aClause, CCmFillRule& aRule, TRequestStatus& aStatus ); - - /** - * Asyncronous metadata column qyery - * - * @since S60 5.1 - * @param aItems, listed property values - * @param aClause, sql clause to be executed - * @param aStatus, request status to be completed when result set ready - * @return None - */ - void GetPropertyValuesL( RPointerArray& aItems, - TDesC8& aClause, TRequestStatus& aStatus ); - - /** - * Asyncronous metadata filtered property values query - * - * @since S60 5.1 - * @param aPropertys, result array reference - * @param aClause, sql clause to be executed - * @param aStatus, request status to be completed - * @return None - */ - void GetFilteredPropertyValuesL( - CCmSqlPropertyCollector& aPropertys, const TDesC8& aClause, - TRequestStatus& aStatus ); - - /** - * Returns amount of media items - * - * @since S60 5.1 - * @param aCount, media amount on return - * @param aType, media type - * @return None - */ - void GetMediaCountL( TInt64& aCount, TCmMediaType aType ); - - /** - * Returns ETrue if item exist in db - * - * @since S60 5.1 - * @param aItem, item - * @param aDevId, device id - * @return ETrue if exists - */ - TBool ExistsL( const CCmBaseListItem& aItem, const TInt aDevId ); - -private: - - /** - * Static callback method for db handling - * - * @since S60 5.1 - * @param aDbHandler, database handler - * @return None - */ - static TInt BatchAdd( TAny* aDbHandler ); - - /** - * Adds items into db in background - * - * @since S60 5.1 - * @param None - * @return None - */ - TInt DoBatchAdd(); - - /** - * Static callback method for db handling - * - * @since S60 5.1 - * @param aDbHandler, database handler - * @return None - */ - static TInt BatchDelete( TAny* aDbHandler ); - - /** - * Deletes items from db - * - * @since S60 5.1 - * @param None - * @return None - */ - TInt DoBatchDelete(); - - /** - * Static callback method for db handling - * - * @since S60 5.1 - * @param aDbHandler, database handler - * @return None - */ - static TInt BatchGetL( TAny* aDbHandler ); - - /** - * Gets items from db - * - * @since S60 5.1 - * @param None - * @return None - */ - TInt DoBatchGetL(); - - /** - * Collect item data - * - * @since S60 5.1 - * @param None - * @return None - */ - void CollectItemDataL(); - - /** - * Adds generic item into db - * - * @since S60 5.1 - * @param None - * @return None - */ - void AddItemL(); - - /** - * Adds property item into db - * - * @since S60 5.1 - * @param None - * @return None - */ - void AddPropertyItemL(); - - /** - * Adds resource item into db - * - * @since S60 5.1 - * @param None - * @return None - */ - void AddResourceL(); - - /** - * Deletes items from the item table - * - * @since S60 5.1 - * @param None - * @return None - */ - void DeleteItemL(); - - /** - * Deletes resource from the resources table - * - * @since S60 5.1 - * @param None - * @return None - */ - void DeleteResourceL(); - - /** - * Deletes metadata from defined server - * - * @since S60 5.1 - * @param aMsId, mediaserver id - * @return None - */ - void DeleteMetadataFromDefServerL( const TInt aMsId ); - - /** - * Formats row count query clause, used in property - * indexing - * - * @since S60 5.1 - * @param aField, metadata field - * @return None - */ - void FormatRowCountQueryL( TCmMetadataField aField ); - - /** - * Returns row count, used in property indexing - * - * @since S60 5.1 - * @param None - * @return None - */ - TInt64 RowCountL(); - - /** - * Helper function for format maximun index query - * - * @since S60 5.1 - * @param aId, item id - * @param aTable, table name - * @return None - */ - void FormatCountQueryL( const TDesC8& aId, const TDesC8& aTable ); - - /** - * Helper function for getting filtered propertys - * - * @since S60 5.1 - * @param aContainer, propertycontainer - * @param aIndex1, column index - * @param aIndex2, column index - * @return None - */ - void GetFilteredPropertysL( CCmSqlPropertyContainer& aContainer, - const TInt aIndex1, const TInt aIndex2 ); - -private: - - /** - * Performs the first phase of two phase construction. - */ - CCmSqlConnection(); - - /** - * Performs the second phase construction. - */ - void ConstructL(); - -private: - - /** - * iDatabase, interface to Sqlite database - */ - RSqlDatabase iDatabase; - - /** - * iStatement, interface to Sqlite database - */ - RSqlStatement iStatement; - - /** - * Pending request status - */ - TRequestStatus* iStatus; - - /** - * Media server id - */ - TUint iMsId; - - /** - * User mmc quota - */ - TInt64 iQuota; - - /** - * Generic item array pointer - */ - RPointerArray* iGenericItems; // not owned - - /** - * Base item array pointer - */ - RPointerArray* iBaseItems; // not owned - - /** - * Fill list item array pointer - */ - RPointerArray* iFillItems; // not owned - - /** - * Property item array pointer - */ - RPointerArray* iPropertyItems; // not owned - - /** - * Filtered property item array pointer - */ - CCmSqlPropertyCollector* iPropertyCollector; // not owned - - /** - * Mediaserver ids - */ - RArray* iMsIds; // not owned - - /** - * Asyncronous database handler - */ - CIdle* iAsyncDbHandler; // owned - - /** - * Operation mode - */ - TCmSqlOperationMode iMode; - - /** - * Index to item array - */ - TInt iIndex; - - /** - * Property table identifier - */ - TCmMetadataField iField; - - /** - * Fill list - */ - CCmFillRule* iList; // not owned - - /** - * Fill list size - */ - TInt64 iListSize; - - /** - * Maximun size of the fill list in Bytes - */ - TInt64 iListMaxSize; - - /** - * Used to get max count of items - */ - HBufC8* iCountQuery; // Owned - - }; - -#endif // C_CMSQLCONNECTION_H