--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PECengine/ListLibrary2/AttrListSrc/CPEngAttributeListTransDeleteAttrList.cpp Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,200 @@
+/*
+* 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: Create attribute list transaction handler
+*
+*/
+
+// INCLUDE FILES
+#include "CPEngAttributeListTransDeleteAttrList.h"
+#include "CPEngAttributeListItem.h"
+#include "MPEngAttributeListTransactionManager.h"
+
+#include "PEngListLibTools.h"
+#include "MPEngXMLSerializer.h"
+#include "MPEngXMLParser.h"
+
+#include "CPEngTransactionStatus.h"
+#include "PEngWVPresenceErrors2.h"
+#include <e32std.h>
+
+//Default granurality for ID lists
+const TInt KAttributeListIdGranurality = 3;
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPEngAttributeListTransDeleteAttrList::CPEngAttributeListTransDeleteAttrList()
+// -----------------------------------------------------------------------------
+//
+CPEngAttributeListTransDeleteAttrList::CPEngAttributeListTransDeleteAttrList(
+ MPEngAttributeListTransactionManager& aAttrListTransManager,
+ CPEngContactListTransactionManager& aCntListTransManager,
+ MDesCArray& aDeleteContactList,
+ MDesCArray& aDeleteContactIds,
+ TBool aDeleteDefault,
+ TPEngWVCspVersion& aCSPVersion,
+ TInt aOperationId )
+ : CPEngAttributeListTransBase( aAttrListTransManager,
+ aCntListTransManager,
+ aCSPVersion,
+ aOperationId ),
+ iArrayDeleteContactList( aDeleteContactList ),
+ iArrayDeleteContactIds( aDeleteContactIds ),
+ iDeleteDefaultAttrList( aDeleteDefault )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPEngAttributeListTransDeleteAttrList::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAttributeListTransDeleteAttrList::ConstructL()
+ {
+ CPEngAttributeListTransBase::ConstructL();
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAttributeListTransDeleteAttrList::NewLC()
+// -----------------------------------------------------------------------------
+//
+CPEngAttributeListTransDeleteAttrList* CPEngAttributeListTransDeleteAttrList::NewLC(
+ MPEngAttributeListTransactionManager& aAttrListTransManager,
+ CPEngContactListTransactionManager& aCntListTransManager,
+ MDesCArray& aDeleteContactList,
+ MDesCArray& aDeleteContactIds,
+ TBool aDeleteDefault,
+ TPEngWVCspVersion& aCSPVersion,
+ TInt aOperationId )
+ {
+ CPEngAttributeListTransDeleteAttrList* self =
+ new ( ELeave ) CPEngAttributeListTransDeleteAttrList(
+ aAttrListTransManager,
+ aCntListTransManager,
+ aDeleteContactList,
+ aDeleteContactIds,
+ aDeleteDefault,
+ aCSPVersion,
+ aOperationId );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+
+ return self;
+ }
+
+
+// Destructor
+CPEngAttributeListTransDeleteAttrList::~CPEngAttributeListTransDeleteAttrList()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAttributeListTransDeleteAttrList::RequestL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAttributeListTransDeleteAttrList::RequestL(
+ TDes8& aSendBuffer )
+ {
+ aSendBuffer.Zero();
+ aSendBuffer.Zero();
+ MPEngXMLSerializer* xmlSerializer = CreateXmlSerializerL( aSendBuffer );
+ CleanupClosePushL( *xmlSerializer );
+
+ // <TransactionContent xmlns="http://www.wireless -village.org/TRC1.1">
+ NListLibTools::AppendTransactionContentTagXmlL( *xmlSerializer, iCSPVersion );
+
+ // <DeleteAttributeList-Request>
+ xmlSerializer->StartTagL( KDeleteAttributeList );
+
+ XMLAppendContactIdsL( *xmlSerializer, iArrayDeleteContactIds );
+ XMLAppendContactListsL( *xmlSerializer, iArrayDeleteContactList );
+ XMLAppendDefaultFlagL( *xmlSerializer, iDeleteDefaultAttrList );
+
+ // </DeleteAttributeList-Request>
+ xmlSerializer->EndTagL( KDeleteAttributeList );
+
+ // end of transaction
+ // </TransactionContent>
+ xmlSerializer->EndTagL( KTransactionContent );
+ CleanupStack::PopAndDestroy( ); // xmlSerializer
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPEngAttributeListTransDeleteAttrList::DoConsumeMessageFromServerL()
+// -----------------------------------------------------------------------------
+//
+void CPEngAttributeListTransDeleteAttrList::DoConsumeMessageFromServerL(
+ const TDesC8& aResponse )
+ {
+ MPEngXMLParser* XMLparser = CreateXMLParserLC();
+ TInt err ( XMLparser->ParseResultL( aResponse,
+ iOperationId,
+ *iTransactionStatus ) );
+
+
+ CDesC16ArraySeg* contactIDs =
+ new ( ELeave ) CDesC16ArraySeg( KAttributeListIdGranurality );
+ CleanupStack::PushL( contactIDs );
+ CopyDesArrayL( iArrayDeleteContactIds, * contactIDs );
+
+ CDesC16ArraySeg* contactLists =
+ new ( ELeave ) CDesC16ArraySeg( KAttributeListIdGranurality );
+ CleanupStack::PushL( contactLists );
+ CopyDesArrayL( iArrayDeleteContactList, *contactLists );
+
+
+ switch ( err )
+ {
+ case KErrNone:
+ case KPEngNwErrUnknownUser:
+ case KPEngNwErrContactListDoesNotExist:
+ case KPEngNwErrPartiallySuccessful:
+ {
+ // successful operation, all went fine, process according to it
+ // when it failed cause of unknown contact list/wv ID, commit as
+ // well since we are deleting anyway
+ iAttributeListTransManager.CommitDefinedContactsL( contactLists, contactIDs );
+
+ // if we were deleting also delfaul attribute lists, commit it as well
+ if ( iDeleteDefaultAttrList )
+ {
+ iAttributeListTransManager.CommitDefaultL();
+ }
+ break;
+ }
+
+ default:
+ {
+ // none of the IDs/cnts list was deleted, remove them from the delete lists
+ iAttributeListTransManager.RollBackDefinedContactsL( contactLists, contactIDs );
+ if ( iDeleteDefaultAttrList )
+ {
+ iAttributeListTransManager.RollBackDefaultL();
+ }
+ break;
+ }
+ }
+
+
+ iAttributeListTransManager.StoreChangesToStoreL();
+ CleanupStack::PopAndDestroy( 3 ); // XMLparser, contactLists, contactIDs
+ }
+
+
+// End of File
+