diff -r 32469d7d46ff -r 4bc7b118b3df contentpublishingsrv/contentpublishingutils/contentpublishingmap/inc/cpliwmap.h --- a/contentpublishingsrv/contentpublishingutils/contentpublishingmap/inc/cpliwmap.h Mon May 03 12:48:45 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,620 +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: CCPLiwMap - class used in Content Publisher - * -*/ - -#ifndef C_CPLIWIDSMAP_H -#define C_CPLIWIDSMAP_H - -#include -#include -#include "cpglobals.h" - -class RDesReadStream; -class CCPSecurityPolicy; - -// CLASS DECLARATION -/** - * Base Map class for Publisher Registry and Content - * - * @lib cputils.dll - * @since S60 v5.0 - */ -class CCPLiwMap : public CLiwMap - { - -protected: - - /** - * Enum defining the properties of filter. - */ - enum TCPProperties - { - EPublisher = 1, - EContentType = 2, - EContentId = 4, - EFlag = 8, - }; - - /** - * Enum defining the sort ordering. - */ - enum TCPSortOrder - { - ECPRecent = 1, // 0001 - ECPPublisher = 2, // 0010 - ECPContent = 4, // 0100 - ECPContentId = 8 // 1000 - }; - -public: - - friend class CCpStorageEngine; - - /** - * Two-phased constructor. - */ - IMPORT_C static CCPLiwMap* NewL( RDesReadStream& aStream ); - - /** - * Two-phased constructor. - */ - IMPORT_C static CCPLiwMap* NewL( const CLiwGenericParamList& aList ); - - /** - * Used by client to serialize this object - * - * @return object serialized to binary - */ - IMPORT_C HBufC8* PackForServerLC() const; - - /** - * Reset map - */ - IMPORT_C void Reset( ) const; - - /** - * Leaves when Add data operation is not possible due - * to missing of some parameter - */ - virtual void IsValidForAddL( ) const; - - /** - * Leaves when Execute Action operation is not possible due - * to missing of some parameter - */ - IMPORT_C void IsValidForActionL( ) const; - - /** - * Leaves when RequestNotification operation is not possible due - * to missing of some parameter - */ - IMPORT_C void IsValidForNotificationL( ) const; - - /** - * Fetches value for property(key) from internal map - * - * @param aProperty name of the property ( key ) - * @param aResult target descriptor for fetching operation - * @return ETrue is property found or EFalse if not - */ - IMPORT_C TBool GetPropertyL( const TDesC8& aProperty, - RBuf& aResult ) const; - - /** - * Fetches value for property(key) from internal map - * - * @param aProperty name of the property ( key ) - * @param aResult target binary for fetching operation - * @return ETrue is property found or EFalse if not - */ - IMPORT_C TBool GetPropertyL( const TDesC8& aProperty, - RBuf8& aResult ) const; - - /** - * Fetches value for property(key) from internal map - * - * @param aProperty name of the property ( key ) - * @param aResult target integer for fetching operation - * @return ETrue is property found or EFalse if not - */ - IMPORT_C TBool GetProperty( const TDesC8& aProperty, - TInt32& aResult ) const; - - - /** - * Setter for security policy - * - * @param aPolicy security policy - */ - IMPORT_C void SetSecurityL( const RMessage2& aMessage ); - - /** - * Destructor. - */ - virtual ~CCPLiwMap(); - - /** - * Check if IDs are valid for Delete operation - */ - virtual void IsValidForDeleteL() const =0; - - /** - * Check if IDs are valid for GetList operation - */ - virtual void IsValidForGetListL() const =0; - - /** - * - * @return ETrue if supported, EFalse if not - */ - virtual TBool ActivateActionSupport( ) const = 0; - - /** - * - * @return ETrue if activate flag is set, EFalse if not - */ - virtual TBool GetActivateInfo( ) const = 0; - - -public: - - // from base class CLiwMap - /** - * Inserts a key-value pair element to the map collection. If - * the specified key already exists, it will be removed from - * the collection and the new key-value pair will be added to the - * map. - * - * @param aKey the key to be stored - * @param aValue the value associated with the key to be stored - */ - void InsertL( const TDesC8& aKey, const TLiwVariant& aValue ); - - /** - * Finds a value stored in the map collection based on the key. - * - * @param aKey the key to be searched - * @param aFndValue the value associated with the found key - * @return false if there is no key stored; true otherwise - */ - TBool FindL( const TDesC8& aKey, TLiwVariant& aValue ) const; - - /** - * Returns the number of key-value pair stored in the map collection. - * - * @return the number of key-value pair stored in the map collection - */ - TInt Count() const; - - /** - * Returns the key stored at a specified index. - * - * @param aIndex the index of the key to be found - * @param aFndKey the key found at the passed index - * - * @return true if a key-value entry is found at the passed index; - * false otherwise - */ - TBool AtL( TInt aIndex, TDes8& aFndKey ) const; - - /** - * Removes a key from the map collection. - * - * @param aKey the key to be removed from the map - */ - void Remove( const TDesC8& aKey ); - - /** - * Returns the size of the collection. The size is - * calculated based on the total numer of key-value elements - * and the size of each pair in the collection - * - * @return the size of the collection - */ - TInt Size() const; - - /** - * The container managed data values can be serialized to an output - * stream. - * - * @param aOutputStream the output stream to which the data will be streamed - */ - void ExternalizeL( RWriteStream& aOutputStream ) const; - -protected: - - /** - * Adds to database current content - * - * @param aSqlDb handle to database - * @param aNotificationList list of notifications to fill in when - * something was actually changed in dataabse - * - * @return id of added entry - */ - virtual TInt32 AddL( RSqlDatabase aSqlDb, - CLiwDefaultList* aNotificationList = 0 ) const= 0; - - /** - * Fetches entries from database - * - * @param aSqlDb handle to database - * @param aList target list for enntries - * @param aItemsToDelete ids of entries for removal - - * they were found to be expired - * - * @return number of fetched entries - */ - virtual TUint GetListL( RSqlDatabase aSqlDb, CLiwGenericParamList* aList, - RArray& aItemsToDelete ) const = 0; - - /** - * Removes entries from database - * - * @param aSqlDb handle to database - * @param aNotificationList list of notifications to fill in when - * something was actually changed in dataabse - */ - virtual void RemoveL( RSqlDatabase aSqlDb, - CLiwDefaultList* aNotificationList = 0 ) const = 0; - - /** - * Saves results from query to SQLite Server - * - * @param aStmt handle to SQL statement - * @param aList target list for enntries - * @param aItemsToDelete ids of entries for removal - - * they were found to be expired - */ - virtual void SaveQueryResultsL( RSqlStatement& aStmt, - CLiwGenericParamList& aList, RArray& aItemsToDelete ) const = 0; - - /** - * Updates entry in database - * - * @param aSqlDb handle to database - * @param aNotificationList list of notifications to fill in when - * something was actually changed in dataabse - */ - virtual void UpdateL( RSqlDatabase aSqlDb, TInt32 aId, - CLiwDefaultList* aNotificationList = 0 ) const = 0; - - /** - * Performs actuall add operation - * - * @param aSqlDb handle to database - * @param aNotificationList list of notifications to fill in when - * something was actually changed in dataabse - * - * @return id of added entry - */ - virtual TInt32 AddToDbL( RSqlDatabase aSqlDb, - CLiwDefaultList* aNotificationList = 0 ) const = 0; - - /** - * Checks if operation value is proper - * - * @param aValue contains operation value - */ - void IsProperOperationL( const TLiwVariant& aValue ) const; - - - /** - * Appends GetList filter as strings to SQL query according to aFilter - * - * @param aQuery SQL query - * @param aFilter as enum - * - */ - void AppendGetListFilterL( RBuf& aQuery, TUint& aFilter ) const; - - /** - * Appends Remove filter as strings to SQL query according to aFilter - * - * @param aQuery SQL query - * @param aFilter as enum - * - */ - void AppendRemoveFilterL( RBuf& aQuery, TUint& aFilter ) const; - - - /** - * Appends filter as strings to SQL query according to aFilter - * - * @param aQuery SQL query - * @param aFilter as enum - * - */ - virtual void AppendFilterL( RBuf& aQuery, TUint& aFilter ) const; - - /** - * Prepares SQL query for Add operation - * - * @param aSqlDb handle to database - * @param aStmt handle to SQL statement - * @param aQuery SQL query - * - */ - virtual void PrepareStmtforAddL( RSqlDatabase aSqlDb, - RSqlStatement& aStmt, const TDesC& aQuery ) const; - /** - * Appends sorting criteria as strings to SQL query according to aSort - * - * @param aQuery SQL query - * @param aSort sort filter as TInt - * - */ - virtual void AppendSortL( RBuf& aQuery, - const TCPSortOrder& aSort ) const = 0; - - /** - * Fills change info map with proper values - *aStmt - * @param aStmt handle to SQL statement - * @param aChangeInfoMap map that will be filed - * - */ - virtual void FillChangeInfoMapL( RSqlStatement& aStmt, - CLiwDefaultMap* aMap ) const; - -protected: - - /** - * Sets all parameters according to provided list - * @param aItemMap map with parameters - */ - void SetL( const CLiwGenericParamList& aInParamList ); - - /** - * Check Get properties - * - * @return logical sum of TCPProperties of the object - */ - TUint GetFilterL() const; - - /** - * Check and return sort order - * - * @return Sort Criteria - */ - TCPSortOrder GetSortL() const; - - /** - * Check if Publisher name is set - * - * @return ETrue if Publisher name was set, EFalse if not - */ - TBool IsPublisherNameL() const; - - /** - * Check if ContentType is set - * - * @return ETrue if ContentType was set, EFalse if not - */ - TBool IsContentTypeL() const; - - /** - * Check if ContentId is set - * - * @return ETrue if ContentId was set, EFalse if not - */ - TBool IsContentIdL() const; - - /** - * Check if ActionTrigger is set - * - * @return ETrue if ActionTrigger was set, EFalse if not - */ - TBool IsTriggerL( ) const; - - /** - * Check if Flag is present - * - * @return ETrue if ContentId was set, EFalse if not - */ - TBool IsFlag( ) const; - - /** - * Checks if Id property is present in internal map - * - */ - TBool IsId() const; - - /** - * Checks if property(key) is present in internal map - * - */ - TBool PropertyExists( const TDesC8& aProperty ) const; - - - /** - * Fetches entries from database - * - * @param aSqlDb handle to database - * @param aQuery aQuery SQL query - * @param aList target list for enntries - * @param aItemsToDelete ids of entries for removal - - * they were found to be expired - * - * @return number of fetched entries - */ - TUint GetListL( RSqlDatabase aSqlDb, const TDesC& aQuery, - CLiwGenericParamList* aList, RArray& aItemsToDelete ) const; - - /** - * Removes entries from database - * - * @param aSqlDb handle to database - * @param aQuery SQL query - * - */ - void RemoveL( RSqlDatabase aSqlDb, const TDesC& aQuery ) const; - - /** - * Fetches Ids (Publisher, ContentType, ContentId) from database - * - * @param aId id entry in database - * @param aQuery SQL query - * @param aMap map to insert Ids - * @param aSqlDb handle to database - * - */ - void FetchIdsL( TInt32 aId, const TDesC& aQuery, CLiwDefaultMap* aMap, - RSqlDatabase aSqlDb ) const; - - /** - * Fetches Id from database - * - * @param aSqlDb handle to database - * @param aQuery SQL query - * @param aId id entry from database - * - */ - void FetchIdL( RSqlDatabase aSqlDb, - const TDesC& aQuery, TInt32& aId ) const; - - /** - * Gets Ids (Id, Publisher, ContentType, ContentId) - * of removed entries from database - * - * @param aSqlDb handle to database - * @param aQuery SQL query - * @param aList List with ids - * - */ - void GetIdsOfRemovedEntriesL( RSqlDatabase aSqlDb, const TDesC& aQuery, - CLiwDefaultList* aList ) const; - - /** - * Saves Ids (Id, Publisher, ContentType, ContentId) from database - * - * @param aSqlDb handle to database - * @param aList List with ids - * - */ - void SaveQueryResultsIdsL( RSqlStatement& aStmt, - CLiwDefaultList* aList ) const; - - /** - * Contructs SQL query to select entry - * @param aQuery SQL query - * - */ - void ConstructSelectIdL( RBuf& aQuery ) const; - - /** - * Contructs SQL query to select entries for GetList - * @param aQuery SQL query - * - */ - void ConstructGetListSelectL( RBuf& aQuery, TBool aGet = ETrue ) const; - - /** - * Contructs SQL query to select entries for Remove - * @param aQuery SQL query - * - */ - void ConstructRemoveSelectL( RBuf& aQuery, TBool aGet = ETrue ) const; - - /** - * Binds value to query - * @param aQuery SQL query - * @param aSqlDb handle to database - * - */ - void BindValueL( const RBuf& aQuery, RSqlStatement& aStmt ) const; - - /** - * Checks if GetList for all items should be done - * @param aFilter flag describing which ids are set - * @return ETrue if getlist for all items shold be done, EFalse if not - */ - TBool IsGetListAllL( TUint aFilter ) const; - - /** - * Removes attributes with "All" value from map - * @param aFilter filter bit will be reset if any attribute == "all" - */ - void RemoveAllAttributeL( TUint& aFilter ) const; - - /** - * Leaves if publisher, content type od content_id is not descriptor type. - */ - void CheckIdentifiersL() const; - - /** - * Leaves if aParameterIndex is negative-error value - * or in case of binding error. - */ - void BindTextL(RSqlStatement& aStmt, TInt aParameterIndex, - const TDesC& aParameterText) const; - - /** - * Leaves if aParameterIndex is negative-error value - * or in case of binding error. - */ - void BindBinaryL(RSqlStatement& aStmt, TInt aParameterIndex, - const TDesC8& aParameterText) const; - - /** - * Leaves if aParameterIndex is negative-error value - * or in case of binding error. - */ - void BindInt64L(RSqlStatement& aStmt, TInt aParameterIndex, - TInt64 aParameterValue) const; - - /** - * Leaves if aParameterIndex is negative-error value - * or in case of binding error. - */ - void BindIntL(RSqlStatement& aStmt, TInt aParameterIndex, - TInt aParameterValue) const; - - /** - * Leaves if column index return value is negative. - * @return result of RSqlStatement::ColumnIndex - */ - TInt ColumnIndexL( RSqlStatement& aStmt, const TDesC& aColumnName ) const; -protected: - - /** - * C++ default constructor. - */ - CCPLiwMap(); - - /** - * Perform the second phase construction of a CCPLiwMap object. - */ - void ConstructL(); - -protected: - // data - - /* - * The underlying generic parameter list - * Own. - */ - CLiwGenericParamList* iMap; - - /* - * Class used for security - *Own. - */ - const CCPSecurityPolicy* iPolicy; - - }; - -#endif // C_CPLIWIDSMAP_H