ncdengine/provider/protocol/src/ncdrequestmanagesubscriptions.cpp
changeset 0 ba25891c3a9e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/protocol/src/ncdrequestmanagesubscriptions.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,156 @@
+/*
+* Copyright (c) 2006 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:   CNcdRequestManageSubscription implementation
+*
+*/
+
+
+#include "ncdrequestmanagesubscriptions.h"
+#include "ncdrequestbase.h"
+#include "ncdrequestconfigurationdata.h"
+#include "ncdprotocolutils.h"
+#include "ncdprotocoltypes.h"
+#include "ncdprotocolwords.h"
+
+#include "catalogsdebug.h"
+
+CNcdRequestManageSubscriptions* CNcdRequestManageSubscriptions::NewL()
+    {
+    CNcdRequestManageSubscriptions* self = CNcdRequestManageSubscriptions::NewLC( );
+    CleanupStack::Pop();
+    return self;
+    }
+
+CNcdRequestManageSubscriptions* CNcdRequestManageSubscriptions::NewLC()
+    {
+    CNcdRequestManageSubscriptions* self = new (ELeave) CNcdRequestManageSubscriptions();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+void CNcdRequestManageSubscriptions::ConstructL()
+    {
+    CNcdRequestBase::ConstructL( KTagPreminetRequest );
+    iName.SetL(KTagManageSubscriptions);
+    iNamespaceUri.SetL(KDefaultNamespaceUri);
+    iPrefix = TXmlEngString();
+    iVersion.SetL(KAttrPreminetVersion);
+    }
+    
+CNcdRequestManageSubscriptions::CNcdRequestManageSubscriptions()
+: CNcdRequestBase()
+    {
+    }
+
+CNcdRequestManageSubscriptions::~CNcdRequestManageSubscriptions()
+    {
+    DLTRACEIN((""));
+    iName.Free();
+    iNamespaceUri.Free();
+    iPrefix.Free();
+    iSubscriptions.ResetAndDestroy();
+    
+    DLTRACEOUT((""));
+    }
+
+void CNcdRequestManageSubscriptions::AddSubscriptionL( 
+    const TDesC& aEntityId, const TDesC& aPurchaseOptionId, 
+    const TNcdSubscriptionOperation aOperation ) 
+    {
+    DLTRACEIN((""));
+    CNcdSubscriptionManagement* sub = new (ELeave) CNcdSubscriptionManagement;
+    CleanupStack::PushL(sub);
+    sub->ConstructL();
+    NcdProtocolUtils::AssignDesL(sub->iEntityId, aEntityId);
+    NcdProtocolUtils::AssignDesL(sub->iPurchaseOptionId, aPurchaseOptionId);
+    sub->iOperation = aOperation;
+    iSubscriptions.Append(sub);
+    CleanupStack::Pop();
+    DLTRACEOUT((""));
+    }
+    
+
+// generates the dom nodes
+HBufC8* CNcdRequestManageSubscriptions::CreateRequestL()
+    {
+    DLTRACEIN((""));
+    // generate browse part of the request
+    NcdProtocolUtils::NewAttributeL( iRoot, KAttrVersion, iVersion);
+    iRequestElement = NcdProtocolUtils::NewElementL(
+        iDocument, KTagManageSubscriptions);
+    if (iConfiguration)
+        iConfiguration->SetNamespacePrefixL( KAttrCdpNamespacePrefix );
+    
+    for ( TInt i = 0; i < iSubscriptions.Count(); ++i )
+        {
+        CNcdSubscriptionManagement* sub = iSubscriptions[i];
+        TXmlEngElement subscription  = 
+            NcdProtocolUtils::NewElementL(iDocument, iRequestElement, KTagSubscription);
+        NcdProtocolUtils::NewAttributeL(subscription, KAttrEntityId, sub->EntityId());
+        NcdProtocolUtils::NewAttributeL(subscription, KAttrPurchaseOptionId, sub->PurchaseOptionId());
+        if ( sub->Operation() == EStatus ) 
+            {
+            NcdProtocolUtils::NewAttributeL(
+                subscription, KAttrOperation, KValueStatus );
+            }
+        else if ( sub->Operation() == EUnsubscribe ) 
+            {
+            NcdProtocolUtils::NewAttributeL(
+                subscription, KAttrOperation, KValueUnsubscribe );
+            }
+        else 
+            {
+            DASSERT( 0 );
+            }
+        }
+        
+    DLTRACEOUT((""));
+    
+    // base class generates the complete request
+    return CNcdRequestBase::CreateRequestL();
+    }
+
+    
+void CNcdSubscriptionManagement::ConstructL() 
+    {
+    NcdProtocolUtils::AssignEmptyDesL(iEntityId);
+    NcdProtocolUtils::AssignEmptyDesL(iPurchaseOptionId);
+    }
+    
+CNcdSubscriptionManagement::~CNcdSubscriptionManagement() 
+    {
+    delete iEntityId;
+    delete iPurchaseOptionId;
+    }
+
+CNcdSubscriptionManagement::CNcdSubscriptionManagement() 
+: CBase()
+    {
+    }
+    
+const TDesC& CNcdSubscriptionManagement::EntityId() const
+    {
+    return *iEntityId;
+    }
+
+const TDesC& CNcdSubscriptionManagement::PurchaseOptionId() const
+    {
+    return *iPurchaseOptionId;
+    }
+
+TNcdSubscriptionOperation CNcdSubscriptionManagement::Operation() const 
+    {
+    return iOperation;
+    }