upnpharvester/common/cmsqlwrapper/inc/cmsqlconnection.h
branchIOP_Improvements
changeset 40 08b5eae9f9ff
parent 39 6369bfd1b60d
child 41 b4d83ea1d6e2
--- 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 <e32base.h>
-#include <sqldb.h>
-#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<CCmSqlGenericItem>& 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<CCmSqlPropertyItem>& 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<CCmSqlBaseItem>& 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<TInt>& 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<CCmSqlBaseItem>& 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<CCmFillListItem>& 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<CCmSqlPropertyItem>& 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<CCmSqlGenericItem>* iGenericItems;            // not owned
-    
-    /**
-     * Base item array pointer
-     */
-    RPointerArray<CCmSqlBaseItem>* iBaseItems;                  // not owned
-    
-    /**
-     * Fill list item array pointer
-     */
-    RPointerArray<CCmFillListItem>* iFillItems;                 // not owned
-    
-    /**
-     * Property item array pointer
-     */
-    RPointerArray<CCmSqlPropertyItem>* iPropertyItems;          // not owned
-    
-    /**
-     * Filtered property item array pointer
-     */
-    CCmSqlPropertyCollector* iPropertyCollector;                // not owned
-    
-    /**
-     * Mediaserver ids
-     */
-    RArray<TInt>* 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