diff -r 000000000000 -r 7f85d04be362 upnpharvester/common/dbmanager/inc/cmdmmain.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnpharvester/common/dbmanager/inc/cmdmmain.h Thu Dec 17 08:52:00 2009 +0200 @@ -0,0 +1,952 @@ +/* +* 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: Main class in the Database manager component +* +*/ + + + + + + +#ifndef C_CMDMMAIN_H +#define C_CMDMMAIN_H + +#include +#include +#include "cmcommon.h" +#include "cmcommontypes.h" + +// Operation types +enum TCMQueryCmdType + { + EFillRuleQuery = 1, + EMediaServerInfoQyery, + EMediaServerIdQuery, + EMediaServerUDNQuery, + EMediaServersAllQuery, + EHashValueQuery, + EFilledQuery, + EStoredQuery, + EFilledRowQuery, + EStoredRowQuery, + ESelectedFillRuleQuery, + EFillRuleNamesQuery, + EStoreRuleQuery, + EStoreRuleNamesQuery, + ESelectedStoreRuleQuery, + ETransferHistoryQuery, + EFillFilesQuery, + EStoreFilesQuery, + EAllFillFilesQuery, + EAllStoreFilesQuery, + EFilledLowPriorityQuery, + EAllFillFilesStatusQuery, + EAllStoreFilesStatusQuery, + EDeletedFillFilesQuery, + EDrivesQuery + }; + +/* Forward declarations. */ +class CCmDmSqlDbMaintenance; +class CCmDmSQLiteConnection; +class CCmFillRule; +class CCmFillRuleContainer; +class CCmMediaServerFull; +class CCmStoreRule; +class CCmBaseListItem; +class CCmFillListItem; +class CCmStoreListItem; +class CCmSearchResponseHash; +class CCmDriveInfo; + + +/** + * CCmDmMain class + * Part of Database manager. Database manager is part of + * Content manager component. + * + * @lib cmdatabasemanager.lib + * + * @since S60 5.1 + */ +class CCmDmMain : public CBase + { + +public: + + /** + * Two-phased constructor. + */ + IMPORT_C static CCmDmMain* NewL(); + + /** + * Two-phased constructor. + */ + IMPORT_C static CCmDmMain* NewLC(); + + /** + * Destructor. + */ + IMPORT_C virtual ~CCmDmMain(); + + /** + * Prepares query command + * + * @since S60 5.1 + * @param aType type of query + * @return None + */ + IMPORT_C void PrepareQueryCmdL( TCMQueryCmdType aType ); + + /** + * Query fill rule + * + * @since S60 5.1 + * @param aFillRule + * @return TInt, Error code + */ + IMPORT_C TInt QueryFillRuleL( CCmFillRule* aFillRule ); + + /** + * Query names of selected fill rules + * + * @since S60 5.1 + * @param aNames + * @param aSelected + * @return None + */ + IMPORT_C void QuerySelectedFillRuleNamesL( + RPointerArray& aNames, + TInt aSelected ); + + /** + * Query names of fill rules + * + * @since S60 5.1 + * @param aNames, on return fill rule names + * @return None + */ + IMPORT_C void QueryFillRuleNamesL( RPointerArray& aNames ); + + /** + * Query store rule + * + * @since S60 5.1 + * @param aStoreRule, store list + * @return TInt, Error code + */ + IMPORT_C TInt QueryStoreRuleL( CCmStoreRule* aStoreRule ); + + /** + * Query store rule names + * + * @since S60 5.1 + * @param aNames, list names + * @return None + */ + IMPORT_C void QueryStoreRuleNamesL( RPointerArray& aNames ); + + /** + * Query selected store rule names + * + * @since S60 5.1 + * @param aNames, list names + * @param aSelected, selection status + * @return None + */ + IMPORT_C void QuerySelectedStoreRuleNamesL( + RPointerArray& aNames, + TInt aSelected ); + + /** + * Query media server info + * + * @since S60 5.1 + * @param aMediaServer, mediaserver + * @return TInt, Error code + */ + IMPORT_C TInt QueryMediaServerL( CCmMediaServerFull* aMediaServer ); + + /** + * Query media server ids + * + * @since S60 5.1 + * @param aUDN, server UDN + * @return TInt64, Media server id + */ + IMPORT_C TInt64 QueryMediaServerId( const TDesC8& aUDN ); + + /** + * Query media server udn + * + * @since S60 5.1 + * @param aUDN, server UDN + * @param aId, server id + * @return TInt, Error code + */ + IMPORT_C TInt QueryMediaServerUdn( HBufC8*& aUdn, const TInt32 aId ); + + /** + * Query All Media servers + * + * @since S60 5.1 + * @param aMediaServer, mediaserver + * @return TInt, Error code + */ + IMPORT_C TInt QueryAllMediaServersL( CCmMediaServerFull* aMediaServer ); + + /** + * Get media servers + * + * @since S60 5.1 + * @param aMediaServers, mediaserver list + * @return None + */ + IMPORT_C void GetMediaServersL( + RPointerArray& aMediaServers ); + + /** + * Query filled + * + * @since S60 5.1 + * @param aDrive, drive id + * @param aFilled, fill list items + * @return TInt, Error code + */ + IMPORT_C TInt GetLowPriorityFilledFilesL( + TInt aDrive, + RPointerArray& aFilled ); + + /** + * Query fill file list + * + * @since S60 5.1 + * @param aItems, fill list items + * @param aName, fill list name + * @param aStatus, list status + * @return TInt, Error code + */ + IMPORT_C TInt QueryFillFileListL( + RPointerArray& aItems, + const TDesC8& aName, + TUint aStatus ); + + /** + * Query fill file list + * + * @since S60 5.1 + * @param aItems, fill list items + * @param aStatus, list status + * @return TInt, Error code + */ + IMPORT_C TInt GetAllFillFilesL( + RPointerArray& aItems, + TUint aStatus ); + + /** + * Query store file list + * + * @since S60 5.1 + * @param aItems, list items + * @param aName, list name + * @param aStatus, list status + * @return TInt, Error code + */ + IMPORT_C TInt QueryStoreFileListL( + RPointerArray& aItems, + const TDesC8& aName, + TUint aStatus ); + + /** + * Query store file list + * + * @since S60 5.1 + * @param aItems, list items + * @param aStatus, list status + * @return TInt, Error code + */ + IMPORT_C TInt GetAllStoreFilesL( + RPointerArray& aItems, + TUint aStatus ); + + /** + * Query all fill files + * @since S60 5.1 + * @param aItems + * @return TInt, Error code + */ + IMPORT_C TInt QueryAllFillFilesL( + RPointerArray& aItems ); + + /** + * Query all store files + * + * @since S60 5.1 + * @param aItems, list items + * @return TInt, Error code + */ + IMPORT_C TInt QueryAllStoreFilesL( + RPointerArray& aItems ); + + /** + * Query all stored ( use aFile as a query parameter ) + * + * @since S60 5.1 + * @param aFiles, stored files + * @param aUDN, server udn + * @param aAmount, amount of files + * @return None + */ + IMPORT_C void QueryStoredRowL( + RPointerArray& aFiles, + const TDesC8& aUDN, + TInt aAmount ); + + /** + * Query transfer history + * + * @since S60 5.1 + * @param aUdn, server udn + * @param aDownloadData, download data size + * @param aUploadData, upload data size + * @param aDownloadTime, download time + * @param aUploadTime, upload time + * @return None + */ + IMPORT_C void QueryTransferHistory( + const TDesC8& aUdn, + TInt64& aDownloadData, + TInt64& aUploadData, + TInt64& aDownloadTime, + TInt64& aUploadTime ); + + /** + * Query deleted items list + * + * @since S60 5.1 + * @param aUdn, server udn + * @param aArray, array of deleted items + * @param aStatus, status info + * @return None + */ + IMPORT_C void QueryDeletedItemsListsL( + RPointerArray& aArray, + TUint aStatus ); + + /** + * Query drives + * + * @since S60 5.1 + * @param aDrives, drive array + * @return None + */ + IMPORT_C void QueryDrivesL( RPointerArray& aDrives ); + + /** + * Avarage image shrinking time + * + * @since S60 5.1 + * @return TInt, Avarage image shrinking time in millisecond + */ + IMPORT_C TInt GetAvgImageShrinkTime(); + + /** + * Get list name using list id + * + * @since S60 5.1 + * @param aListName, name of the fill list + * @param aListId, id of the named list + * @return None + */ + IMPORT_C void GetFillListNameL( + HBufC8*& aListName, + const TInt64 aListId ); + + /** + * Set fill file list + * + * @since S60 5.1 + * @param aItems, fill list items + * @return TInt Error code + */ + IMPORT_C TInt SetFillFiles( RPointerArray& aItems ); + + /** + * Set store file list + * + * @since S60 5.1 + * @param aItems, store list items + * @return TInt, Error code + */ + IMPORT_C TInt SetStoreFilesL( RPointerArray& aItems ); + + /** + * Adds one item into store file list + * + * @since S60 5.1 + * @param aItem, store list item + * @return TInt, Error code + */ + IMPORT_C TInt AddStoreFile( CCmStoreListItem& aItem ); + + /** + * Add stored item + * + * @since S60 5.1 + * @param aFileName, file name + * @param aUDN, server udn + * @param aTimeStamp, timestamp + * @return TInt, Error code + */ + IMPORT_C TInt AddStoredL( + const TDesC& aFileName, + const TDesC8& aUDN, + TTime aTimeStamp ); + + /** + * Add fill rule + * + * @since S60 5.1 + * @param aFillRule, fill list + * @return TInt, Error code + */ + IMPORT_C TInt AddFillRuleL( CCmFillRule* aFillRule ); + + /** + * Add store rule + * + * @since S60 5.1 + * @param aStoreRule, store list + * @return TInt, Error code + */ + IMPORT_C TInt AddStoreRuleL( CCmStoreRule* aStoreRule ); + + /** + * Add Media server + * + * @since S60 5.1 + * @param aMediaServer, media server + * @return TInt, Error code + */ + IMPORT_C TInt AddMediaServerL( CCmMediaServerFull* aMediaServer ); + + /** + * Add hash value + * + * @since S60 5.1 + * @param aMediaServerId, media server id + * @param aHashValue, hash value + * @return TInt, Error code + */ + IMPORT_C TInt AddHashValue( TInt64 aMediaServerId, + CCmSearchResponseHash* aHashValue ); + + /** + * Query hash values + * + * @since S60 5.1 + * @param aMediaServerId, media server id + * @param aHashValues, hash value + * @return TInt, Error code + */ + IMPORT_C TInt QueryHashValuesL( TInt aMediaServer, + RPointerArray& aHashValues ); + + /** + * Sets is active status of the media server + * + * @since S60 5.1 + * @param aServers, mediaservers + * @return TInt, Error code + */ + IMPORT_C TInt SetMediaServersL( + RPointerArray& aServers ); + + /** + * Sets last syncs time + * + * @since S60 5.1 + * @param None + * @return TInt, Error code + */ + IMPORT_C TInt SetSyncTime(); + + /** + * Gets last syncs time + * + * @since S60 5.1 + * @param aTime last sync time + * @return TInt, Error code + */ + IMPORT_C TInt GetSyncTime( TTime& aTime ); + + /** + * Sets Progress info + * @since S60 5.1 + * + * @param aTransferred how many files transferred + * @param aTotalCount how many will be trasferred + * @return TInt, Error code + */ + IMPORT_C TInt SetProgressInfo( TInt aTransferred, TInt aTotalCount ); + + /** + * Gets Progress info + * + * @since S60 5.1 + * @param aTransferred how many files transferred + * @param aTotalCount how many will be trasferred + * @return TInt, Error code + */ + IMPORT_C TInt GetProgressInfo( + TInt& aTransferred, + TInt& aTotalCount ); + + /** + * Sets Drives info + * + * @since S60 5.1 + * @param aDrives, drives to be set into database + * @return None + */ + IMPORT_C void SetDrivesL( RPointerArray& aDrives ); + + /** + * Remove media server info from database + * + * @since S60 5.1 + * @param aUDN, server udn + * @return TInt, Error code + */ + IMPORT_C TInt DeleteMediaServer( const TDesC8& aUDN ); + + /** + * Remove fill rule from database + * + * @since S60 5.1 + * @param aName, fill list name + * @return TInt, Error code + */ + IMPORT_C TInt DeleteFillRuleByName( const TDesC8& aName ); + + /** + * Delete all fill rules + * + * @since S60 5.1 + * @param None + * @return TInt, Error code + */ + IMPORT_C TInt DeleteAllFillRules(); + + /** + * Delete all store rules + * + * @since S60 5.1 + * @param None + * @return Error code + */ + IMPORT_C TInt DeleteAllStoreRules(); + + /** + * Deletes all fill files + * + * @since S60 5.1 + * @param None + * @return Error code + */ + IMPORT_C TInt DeleteFillFiles(); + + /** + * Deletes all store files + * + * @since S60 5.1 + * @param None + * @return TInt, Error code + */ + IMPORT_C TInt DeleteStoreFiles(); + + /** + * Delete deleted items + * + * @since S60 5.1 + * @param None + * @return None + */ + IMPORT_C void DeleteDeletedItemsL(); + + /** + * Delete items by FillListId + * + * @since S60 5.1 + * @param FillListId, fill list id + * @return TInt, Error code + */ + IMPORT_C TInt DeleteItemsByFillListId( TInt aFillListId ); + + /** + * Delete deleted media servers + * + * @since S60 5.1 + * @param None + * @return None + */ + IMPORT_C void DeleteDeletedMediaServersL(); + + /** + * Deletes hash values + * + * @since S60 5.1 + * @param aMediaServerId, media server id + * @param aSearchIndex, search index + * @return None + */ + IMPORT_C void DeleteHashValuesL( const TInt aMediaserverId, + const TInt aSearchIndex ); + + /** + * Update media server info + * + * @since S60 5.1 + * @param aMediaServer, media server + * @return TInt, Error code + */ + IMPORT_C TInt UpdateMediaServerInfo( CCmMediaServerFull* aMediaServer ); + + /** + * Update status of the fill rule ( selected or not ) + * + * @since S60 5.1 + * @param aName, list name + * @param aSelected, selection status + * @return TInt, Error code + */ + IMPORT_C TInt UpdateFillRuleSelected( + const TDesC8& aName, + TInt aSelected ); + + /** + * Update Download history + * + * @since S60 5.1 + * @param aMediaServerId, server id + * @param aDownloadData, download data size + * @param aDownloadTime, download time + * @return TInt, Error code + */ + IMPORT_C TInt UpdateDownloadHistory( + TUint aMediaServerId, + TInt64& aDownloadData, + TInt64& aDownloadTime ); + + /** + * Update Upload history + * + * @since S60 5.1 + * @param aMediaServerId, server id + * @param aUploadData, upload data size + * @param aUploadTime, upload time + * @return TInt, Error code + */ + IMPORT_C TInt UpdateUploadHistory( + TUint aMediaServerId, + TInt64& aUploadData, + TInt64& aUploadTime ); + + /** + * Update status values + * + * @since S60 5.1 + * @param aStatusValues, status values of items + * @return TInt, Error code + */ + IMPORT_C TInt UpdateStatusValues( + RPointerArray& aStatusValues ); + + /** + * Update fill list drive statuses + * + * @since S60 5.1 + * @param aDrive, drive info + * @para aDriveSelected, if ETrue drive selected but slot changed + * @return None + */ + IMPORT_C void UpdateFillListDriveStatusesL( + CCmDriveInfo* aOrigDrive, + CCmDriveInfo* aNewDrive, + TBool aDriveSelected ); + + /** + * Update fill list item priorities + * + * @since S60 5.1 + * @param aContainer, fill list container + * @return TInt, Error code + */ + IMPORT_C TInt UpdateFillListItemPriority( + CCmFillRuleContainer* aContainer ); + + /** + * Update fill selection state into fill file table + * + * @since S60 5.1 + * @param aListName, fill list name + * @param aState, fill list status + * @return None + */ + IMPORT_C void SetFillListStateL( + const TUint aListName, + TCmFillRuleStatus aState ); + + /** + * + * Restoring file statuses + * @since S60 5.1 + * @param aItems, array of filled items + * @param aListName, list name + * @return None + */ + IMPORT_C void RestoreFileStatusesL( + const RPointerArray& aItems, + const TDesC8& aListName ); + + /** + * + * Increment image shrinking history info + * + * @since S60 5.1 + * @param aImageCount, image count + * @param aMilliSeconds, shrinking time + * @return TInt, Error code + */ + IMPORT_C TInt IncrementShrinkTimeL( + TInt aImageCount, + TInt aMilliSeconds ); + + /** + * Returns size of the named list + * + * @since S60 5.1 + * @param aType, List type + * @param aListName, list name + * @param aStatus, list status + * @return TInt64, Size in bytes + */ + IMPORT_C TInt64 ListSize( + TCmRuleType aType, + const TDesC8& aListName, + TUint aStatus ); + + /** + * Returns file count which are waiting to be stored + * + * @since S60 5.1 + * @param aStatus, file status + * @return TInt, File count + */ + IMPORT_C TInt StoreFileCount( TUint aStatus ); + + /** + * Returns file count which are waiting to be stored + * + * @since S60 5.1 + * @param None + * @return size of the list + */ + IMPORT_C TInt StoreFileCountNoDuplicates(); + + /** + * Returns file count which are waiting to be filled + * + * @since S60 5.1 + * @param aStatus, file status + * @return TInt, File count + */ + IMPORT_C TInt FillFileCount( TUint aStatus ); + + /** + * Returns data amount filled + * @since S60 5.1 + * @param aID id of fill rule + * @return sum of file sizes + */ + IMPORT_C TInt64 BytesFilled( + TUint aID ); + + /** + * Returns data amount to be filled + * @since S60 5.1 + * @param aMediaServerId, media server id + * @param aStatus, file status + * @return TInt64, sum of file sizes + */ + IMPORT_C TInt64 KBytesToBeFilled( + TUint8 aMediaServerId, + TUint aStatus ); + + /** + * Returns data amount to be stored + * + * @since S60 5.1 + * @param aMediaServerId, media server id + * @param aStatus, file status + * @return TInt64, sum of file sizes + */ + IMPORT_C TInt64 KBytesToBeStored( + TUint8 aMediaServerId, + TUint aStatus ); + + /** + * Updates list size and approx. transfer time + * + * @since S60 5.1 + * @param aService, contentmanager service + * @param aCount, item count + * @param aTime, transfer time in milliseconds + * @return TInt, error code + */ + IMPORT_C TInt UpdateTransferInfo( + TCmService aService, + TInt aCount, + TInt aTime ); + + /** + * Updates file status + * + * @since S60 v3.1 + * @param aStatus, file status + * @param aFid, file id + * @param aMsId, server id + * @return None + */ + IMPORT_C void UpdateStoreTransferStatus( + TUint aStatus, + TInt64 aFid, + TInt64 aMsId ); + + /** + * Updates file status + * + * @since S60 5.1 + * @param aStatus, file status + * @param aItem, fill list item + * @return None + */ + IMPORT_C void UpdateFillTransferStatus( + TUint aStatus, + CCmFillListItem* aItem ); + + /** + * Get list size and approx. transfer time + * + * @since S60 5.1 + * @param aService, content manager service + * @param aCount pieces, item count + * @param aTime, transfer time in milliseconds + * @return TInt, error code + */ + IMPORT_C TInt GetTransferInfo( + TCmService aService, + TInt& aCount, + TInt& aTime ); + + /** + * Files to be stored and included into specified list + * + * @since S60 5.1 + * @param aListName, store list name + * @param aStatus, list status + * @param aCount, item count + * @return TInt, error code + */ + IMPORT_C TInt GetStoreFileCount( + const TDesC8& aListName, + TUint aStatus, + TInt& aCount ); + + /** + * Files to be filled and included into specified list + * + * @since S60 5.1 + * @param aListName, fill list name + * @param aStatus, list status + * @param aCount, item count + * @return TInt, error code + */ + IMPORT_C TInt GetFillFileCount( + const TDesC8& aListName, + TUint aStatus, + TInt& aCount ); + + /** + * Files to be store + * + * @since S60 5.1 + * @param aCount, file count + * @param aStatus, file status + * @return None + */ + IMPORT_C void GetStoreFileCountNoDuplicatesL( + TInt& aCount, + TUint aStatus ); + + /** + * Sets fill list real information + * + * @since S60 5.1 + * @param aListId, list id + * @param aRealCount, item count + * @param aRealSize, list size + * @return None + */ + IMPORT_C void SetFillListRealCountAndSizeL( + TInt64 aListId, + TInt64 aRealCount, + TInt64 aRealSize ); + + /** + * update the fill rule realsize and realcount field + * + * @since S60 5.1 + * @return TInt, error code + */ + IMPORT_C TInt UpdateFillRuleGroupInfo(); + +private: + + /** + * Performs the first phase of two phase construction. + */ + CCmDmMain(); + + /** + * Performs the second phase construction. + */ + void ConstructL(); + + +private: + + /** + * Pointer to SQLite connection class + */ + CCmDmSQLiteConnection* iConnection; // owned + + /** + * Pointer to database maintenance class + */ + CCmDmSqlDbMaintenance* iMaintenance; // owned + }; + +#endif // C_CMDMMAIN_H