diff -r 000000000000 -r ba25891c3a9e ncdengine/provider/protocol/src/ncdrequestinstallation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/provider/protocol/src/ncdrequestinstallation.cpp Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,216 @@ +/* +* Copyright (c) 2007-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: CNcdRequestInstallation implementation +* +*/ + + +#include + +#include "ncdrequestinstallation.h" +#include "ncdrequestbase.h" +#include "ncdrequestconfigurationdata.h" +#include "catalogsdebug.h" +#include "ncdprotocolutils.h" +#include "ncdprotocolwords.h" + + +CNcdRequestInstallation* CNcdRequestInstallation::NewL() + { + CNcdRequestInstallation* self = CNcdRequestInstallation::NewLC(); + CleanupStack::Pop(); + return self; + } + +CNcdRequestInstallation* CNcdRequestInstallation::NewLC() + { + CNcdRequestInstallation* self = new (ELeave) CNcdRequestInstallation(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +void CNcdRequestInstallation::ConstructL() + { + DLTRACEIN(("")); + CNcdRequestBase::ConstructL( KTagPreminetRequest ); + iName.SetL( KTagInstallationReport ); + iNamespaceUri.SetL( KDefaultNamespaceUri ); + iPrefix = TXmlEngString(); + iVersion.SetL( KAttrPreminetVersion ); + + } + +CNcdRequestInstallation::CNcdRequestInstallation() + : CNcdRequestBase() + { + } + +CNcdRequestInstallation::~CNcdRequestInstallation() + { + DLTRACEIN(("")); + iName.Free(); + iNamespaceUri.Free(); + iPrefix.Free(); + + + DLTRACE(("Free installation details")); + for (TInt i = 0; i < iInstallationDetails.Count(); ++i) + { + TNcdRequestInstallation& e = iInstallationDetails[i]; + e.iId.Free(); + //e.iTimeStamp.Free(); + //e.iPurchaseOptionId.Free(); + e.iUri.Free(); + e.iElapsedTime.Free(); + + } + iInstallationDetails.Close(); + DLTRACEOUT(("")); + } + + +void CNcdRequestInstallation::AddDownloadDetailsL( + const TDesC& aId, + const TDesC& aUri, + TInt aStatusCode, + const TInt64& aElapsedTime ) + { + DLTRACEIN(( _L("Id: %S, URI: %S, Status: %d, elapsed time: %Ld"), + &aId, &aUri, aStatusCode, aElapsedTime )); + + TNcdRequestInstallation install; + + install.iId.SetL( aId ); + install.iUri.SetL( aUri ); + install.iStatusCode = aStatusCode; + + // Convert TInt64 to a string + const TInt K64BitIntAsStringLength = 21; + + HBufC* conversionBuffer = HBufC::NewLC( K64BitIntAsStringLength ); + conversionBuffer->Des().Num( aElapsedTime ); + + install.iElapsedTime.SetL( *conversionBuffer ); + DLTRACE(( _L("Converted time: %S"), conversionBuffer )); + + CleanupStack::PopAndDestroy( conversionBuffer ); + + iInstallationDetails.AppendL( install ); + DLTRACEOUT(("Details added successfully")); + } + + +void CNcdRequestInstallation::AddInstallDetailsL( + const TDesC& aId, + TInt aStatusCode ) + { + DLTRACEIN(( _L("Id: %S, Status: %d"), &aId, aStatusCode )); + + TNcdRequestInstallation install; + + install.iId.SetL( aId ); + install.iStatusCode = aStatusCode; + + // These are not set in install report. + // So, set them to Null value which will be left out when + // xml element is created. + install.iUri.SetL( KNullDesC ); + install.iElapsedTime.SetL( KNullDesC ); + + iInstallationDetails.AppendL( install ); + DLTRACEOUT(("Details added successfully")); + } + + +// generates the dom nodes +HBufC8* CNcdRequestInstallation::CreateRequestL() + { + DLTRACEIN(("")); + // generate installation part of the request + CNcdRequestBase::SetProtocolVersionL( KPreminetReqVersion ); + iRequestElement = NcdProtocolUtils::NewElementL( + iDocument, KTagInstallationReport ); + + if ( iConfiguration ) + { + iConfiguration->SetNamespacePrefixL( KAttrCdpNamespacePrefix ); + } + + // Add installation/download details + for ( TInt i = 0; i < iInstallationDetails.Count(); ++i ) + { + // create remote entity elements + TNcdRequestInstallation& entity = iInstallationDetails[i]; + + // Installation-element + TXmlEngElement entityElement = + NcdProtocolUtils::NewElementL( + iDocument, iRequestElement, KTagInstallation ); + + + NcdProtocolUtils::NewAttributeL( + entityElement, KAttrStatusCode, entity.iStatusCode ); + + if ( entity.iElapsedTime.NotNull() && entity.iElapsedTime.Length() > 0 ) + { + NcdProtocolUtils::NewAttributeL( + entityElement, KAttrElapsedTime, entity.iElapsedTime ); + } + + // Entity-element + TXmlEngElement entityIdElement = + NcdProtocolUtils::NewElementL( + iDocument, entityElement, KTagEntity ); + + NcdProtocolUtils::NewAttributeL( entityIdElement, KAttrId, entity.iId ); + + +/* // Enable if adding installation report functionality + // NOTE: this code is not finished. + // These should be set when the report is created in install operation + if ( entity.iTimestamp.NotNull() ) + { + NcdProtocolUtils::NewAttributeL( + entityElement, KAttrTimestamp, entity.iTimestamp ); + } + + if ( entity.iPurchaseOptionId.NotNull() ) + { + NcdProtocolUtils::NewAttributeL( + entityElement, KAttrPurchaseOptionId, entity.iPurchaseOptionId); + } +*/ + + // Content URI element + if ( entity.iUri.NotNull() && entity.iElapsedTime.Length() > 0 ) + { + TXmlEngElement uriElement = + NcdProtocolUtils::NewElementL( + iDocument, entityElement, KTagContentUri ); + + #ifndef RD_XML_ENGINE_API_CHANGE + uriElement.SetTextL( entity.iUri ); + #else + uriElement.SetTextL( entity.iUri.PtrC8() ); + #endif + } + } + + DLTRACEOUT(("exit")); + // base class generates the complete request + return CNcdRequestBase::CreateRequestL(); + } + +