devicediagnosticsfw/diagframework/src/diagresultsdbitembuilder.cpp
branchRCL_3
changeset 61 b183ec05bd8c
parent 59 13d7c31c74e0
child 62 19bba8228ff0
equal deleted inserted replaced
59:13d7c31c74e0 61:b183ec05bd8c
     1 /*
       
     2 * Copyright (c) 2007 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:  Class definition of CDiagResultsDbItemBuilder
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // CLASS DECLARATION
       
    20 #include <DiagResultsDbItemBuilder.h>
       
    21 
       
    22 // SYSTEM INCLUDE FILES
       
    23 #include <DiagResultDetail.h>               // MDiagResultDetail
       
    24 
       
    25 #ifndef __DIAGFW_DISABLE_DRM_API
       
    26 #include <drmserviceapi.h>                  // DRM::CDrmServiceApi
       
    27 #endif // __DIAGFW_DISABLE_DRM_API
       
    28 
       
    29 // USER INCLUDE FILES
       
    30 #include "diagframework.pan"                // Panic Codes
       
    31 
       
    32 
       
    33 // CONSTANTS
       
    34 
       
    35 // ======== MEMBER FUNCTIONS ========
       
    36 // ---------------------------------------------------------------------------
       
    37 // CDiagResultsDbItemBuilder::NewL
       
    38 // ---------------------------------------------------------------------------
       
    39 //
       
    40 EXPORT_C CDiagResultsDbItemBuilder* CDiagResultsDbItemBuilder::NewL(
       
    41         TUid aTestUid,
       
    42         TBool aDependencyExecution )
       
    43     {
       
    44     CDiagResultsDbItemBuilder* self = CDiagResultsDbItemBuilder::NewLC(
       
    45         aTestUid,
       
    46         aDependencyExecution );
       
    47     CleanupStack::Pop( self );
       
    48     return self;
       
    49     }
       
    50 
       
    51 // ---------------------------------------------------------------------------
       
    52 // CDiagResultsDbItemBuilder::NewLC
       
    53 // ---------------------------------------------------------------------------
       
    54 //
       
    55 EXPORT_C CDiagResultsDbItemBuilder* CDiagResultsDbItemBuilder::NewLC(
       
    56         TUid aTestUid,
       
    57         TBool aDependencyExecution )
       
    58     {
       
    59     CDiagResultsDbItemBuilder* self = new( ELeave )CDiagResultsDbItemBuilder(
       
    60         aTestUid,
       
    61         aDependencyExecution );
       
    62     CleanupStack::PushL( self );
       
    63     self->ConstructL();
       
    64     return self;
       
    65     }
       
    66 
       
    67 // ---------------------------------------------------------------------------
       
    68 // CDiagResultsDbItemBuilder::CDiagResultsDbItemBuilder
       
    69 // ---------------------------------------------------------------------------
       
    70 //
       
    71 CDiagResultsDbItemBuilder::CDiagResultsDbItemBuilder(
       
    72         TUid aTestUid,
       
    73         TBool aDependencyExecution )
       
    74     :   iTestUid( aTestUid ),
       
    75         iDependencyExecution( aDependencyExecution ),
       
    76         iResult( CDiagResultsDatabaseItem::ENotPerformed )
       
    77     {
       
    78     }
       
    79 
       
    80 // ---------------------------------------------------------------------------
       
    81 // CDiagResultsDbItemBuilder::ConstructL
       
    82 // ---------------------------------------------------------------------------
       
    83 //
       
    84 void CDiagResultsDbItemBuilder::ConstructL()
       
    85     {
       
    86 #ifndef __DIAGFW_DISABLE_DRM_API
       
    87     iDrmApi = DRM::CDrmServiceApi::NewL();
       
    88 #endif // __DIAGFW_DISABLE_DRM_API
       
    89 
       
    90     SetTimeStarted( GetCurrentTime() );
       
    91     }
       
    92 
       
    93 // ---------------------------------------------------------------------------
       
    94 // CDiagResultsDbItemBuilder::~CDiagResultsDbItemBuilder
       
    95 // ---------------------------------------------------------------------------
       
    96 //
       
    97 CDiagResultsDbItemBuilder::~CDiagResultsDbItemBuilder()
       
    98     {
       
    99 #ifndef __DIAGFW_DISABLE_DRM_API
       
   100     delete iDrmApi;
       
   101     iDrmApi = NULL;
       
   102 #endif // __DIAGFW_DISABLE_DRM_API
       
   103     delete iResultDetail;
       
   104     iResultDetail = NULL;
       
   105     }
       
   106 
       
   107 // ---------------------------------------------------------------------------
       
   108 // CDiagResultsDbItemBuilder::SetTestUid
       
   109 // ---------------------------------------------------------------------------
       
   110 //
       
   111 EXPORT_C void CDiagResultsDbItemBuilder::SetTestUid( TUid aUid )
       
   112     {
       
   113     iTestUid = aUid;
       
   114     }
       
   115 
       
   116 // ---------------------------------------------------------------------------
       
   117 // CDiagResultsDbItemBuilder::TestUid
       
   118 // ---------------------------------------------------------------------------
       
   119 //
       
   120 EXPORT_C TUid CDiagResultsDbItemBuilder::TestUid() const
       
   121     {
       
   122     return iTestUid;
       
   123     }
       
   124 
       
   125 // ---------------------------------------------------------------------------
       
   126 // CDiagResultsDbItemBuilder::GetCurrentTime
       
   127 // ---------------------------------------------------------------------------
       
   128 //
       
   129 EXPORT_C TTime CDiagResultsDbItemBuilder::GetCurrentTime() const
       
   130     {
       
   131     TTime currTime = ( TInt64 )0;
       
   132 #ifndef __DIAGFW_DISABLE_DRM_API
       
   133     TInt timeZone = 0;
       
   134     DRMClock::ESecurityLevel secLevel = DRMClock::KInsecure;
       
   135     if ( iDrmApi->GetSecureTime( currTime, timeZone, secLevel ) != KErrNone )
       
   136         {
       
   137         __ASSERT_DEBUG( 0, Panic( EDiagFrameworkInternal ) );
       
   138         // if we are unable to get DRM clock, use home clock.
       
   139         currTime.UniversalTime();
       
   140         }
       
   141 #endif // __DIAGFW_DISABLE_DRM_API
       
   142 		 currTime.UniversalTime(); // Added for Time Updation in HardwareSuiteView
       
   143     return currTime;
       
   144     }
       
   145 
       
   146 // ---------------------------------------------------------------------------
       
   147 // CDiagResultsDbItemBuilder::SetWasDependency
       
   148 // ---------------------------------------------------------------------------
       
   149 //
       
   150 EXPORT_C void CDiagResultsDbItemBuilder::SetWasDependency( TBool aWasDependency )
       
   151     {
       
   152     iDependencyExecution = aWasDependency;
       
   153     }
       
   154 
       
   155 // ---------------------------------------------------------------------------
       
   156 // CDiagResultsDbItemBuilder::WasDependency
       
   157 // ---------------------------------------------------------------------------
       
   158 //
       
   159 EXPORT_C TBool CDiagResultsDbItemBuilder::WasDependency() const
       
   160     {
       
   161     return iDependencyExecution;
       
   162     }
       
   163 
       
   164 // ---------------------------------------------------------------------------
       
   165 // CDiagResultsDbItemBuilder::SetTestCompleted
       
   166 // ---------------------------------------------------------------------------
       
   167 //
       
   168 EXPORT_C void CDiagResultsDbItemBuilder::SetTestCompleted( 
       
   169         CDiagResultsDatabaseItem::TResult aResult )
       
   170     {
       
   171     iResult = aResult;
       
   172     SetTimeCompleted( GetCurrentTime() );
       
   173     }
       
   174 
       
   175 
       
   176 // ---------------------------------------------------------------------------
       
   177 // CDiagResultsDbItemBuilder::TestResult
       
   178 // ---------------------------------------------------------------------------
       
   179 //
       
   180 EXPORT_C CDiagResultsDatabaseItem::TResult CDiagResultsDbItemBuilder::TestResult() const
       
   181     {
       
   182     return iResult;
       
   183     }
       
   184 
       
   185 // ---------------------------------------------------------------------------
       
   186 // CDiagResultsDbItemBuilder::SetTimeStarted
       
   187 // ---------------------------------------------------------------------------
       
   188 //
       
   189 EXPORT_C void CDiagResultsDbItemBuilder::SetTimeStarted( TTime aTime )
       
   190     {
       
   191     iStartTime = aTime;
       
   192     }
       
   193 
       
   194 // ---------------------------------------------------------------------------
       
   195 // CDiagResultsDbItemBuilder::TimeStarted
       
   196 // ---------------------------------------------------------------------------
       
   197 //
       
   198 EXPORT_C TTime CDiagResultsDbItemBuilder::TimeStarted() const
       
   199     {
       
   200     return iStartTime;
       
   201     }
       
   202 
       
   203 // ---------------------------------------------------------------------------
       
   204 // CDiagResultsDbItemBuilder::SetTimeCompleted
       
   205 // ---------------------------------------------------------------------------
       
   206 //
       
   207 EXPORT_C void CDiagResultsDbItemBuilder::SetTimeCompleted( TTime aTime )
       
   208     {
       
   209     iEndTime = aTime;
       
   210     }
       
   211 
       
   212 // ---------------------------------------------------------------------------
       
   213 // CDiagResultsDbItemBuilder::TimeCompleted
       
   214 // ---------------------------------------------------------------------------
       
   215 //
       
   216 EXPORT_C TTime CDiagResultsDbItemBuilder::TimeCompleted() const
       
   217     {
       
   218     return iStartTime;
       
   219     }
       
   220 
       
   221 // ---------------------------------------------------------------------------
       
   222 // CDiagResultsDbItemBuilder::SetResultDetail
       
   223 // ---------------------------------------------------------------------------
       
   224 //
       
   225 EXPORT_C void CDiagResultsDbItemBuilder::SetResultDetail( 
       
   226         MDiagResultDetail* aResultDetail )
       
   227     {
       
   228     delete iResultDetail;
       
   229     iResultDetail = aResultDetail;
       
   230     }
       
   231 
       
   232 // ---------------------------------------------------------------------------
       
   233 // CDiagResultsDbItemBuilder::ResultDetail
       
   234 // ---------------------------------------------------------------------------
       
   235 //
       
   236 EXPORT_C MDiagResultDetail& CDiagResultsDbItemBuilder::ResultDetail() const
       
   237     {
       
   238     __ASSERT_ALWAYS( iResultDetail, Panic( EDiagFrameworkInvalidState ) );
       
   239     return *iResultDetail;
       
   240     }
       
   241 
       
   242 // ---------------------------------------------------------------------------
       
   243 // CDiagResultsDbItemBuilder::ToResultsDatabaseItemL
       
   244 // ---------------------------------------------------------------------------
       
   245 //
       
   246 EXPORT_C CDiagResultsDatabaseItem* CDiagResultsDbItemBuilder::ToResultsDatabaseItemL() const
       
   247     {
       
   248     CBufFlat* detailsData = NULL;
       
   249 
       
   250     if ( iResultDetail )
       
   251         {
       
   252         detailsData = iResultDetail->ExternalizeToBufferL();
       
   253         }
       
   254 
       
   255     return CDiagResultsDatabaseItem::NewL( iTestUid,
       
   256                                            iDependencyExecution,
       
   257                                            iResult,
       
   258                                            iStartTime,
       
   259                                            iEndTime,
       
   260                                            detailsData ); // ownership tranferred.
       
   261     }
       
   262 
       
   263 // ---------------------------------------------------------------------------
       
   264 // CDiagResultsDbItemBuilder::CreateSimpleDbItemL
       
   265 // ---------------------------------------------------------------------------
       
   266 //
       
   267 EXPORT_C CDiagResultsDatabaseItem* CDiagResultsDbItemBuilder::CreateSimpleDbItemL(
       
   268         TUid aTestUid,
       
   269         TBool aAsDependency,
       
   270         CDiagResultsDatabaseItem::TResult aResultType )
       
   271     {
       
   272     CDiagResultsDbItemBuilder* resultBuilder = 
       
   273         CDiagResultsDbItemBuilder::NewL( aTestUid,
       
   274                                          aAsDependency );
       
   275     resultBuilder->SetTestCompleted( aResultType );
       
   276 
       
   277     CleanupStack::PushL( resultBuilder );
       
   278     CDiagResultsDatabaseItem* dbItem = resultBuilder->ToResultsDatabaseItemL();
       
   279     CleanupStack::PopAndDestroy( resultBuilder );
       
   280 
       
   281     return dbItem;
       
   282     }
       
   283 
       
   284 // End of File
       
   285