ncdengine/provider/protocol/src/ncdrequestinstallation.cpp
changeset 0 ba25891c3a9e
equal deleted inserted replaced
-1:000000000000 0:ba25891c3a9e
       
     1 /*
       
     2 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   CNcdRequestInstallation implementation
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <e32base.h>
       
    20 
       
    21 #include "ncdrequestinstallation.h"
       
    22 #include "ncdrequestbase.h"
       
    23 #include "ncdrequestconfigurationdata.h"
       
    24 #include "catalogsdebug.h"
       
    25 #include "ncdprotocolutils.h"
       
    26 #include "ncdprotocolwords.h"
       
    27 
       
    28 
       
    29 CNcdRequestInstallation* CNcdRequestInstallation::NewL()
       
    30     {
       
    31     CNcdRequestInstallation* self = CNcdRequestInstallation::NewLC();
       
    32     CleanupStack::Pop();
       
    33     return self;
       
    34     }
       
    35 
       
    36 CNcdRequestInstallation* CNcdRequestInstallation::NewLC()
       
    37     {
       
    38     CNcdRequestInstallation* self = new (ELeave) CNcdRequestInstallation();
       
    39     CleanupStack::PushL(self);
       
    40     self->ConstructL();
       
    41     return self;
       
    42     }
       
    43 
       
    44 void CNcdRequestInstallation::ConstructL()
       
    45     {
       
    46     DLTRACEIN((""));
       
    47     CNcdRequestBase::ConstructL( KTagPreminetRequest );
       
    48     iName.SetL( KTagInstallationReport );
       
    49     iNamespaceUri.SetL( KDefaultNamespaceUri );
       
    50     iPrefix = TXmlEngString();
       
    51     iVersion.SetL( KAttrPreminetVersion );
       
    52     
       
    53     }
       
    54     
       
    55 CNcdRequestInstallation::CNcdRequestInstallation()
       
    56     : CNcdRequestBase()
       
    57     {
       
    58     }
       
    59 
       
    60 CNcdRequestInstallation::~CNcdRequestInstallation()
       
    61     {
       
    62     DLTRACEIN((""));
       
    63     iName.Free();
       
    64     iNamespaceUri.Free();
       
    65     iPrefix.Free();
       
    66     
       
    67     
       
    68     DLTRACE(("Free installation details"));
       
    69     for (TInt i = 0; i < iInstallationDetails.Count(); ++i)
       
    70         {
       
    71         TNcdRequestInstallation& e = iInstallationDetails[i];
       
    72         e.iId.Free();
       
    73         //e.iTimeStamp.Free();
       
    74         //e.iPurchaseOptionId.Free();
       
    75         e.iUri.Free();
       
    76         e.iElapsedTime.Free();
       
    77         
       
    78         }
       
    79     iInstallationDetails.Close();
       
    80     DLTRACEOUT((""));
       
    81     }
       
    82 
       
    83 
       
    84 void CNcdRequestInstallation::AddDownloadDetailsL( 
       
    85     const TDesC& aId, 
       
    86     const TDesC& aUri,
       
    87     TInt aStatusCode,
       
    88     const TInt64& aElapsedTime )
       
    89     {
       
    90     DLTRACEIN(( _L("Id: %S, URI: %S, Status: %d, elapsed time: %Ld"),
       
    91         &aId, &aUri, aStatusCode, aElapsedTime ));
       
    92         
       
    93     TNcdRequestInstallation install;
       
    94     
       
    95     install.iId.SetL( aId );
       
    96     install.iUri.SetL( aUri );
       
    97     install.iStatusCode = aStatusCode;
       
    98     
       
    99     // Convert TInt64 to a string
       
   100     const TInt K64BitIntAsStringLength = 21;
       
   101     
       
   102     HBufC* conversionBuffer = HBufC::NewLC( K64BitIntAsStringLength );
       
   103     conversionBuffer->Des().Num( aElapsedTime );
       
   104     
       
   105     install.iElapsedTime.SetL( *conversionBuffer );
       
   106     DLTRACE(( _L("Converted time: %S"), conversionBuffer ));
       
   107     
       
   108     CleanupStack::PopAndDestroy( conversionBuffer );
       
   109    
       
   110     iInstallationDetails.AppendL( install );
       
   111     DLTRACEOUT(("Details added successfully"));
       
   112     }
       
   113 
       
   114 
       
   115 void CNcdRequestInstallation::AddInstallDetailsL( 
       
   116     const TDesC& aId, 
       
   117     TInt aStatusCode )
       
   118     {
       
   119     DLTRACEIN(( _L("Id: %S, Status: %d"), &aId, aStatusCode ));
       
   120         
       
   121     TNcdRequestInstallation install;
       
   122     
       
   123     install.iId.SetL( aId );
       
   124     install.iStatusCode = aStatusCode;
       
   125 
       
   126     // These are not set in install report.
       
   127     // So, set them to Null value which will be left out when
       
   128     // xml element is created.
       
   129     install.iUri.SetL( KNullDesC );
       
   130     install.iElapsedTime.SetL( KNullDesC );
       
   131     
       
   132     iInstallationDetails.AppendL( install );
       
   133     DLTRACEOUT(("Details added successfully"));
       
   134     }
       
   135     
       
   136 
       
   137 // generates the dom nodes
       
   138 HBufC8* CNcdRequestInstallation::CreateRequestL()
       
   139     {
       
   140     DLTRACEIN((""));
       
   141     // generate installation part of the request
       
   142     CNcdRequestBase::SetProtocolVersionL( KPreminetReqVersion );
       
   143     iRequestElement = NcdProtocolUtils::NewElementL( 
       
   144         iDocument, KTagInstallationReport );
       
   145         
       
   146     if ( iConfiguration ) 
       
   147         {        
       
   148         iConfiguration->SetNamespacePrefixL( KAttrCdpNamespacePrefix );
       
   149         }
       
   150         
       
   151     // Add installation/download details    
       
   152     for ( TInt i = 0; i < iInstallationDetails.Count(); ++i )
       
   153         {
       
   154         // create remote entity elements
       
   155         TNcdRequestInstallation& entity = iInstallationDetails[i];
       
   156         
       
   157         // Installation-element
       
   158         TXmlEngElement entityElement = 
       
   159             NcdProtocolUtils::NewElementL( 
       
   160                 iDocument, iRequestElement, KTagInstallation );
       
   161 
       
   162 
       
   163         NcdProtocolUtils::NewAttributeL( 
       
   164             entityElement, KAttrStatusCode, entity.iStatusCode );
       
   165 
       
   166         if ( entity.iElapsedTime.NotNull() && entity.iElapsedTime.Length() > 0 ) 
       
   167             {            
       
   168             NcdProtocolUtils::NewAttributeL( 
       
   169                 entityElement, KAttrElapsedTime, entity.iElapsedTime );
       
   170             }
       
   171 
       
   172         // Entity-element
       
   173         TXmlEngElement entityIdElement = 
       
   174             NcdProtocolUtils::NewElementL( 
       
   175                 iDocument, entityElement, KTagEntity );
       
   176                 
       
   177         NcdProtocolUtils::NewAttributeL( entityIdElement, KAttrId, entity.iId );
       
   178 
       
   179 
       
   180 /* // Enable if adding installation report functionality
       
   181    // NOTE: this code is not finished.
       
   182    // These should be set when the report is created in install operation
       
   183         if ( entity.iTimestamp.NotNull() ) 
       
   184             {            
       
   185             NcdProtocolUtils::NewAttributeL( 
       
   186                 entityElement, KAttrTimestamp, entity.iTimestamp );
       
   187             }
       
   188 
       
   189         if ( entity.iPurchaseOptionId.NotNull() )
       
   190             {
       
   191             NcdProtocolUtils::NewAttributeL( 
       
   192                 entityElement, KAttrPurchaseOptionId, entity.iPurchaseOptionId);
       
   193             }
       
   194 */
       
   195 
       
   196         // Content URI element
       
   197         if ( entity.iUri.NotNull() && entity.iElapsedTime.Length() > 0 ) 
       
   198             {        
       
   199             TXmlEngElement uriElement = 
       
   200                 NcdProtocolUtils::NewElementL( 
       
   201                     iDocument, entityElement, KTagContentUri );
       
   202                 
       
   203     #ifndef RD_XML_ENGINE_API_CHANGE
       
   204             uriElement.SetTextL( entity.iUri );
       
   205     #else
       
   206             uriElement.SetTextL( entity.iUri.PtrC8() );
       
   207     #endif
       
   208             }           
       
   209         }
       
   210         
       
   211     DLTRACEOUT(("exit"));    
       
   212     // base class generates the complete request
       
   213     return CNcdRequestBase::CreateRequestL();
       
   214     }
       
   215     
       
   216