diff -r 1a2a00e78665 -r f62f87b200ec contentstorage/srvinc/castorageproxy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentstorage/srvinc/castorageproxy.h Fri Mar 19 09:35:23 2010 +0200 @@ -0,0 +1,187 @@ +/* + * 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 "caoperationparams.h" + + +// FORWARD DECLARATIONS +class CCaStorage; +class CCaInnerQuery; +class CCaInnerEntry; +class CCaLocalizationEntry; +class MCaSessionNorifier; + +/** + * 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 ); + + /** + * 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 + */ + IMPORT_C void AddL( CCaInnerEntry* aEntry, TBool aUpdate = EFalse ); + + /** + * 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 ); + + /** + * 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(); + +private: + //Data + + /** + * Data storage. Own. + */ + CCaStorage* iStorage; + + /** + * Sessions using this engine. Own. + */ + RPointerArray iHandlerNotifier; + }; + +#endif //CASTORAGEPROXY_H