/*
* 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<CCaLocalizationEntry>& 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<CCaInnerEntry>& 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<TInt>& 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<TInt>& 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<TInt>& 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<TInt>& 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<MCaSessionNorifier> iHandlerNotifier;
};
#endif //CASTORAGEPROXY_H