diff -r 053c6c7c14f3 -r 0efa10d348c0 contentstorage/srvinc/castorageproxy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentstorage/srvinc/castorageproxy.h Tue Aug 31 15:30:51 2010 +0300 @@ -0,0 +1,223 @@ +/* + * 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: Interface for CA database implementations + * + */ + +#ifndef CASTORAGEPROXY_H +#define CASTORAGEPROXY_H + +#include "cadef.h" +#include "castorage_global.h" +#include "caoperationparams.h" + + + +// FORWARD DECLARATIONS +class CCaStorage; +class CCaInnerQuery; +class CCaInnerEntry; +class CCaLocalizationEntry; +class MCaSessionNorifier; + +CA_STORAGE_TEST_CLASS( TestCaClient ) + +/** + * Interface for CA database implementations. + * + */ +class CCaStorageProxy: public CBase + { +public: + + /** + * Two-phased constructor. + */ + static CCaStorageProxy* NewL(); + + /** + * Two-phased constructor. + */ + static CCaStorageProxy* NewLC(); + + /** + * Destructor. + */ + ~CCaStorageProxy(); + + /** + * Localizes one entry attribute + * + * @param aLocalization information about one localization row. + */ + IMPORT_C void LocalizeEntryL( CCaLocalizationEntry& aLocalization ); + + /** + * Add localization row to the storage + * + * @param aLocalization entry containing localization row to be added + */ + IMPORT_C void AddLocalizationL(const CCaLocalizationEntry& aLocalization); + + /** + * Fetches localization data from database + * + * @param aResultContainer Target for results. + */ + IMPORT_C void GetLocalizationsL( + RPointerArray& aResultContainer ); + + /** + * Fetches data from storage. + * @param aQuery Query filter for entries to be fetched. + * @param aResult Result entry container. + */ + IMPORT_C void GetEntriesL( const CCaInnerQuery* aQuery, + RPointerArray& aResultContainer ); + + /** + * Fetches entry ids from storage. + * @param aQuery Query filter for entries' ids to be fetched. + * @param aResultIdArray Result entry id array. + */ + IMPORT_C void GetEntriesIdsL( const CCaInnerQuery* aQuery, + RArray& aResultIdArray ); + + /** + * Adds or Updates data to storage. + * In case when data is added the input aEntry serves. + * also as an output entry. + * @param aEntry Entry data. + * @param aUpdate is entry updated by a client. + * @param aItemAppearanceChange a type of change of the item. + */ + IMPORT_C void AddL( CCaInnerEntry* aEntry, + TBool aUpdate = EFalse, + TItemAppearance aItemAppearanceChange = EItemAppearanceNotChanged ); + + /** + * Removes entries from storage. + * @param aEntryIds Ids of entries to be removed. + */ + IMPORT_C void RemoveL( const RArray& aEntryIds ); + + /** + * Organizes entries in storage. + * @param aEntryIds Entry ids to be organized + * (insert, remove, append, prepend are possible). + * @param aParams Organize parameters. + */ + IMPORT_C void OrganizeL( const RArray& aEntryIds, + TCaOperationParams aParams ); + + /** + * Executes touch specific actions on storage. + * Should be called when e.g. entry is clicked. + * @param aEntry entry to be touched + */ + IMPORT_C void TouchL( CCaInnerEntry* aEntry ); + + /** + * Get database property on storage. + * + * @param aProperty The property to get. + * @param aPropertyValue The value of property. + */ + IMPORT_C void DbPropertyL( const TDesC& aProperty, TDes& aPropertyValue ); + + /** + * Set property action on storage. + * + * @param aProperty The property to set. + * @param aPropertyValue The value of property. + */ + IMPORT_C void SetDBPropertyL( const TDesC& aProperty, + const TDesC& aPropertyValue ); + + /** + * Organizes data within a group in custom order in storage. + * + * @param aEntryIds Ids of entries in custom order. + * @param aGroupId Group to sort. + */ + IMPORT_C void CustomSortL( const RArray& aEntryIds, + const TInt aGroupId ); + + + /** + * Saves a copy of database to private. + */ + IMPORT_C void SaveDatabaseL(); + + /** + * Marks db to be restored from backup by next restart + */ + IMPORT_C void RestoreDatabaseL(); + + + /** + * Loads data base from rom. + */ + IMPORT_C void LoadDataBaseFromRomL(); + + /** + * Add a session. Ownership not taken, this object only keeps a list of + * sessions that are dependent on its engine. + * @param aSession Session. + */ + void AddSessionL( MCaSessionNorifier* aHandlerNotifier ); + + /** + * Remove a session. Safe to call if not added. + * When no more sessions remain dependent on this object, timed + * self-deletion is scheduled. + */ + void RemoveSession( MCaSessionNorifier* aHandlerNotifier ); + +private: + + /** + * Perform the second phase construction of a CCpStorageEngine object. + */ + void ConstructL(); + + /** + * C++ default constructor. + */ + CCaStorageProxy(); + + CCaLocalizationEntry* LocalizeTextL( CCaInnerEntry* aEntry ); + + CCaLocalizationEntry* LocalizeDescriptionL( CCaInnerEntry* aEntry ); + + TBool InitializeTranslatorL( TDesC& aQmFilename ); + +private: + //Data + + /** + * Data storage. Own. + */ + CCaStorage* iStorage; + + /** + * Sessions using this engine. Own. + */ + RPointerArray iHandlerNotifier; + + CA_STORAGE_TEST_FRIEND_CLASS( TestCaClient ) + + }; + +#endif //CASTORAGEPROXY_H