diff -r 000000000000 -r 094583676ce7 PECengine/ListLibrary2/AttrListSrc/CPEngAttributeListTransactionManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/ListLibrary2/AttrListSrc/CPEngAttributeListTransactionManager.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,376 @@ +/* +* 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: Attribute list transaction manager +* +*/ + +#ifndef __CPENGATTRIBUTELISTTRANSACTIONMANAGER_H__ +#define __CPENGATTRIBUTELISTTRANSACTIONMANAGER_H__ + + +// INCLUDES + +#include "CPEngAttributeListManager.h" +#include "MPEngTransactionFactory.h" +#include "MPEngAttributeListTransactionManager.h" +#include "PEngWVCspVersion.h" +#include + +// DATA TYPES +typedef void ( CPEngAttributeListItem::*CommitCall )( const TDesC& ); +typedef TBool ( CPEngAttributeListItem::*ItemDefaultSet )( void ) const; + + + +// FORWARD DECLARATIONS +class CPEngContactListTransactionManager; +class MPEngListLibFactory; + + +// CLASS DECLARATION +/** + * Attribute list transaction manager + * + * @lib PEngListLib2 + * @since 3.0 + */ +NONSHARABLE_CLASS( CPEngAttributeListTransactionManager ): + public CPEngAttributeListManager, + public MPEngTransactionFactory, + public MPEngAttributeListTransactionManager + { +public: + /** + * Two-phased constructor. + */ + static CPEngAttributeListTransactionManager* NewL( + MPEngListLibFactory& aFactory, + const CPEngSessionSlotId& aSessionSlot, + TPEngWVCspVersion& aCSPVersion ); + + /** + * Two-phased constructor. + */ + static CPEngAttributeListTransactionManager* NewLC( + MPEngListLibFactory& aFactory, + const CPEngSessionSlotId& aSessionSlot, + TPEngWVCspVersion& aCSPVersion ); + + /** + * Destructor. + */ + ~CPEngAttributeListTransactionManager(); + + + +public: // Functions from MPEngTransactionFactory + + /** + * Clean up stack support for the factory + * @see + */ + void Close(); + + + /** + * Factory method to create handler for incoming data + * @see + */ + MPEngIncomingTransactionHandler* IncomingTransactionHandlerL( + const TDesC8& aIncomingRequest ); + + /** + * Factory method to create outgoing handler(s) + * @see + */ + void OutgoingTransactionHandlerL( + TInt aOperation, + const TDesC& aData, + RPointerArray& aHandlers ); + + + +public: // From MPEngAttributeListTransactionManager + + /** + * Commit Attribute list creation + * @see + */ + void AttributeListCreated( const RArray& aAttrList ); + + + /** + * Attribute list synchronized with the server + * @see + */ + void AttributeEngineSynchronizedL(); + + + /** + * Commit successful creation of the attribute list for contact list + * @see + */ + void CommitContactListL( const TDesC& aContactList ); + + + /** + * Commit successful creation of the attribute list for contact ID + * @see + */ + void CommitContactIdL( const TDesC& aContactId ); + + + /** + * Rollback unsuccessful creation of the attribute list + * @see + */ + void RollBackContactListL( const TDesC& aContactList ); + + + /** + * Rollback unsuccessful creation of the attribute list + * @see + */ + void RollBackContactIdL( const TDesC& aContactId ); + + + /** + * Commit creation of the attribute list + * @see + */ + void CommitDefaultL(); + + + /** + * Roll back creating of the default attribute list + * @see + */ + void RollBackDefaultL(); + + + /** + * Commit contacts, creating of the attribute list was successful + * @see + */ + void CommitDefinedContactsL( const CDesCArray* aContactLists, + const CDesCArray* aContactIds ); + + /** + * RollBack contacts + * @see + */ + void RollBackDefinedContactsL( const CDesCArray* aContactLists, + const CDesCArray* aContactIds ); + + + /** + * Store changes of the attribute list to the store + * @see + */ + void StoreChangesToStoreL(); + + + + + +private: // new function of the base class + + /** + * Create synchronization Handlers + * + * @since 3.0 + * @param aTransactionHandlers array to append handlers + */ + void GetSyncHandlersL( + RPointerArray& TransactionHandlers, + TInt aOperationId ); + + /** + * Get attribute lists update handler + * + * @since 3.0 + * @param aTransactionHandlers array to append handlers + * @param aOperationId operation Id + */ + void GetAttributeListsUpdateHandlersL( + RPointerArray& TransactionHandlers, + TInt aOperationId ); + + /** + * Get attribute lists update handlers for defined contact lists. + * + * @since 3.0 + * @param aData packed Storage Ids of the contact lists + * @param aTransactionHandlers array to append handlers + * @param aOperationId operation Id + */ + void GetLazyContLstInitializeAttrLstHandlersL( + const TDesC& aData, + RPointerArray& TransactionHandlers, + TInt aOperationId ); + + /** + * Get attribute lists update handlers for to be deleted attr lists + * + * @since 3.0 + * @param aTransactionHandlers array to append handlers + * @param aOperationId operation Id + */ + void GetDeleteAttributeListsHandlersL( + RPointerArray& aTransactionHandlers, + TInt aOperationId ); + + + /** + * Compress array of attribute lists + * + * @since 3.0 + */ + void CompressArrListArray(); + + /** + * Append descriptors from the original array to the new array + * + * @since 3.0 + * @param aOriginalDesArray original descriptor array + * @param aNewArray new descriptor array + */ + void AppendDesArrayContentL( + const CDesC16Array& aOriginalDesArray, + CDesC16Array& aNewDesArray ); + + + /** + * Check if attribute list is valid on the server + * + * @since 3.0 + * @param aAttributeList attribute list + * @return ETrue if attribute list is valid + */ + TBool CheckAttributeListServerValidityCurrent( + const CPEngAttributeListItem& aAttributeList ); + + /** + * Check if attribute list needs to be created on the network server. + * + * @since 3.0 + * @param aAttributeList attribute list + * @return ETrue if attribute list is valid + */ + TBool CheckAttributeListCreateNewValidity( + const CPEngAttributeListItem& aAttributeList ); + + /** + * Check if attribute list needs to be deleted from the server + * + * @since 3.0 + * @param + * @return ETrue if attribute list is valid + */ + TBool CheckAttributeListDeleteValidity(); + + /** + * Commit whole content of the attribute list + * + * @since 3.0 + * @param aAttributeList attribute list + */ + void CommitAttributeListL( + const CPEngAttributeListItem& aAttributeList ); + + /** + * Commit all attribute lists + * + * @since 3.0 + */ + void CommitAllAttributeListL(); + + /** + * Commit attribute lists for deletion + * + * @since 3.0 + */ + void CommitDeleteAttributeListL(); + + /** + * Commit successful creation of the attribute list for contact + * + * @since 3.0 + * @param aContact Contact to commit + * @param aCommitCall call back function to use for commit + * @param aDeleteArray delete array to be used for commiting + */ + void CommitContactL( const TDesC& aContact, + CommitCall aCommitCall, + CDesCArray& aDeleteArray ); + + /** + * Rollback not successful creation of the attribute list for contact + * + * @since 3.0 + * @param aContact Contact to rollback + * @param aNewCommitArray array of the attr list item to use to rollback + * @param aDeleteArray delete array to use to rollback + */ + void RollBackOneContactL( const TDesC& aContact, + CPEngAttributeListItem::TPEngAttrListItemArrays aNewCommitArray, + CDesCArray& aDeleteArray ); + /** + * Check if attribute list is validity + * + * @since 3.0 + * @param aAttributeList attribute list + * @param aIDsArray id array to use + * @param aCntListArray cnt list array to use + * @param aDefaultSetCall call function pointer + * @param aSynchronizeFlagIncluded synchronization flag included + * @return ETrue if attribute list is valid + */ + TBool CheckAttributeListValidity( + const CPEngAttributeListItem& aAttributeList, + CPEngAttributeListItem::TPEngAttrListItemArrays aIDsArray, + CPEngAttributeListItem::TPEngAttrListItemArrays aCntListArray, + ItemDefaultSet aDefaultSetCall, + TBool aSynchronizeFlagIncluded ); + +private: // constructors + + /** + * By default Symbian constructor is private. + */ + void ConstructL( const CPEngSessionSlotId& aSessionSlot ); + + /** + * C++ default constructor. + */ + CPEngAttributeListTransactionManager( MPEngListLibFactory& aFactory, + TPEngWVCspVersion& aCSPVersion ); + +private: // Data + + // REF: Contact list transaction manager + CPEngContactListTransactionManager* iContactListTransManager; + + /// REF: CSP Version + TPEngWVCspVersion& iCSPVersion; + + /// OWN: Count of created sync handlers + TInt iSyncHandlerCount; + + }; + +#endif // __CPENGATTRIBUTELISTTRANSACTIONMANAGER_H__ + +// End of File +