diff -r 000000000000 -r b497e44ab2fc syncmlfw/ds/hostserver/dshostserverbase/inc/Nsmldsdataproviderarray.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/hostserver/dshostserverbase/inc/Nsmldsdataproviderarray.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,210 @@ +/* +* Copyright (c) 2005 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: array for storing dataproviders and datastores. +* +*/ + + +#ifndef __NSMLDSDATAPROVIDERARRAY_H__ +#define __NSMLDSDATAPROVIDERARRAY_H__ + +// INCLUDES +#include +#include +#include +#include + +#include "nsmldshostconstants.h" +#include "nsmldshostitem.h" +#include "nsmldsitemmodificationset.h" + +// FORWARD DECLARATIONS +class CSmlDataProvider; +class CSmlDataStore; +class CNSmlDSAsyncRequestHandler; +class CNSmlAdapterLog; +class CSmlDataStoreFormat; + +// CLASS DECLARATION + +// ------------------------------------------------------------------------------------------------ +// Container for CSmlDataStore. +// +// @lib nsmldshostserver.lib +// ------------------------------------------------------------------------------------------------ +typedef RPointerArray RBatchItemUidArray; + +struct TNSmlDSDataStoreElement + { + public: + /** + * deletes iBatchItemUids and its objects. + */ + void FreeBatchItemArray(); + + /** + * is iDataStore opened. + * @return TBool. ETrue if iDataStore is opened, EFalse otherwise. + */ + TBool IsOpen() const; + + /** + * sets iDataStore as opened. + */ + void SetOpened(); + + /** + * The name of iDataStore. + * @return const TDesC&. The name of iDataStore + */ + const TDesC& StoreName() const; + + void setStoreFormat( CSmlDataStoreFormat* aDSFormat ); + private: + + /** + * C++ default constructor. + */ + TNSmlDSDataStoreElement( const HBufC* aStoreName ); + + public: //Data + + //This class doesn't free memory reserved for member variable pointers. + + CNSmlDSAsyncRequestHandler* iDSAO; //async handler for the data store. + //Null if no asynch call outstanding + CSmlDataStore* iDataStore; //contained data store + RBatchItemUidArray* iBatchItemUids; //array of item uid when in batch mode. + CNSmlAdapterLog* iAdpLog; //sync relationship + TSmlDbItemUid iCreatedUid; //uid for CSmlDataStore::CreateItemL + TNSmlHostMode iHostMode; //data store mode + private: //Data + + const HBufC* iStoreName; //Only temporary. Contains store name only when created but not yet opened. + CSmlDataStoreFormat* iDSFormat; //data store format. + private: + + friend class RNSmlDSDataProviderArray; + }; + +// ------------------------------------------------------------------------------------------------ +// Container for CSmlDataProvider. +// +// @lib nsmldshostserver.lib +// ------------------------------------------------------------------------------------------------ +typedef RPointerArray RDataStoreElementArray; + +struct TNSmlDSDataProviderElement + { + //This class doesn't free memory reserved for member variable pointers. + CSmlDataProvider* iDataprovider; + RDataStoreElementArray* iDataStores; //created data stores for data provider. + }; + +// ------------------------------------------------------------------------------------------------ +// Array for created data providers and created and opened data stores. +// +// @lib nsmldshostserver.lib +// ------------------------------------------------------------------------------------------------ +class RNSmlDSDataProviderArray : protected RPointerArray + { + public: //Constructor and destructor + + /** + * A C++ constructor of this class. + */ + RNSmlDSDataProviderArray(); + + public: + + /** + * Destroys all the the elements and resets the array. + */ + void ResetAndDestroy(); + + /** + * Finds and returns the dataprovider using data provider id. + * @param aId. Search key. + * @return CSmlDataProvider*. The object found or NULL if no match. + */ + CSmlDataProvider* DataProvider( TSmlDataProviderId aId ); + + /** + * Finds and returns the dataprovider element using data provider id. + * @param aId. Search key. + * @return TNSmlDSDataProviderElement*. The object found or NULL if no match. + */ + TNSmlDSDataProviderElement* DataProviderElement( TSmlDataProviderId aId ); + + /** + * Finds and returns the datastore using data provider id and store name. + * @param aId. Search key. data provider id + * @param aId. Search key. Store name. + * @return CSmlDataStore*. The object found or NULL if no match. + */ + CSmlDataStore* DataStore( TSmlDataProviderId aId, const TDesC& aStoreName ); + + /** + * Finds and returns the datastore element from data provider element + * using data provider id and store name. + * @param aId. Search key. data provider id + * @param aId. Search key. Store name. + * @return TNSmlDSDataStoreElement*. The object found or NULL if no match. + */ + static TNSmlDSDataStoreElement* DataStoreElement( const TNSmlDSDataProviderElement* aItem, + const TDesC& aStoreName ); + + /** + * Inserts data provider to the array. Leaves if fails. + * @param aDataprovider. Data provider to add. + * @return TInt. KErrNone if object is inserted. + * KErrAlreadyExists if object is already inserted. + */ + TInt InsertL( CSmlDataProvider* aDataprovider ); + + /** + * Inserts created data store to data provider element. + * @param aDataproviderItem. object where to add. + * @param aDataStore. datastore to add. + * @param aDataStoreName. store name for aDataStore. + * @return TNSmlDSDataStoreElement*. Newly created data store element, that contains aDataStore. + */ + TNSmlDSDataStoreElement* InsertL( TNSmlDSDataProviderElement* aDataproviderItem, + CSmlDataStore* aDataStore, HBufC* aDataStoreName ); + + /** + * Removes and frees the memory reserved to data store element. + * Doesn't free the returned object. Caller must take the ownership of that. + * @param aDataproviderItem. data provider element where to remove. + * @param aDataStoreItem. data store to remove. + * @return CNSmlDSAsyncRequestHandler*. Request handler for aDataStoreItem. + * NULL if no asynchronous request is outstanding. + */ + CNSmlDSAsyncRequestHandler* Remove( TNSmlDSDataProviderElement* aDataproviderItem, + TNSmlDSDataStoreElement* aDataStoreItem ); + + protected: + + /** + * Destroys data store element. + * @param aDataStoreItem. data store element to destroy. After destruction points to NULL. + * @return CNSmlDSAsyncRequestHandler*. Request handler for aDataStoreItem. + * NULL if no asynchronous request is outstanding. + */ + static CNSmlDSAsyncRequestHandler* Destroy( TNSmlDSDataStoreElement*& aDataStoreItem ); + }; + +#endif //__NSMLDSDATAPROVIDERARRAY_H__ + +// End of File