dbcreator/commsdatcreator/Src/cdcdumptables.cpp
changeset 56 dd6aaa97e7b1
parent 52 bbe4544dfd31
child 59 2709c04a4af5
--- a/dbcreator/commsdatcreator/Src/cdcdumptables.cpp	Fri Aug 06 19:11:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,453 +0,0 @@
-/*
-* 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:   Implementation of the class CProcessorCSD
-*
-*/
-
-
-
-
-// INCLUDE FILES
-#include <wlancontainer.h>
-#include <cmmanagertablefields.h>
-#include <datamobilitycommsdattypes.h>
-#include <f32file.h>
-#include <featmgr.h>
-
-#include "cdcdumptables.h"
-#include "cdclogger.h"
-
-// DEFINES
-
-#define QUERY_HBUFC_FIELD( record, fieldId ) *STATIC_CAST(CommsDat::CMDBField<HBufC*>*, record->GetFieldByIdL( fieldId ))
-#define QUERY_HBUFC8_FIELD( record, fieldId ) *STATIC_CAST(CommsDat::CMDBField<HBufC8*>*, record->GetFieldByIdL( fieldId ))
-#define QUERY_UINT32_FIELD( record, fieldId ) *STATIC_CAST(CommsDat::CMDBField<TUint32>*, record->GetFieldByIdL( fieldId ))
-#define QUERY_INT_FIELD( record, fieldId ) *STATIC_CAST(CommsDat::CMDBField<TInt>*, record->GetFieldByIdL( fieldId ))
-
-
-// CONSTANTS
-
-// commons for CSV file creatin
-_LIT16( KComma, "," );
-_LIT16( KNewLine, "\n" );
-_LIT16( KCRT, "\r" );
-_LIT16( KDQuote, "\"" );
-
-// Table names for CSV file creation
-_LIT16( KCDWlanServiceRecord,        "CCDWlanService" );
-_LIT16( KCDWlanDeviceSettingsRecord, "CCDWlanDeviceSettings" );
-_LIT16( KCDWLANSecSSIDTable,         "CCDWLANSecSSIDTable" );
-_LIT16( KCDDestNWTable,              "CCDDestNWTable" );
-_LIT16( KCDVirtualIAPNextLayerRecord,"CCDVirtualIAPNextLayer" );
-_LIT16( KCDDataMobilitySelectionPolicyRecord, "CCDDataMobilitySelectionPolicy" );
-_LIT16( KCDSNAPMetadataRecord,       "CCDSNAPMetadata" );
-_LIT16( KCDGlobalBearerTypePriorizationRecord, "CCDGlobalBearerTypePriorization" );
-_LIT16( KCDMIPServiceExtRecord,      "CCDMIPServiceExt" );
-_LIT16( KCDIAPMetadataRecord,        "CCDIAPMetadata" );
-_LIT16( KCDMIP4Record,               "CCDMIP4" );
-_LIT16( KCDMIP6Record,               "CCDMIP6" );
-
-
-// Little-endian Unicode file header.
-const TUint16 KLittleEndianUnicodeHeader = 0xFEFF;
-// Buffer length for number conversion
-const TInt KFormatBufLen = 40;
-
-
-// ---------------------------------------------------------
-// CDumpTables::NewL
-// ---------------------------------------------------------
-//
-CDumpTables* CDumpTables::NewL()
-    {
-    CDumpTables* self = NewLC();
-    CleanupStack::Pop( self ); // self
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CDumpTables::NewLC
-// ---------------------------------------------------------
-//
-CDumpTables* CDumpTables::NewLC()
-    {
-    CDumpTables* self = new ( ELeave ) CDumpTables();
-    CleanupStack::PushL( self );
-
-    // From base class
-    self->ConstructL();
-    return self;
-    }
-     
-     
-// ---------------------------------------------------------
-// CDumpTables::~CDumpTables
-// ---------------------------------------------------------
-//
-CDumpTables::~CDumpTables()
-    {
-    iRfs.Close();
-    if (iSession)
-        {
-        iSession->Close();
-        delete iSession;        
-        }      
-    }    
-
-// ---------------------------------------------------------
-// CDumpTables::ConstructL
-// ---------------------------------------------------------
-//
-void CDumpTables::ConstructL()
-    {
-    iSession = CommsDat::CMDBSession::NewL( 
-               CommsDat::CMDBSession::LatestVersion() );
-    }
-    
-    
-// ---------------------------------------------------------
-// CDumpTables::CDumpTables
-// ---------------------------------------------------------
-//
-CDumpTables::CDumpTables()
-    {
-    
-    }
-    
-// ---------------------------------------------------------
-// CDumpTables::DoDumpTablesL
-// ---------------------------------------------------------
-//
-void CDumpTables::DoDumpTablesL( const TFileName& aOutFileName )
-    {
-
-    User::LeaveIfError( OpenFileL( aOutFileName ) );
-
-
-    //checks if Wlan feature is supported
-    FeatureManager::InitializeLibL();
-    TBool isWlanS( FeatureManager::FeatureSupported( KFeatureIdProtocolWlan ) );
-    FeatureManager::UnInitializeLib();
-    
-    if( isWlanS )
-        {
-        // Dumps CCDWlanService Table 
-        DumpTableL<CCDWlanServiceRecord>( &KCDWlanServiceRecord );
-
-        // Dumps CCDWlanDeviceSettings Table  
-        DumpTableL<CCDWlanDeviceSettingsRecord>( &KCDWlanDeviceSettingsRecord );
-
-        // Dumps CCDWLANSecSSID Table  
-        DumpTableL<CCDWLANSecSSIDTable>( &KCDWLANSecSSIDTable );
-    
-        // Dumps CCDDestNWTable Table  
-        DumpTableL<CCDDestNWTable>( &KCDDestNWTable );
-        }
-        
-    // Dumps CCDVirtualIAPNextLayerRecord Table  
-    DumpTableL<CCDVirtualIAPNextLayerRecord>( 
-              &KCDVirtualIAPNextLayerRecord );
-
-    // Dumps CCDDataMobilitySelectionPolicyRecord Table  
-    DumpTableL<CCDDataMobilitySelectionPolicyRecord>(
-              &KCDDataMobilitySelectionPolicyRecord );
-
-    // Dumps CCDSNAPMetadataRecord Table  
-    DumpTableL<CCDSNAPMetadataRecord>( &KCDSNAPMetadataRecord );
-
-    // Dumps CCDGlobalBearerTypePriorizationRecord Table  
-    DumpTableL<CCDGlobalBearerTypePriorizationRecord>( 
-              &KCDGlobalBearerTypePriorizationRecord );
-
-    // Dumps CCDMIPServiceExtRecord Table  
-    DumpTableL<CCDMIPServiceExtRecord>( &KCDMIPServiceExtRecord );
-
-    // Dumps CCDIAPMetadataRecord Table  
-    DumpTableL<CCDIAPMetadataRecord>( &KCDIAPMetadataRecord );
-    
-    // Dumps CCDMIP4Record Table  
-    DumpTableL<CCDMIP4Record>( &KCDMIP4Record );
-    
-    // Dumps CCDMIP6Record Table  
-    DumpTableL<CCDMIP6Record>( &KCDMIP6Record );
-    
-    iFile.Close();   
-    }
-
-  
-// ---------------------------------------------------------
-// CDumpTables::DumpTableL
-// ---------------------------------------------------------
-//
-template<class T> void CDumpTables::DumpTableL( const TDesC* aTableName )
-    {
-    
-    CLOG_WRITE_FORMAT( "Dump table: %S \n", aTableName );
-
-    iFile.WriteL( *aTableName );    
-    iFile.WriteL( KNewLine );    
-
-    // Retreives the table the recordset and the recordinfo
-    TMDBElementId tableId = T::TableIdL( *iSession );
-   
-    T* table = new (ELeave) T( tableId );
-
-    const SRecordTypeInfo* aRecordInfo = table->GetRecordInfo();              
-
-    CommsDat::CMDBRecordSet<T>* aRecordSet = 
-              new (ELeave) CommsDat::CMDBRecordSet<T>( tableId );
-    
-    // Loads the table          
-    TRAP_IGNORE( aRecordSet->LoadL( *iSession ) );
-
-    //The table has been loaded
-    TInt count = aRecordSet->iRecords.Count();
-    CLOG_WRITE_FORMAT("Record count: %d", count );
-        
-      
-    TBuf16<KFormatBufLen> buf;
-    
-    // Goes throught the records        
-    for ( TInt i = 0; i < count; i++ )
-        {
-        // The closing (after last) field in the record has 0 iTypeId 
-        // to indicate the end of the record. 
-        for ( TInt j = 0; 0 < aRecordInfo[j].iTypeId; j++ )
-            {
-            // Switch for different data types
-            switch( aRecordInfo[j].iValType )
-                {
-                case EInt:
-                case EBool:
-                    {
-                    // Dumping TInt
-                    TInt res( QUERY_INT_FIELD( 
-                          (*aRecordSet)[i], aRecordInfo[j].iTypeId ) );
-                    buf.Format( _L( "%d" ), res );
-                    iFile.WriteL ( buf );
-                    }
-                break;
-                
-                case EUint32:
-                case ELink:
-                    {
-                    // Dumping TUint32
-                    TUint32 res32( QUERY_UINT32_FIELD( 
-                            (*aRecordSet)[i], aRecordInfo[j].iTypeId ) );
-                    buf.Format( _L( "%d" ), res32 );
-                    iFile.WriteL ( buf );
-                    }
-                break;
-
-                case EText:
-                case EMedText:
-                case ELongText:
-                    {
-                    // Dumping text16
-                    HBufC16* text16 = QUERY_HBUFC_FIELD( 
-                            (*aRecordSet)[i], aRecordInfo[j].iTypeId );
-                    WriteL ( text16 );
-                    }
-                break;
-                
-                case EDesC8:
-                    {
-                    // Dumping text8
-                    HBufC8* text8 = QUERY_HBUFC8_FIELD( 
-                            (*aRecordSet)[i], aRecordInfo[j].iTypeId );
-            
-                    WriteL ( text8 );
-                    }
-                break;
-
-                default:
-                    CLOG_WRITE_FORMAT("! warning: type not supported: %d", 
-                                                aRecordInfo[j].iValType );
-                break;                                                
-                }
-                iFile.WriteL( KComma );
-            
-            }
-            iFile.WriteL( KNewLine );
-        }
-    }
-    
-// ---------------------------------------------------------
-// CDumpTables::OpenFileL
-// ---------------------------------------------------------
-//
-TInt CDumpTables::OpenFileL( const TFileName& aFileName )
-    {
-    ////CLOG_WRITE_FORMAT( "Output file name %S", aFileName ); 
-    
-    TInt err = iRfs.Connect();
-
-    if( err == KErrNone )
-        {
-        err = iFile.Replace( iRfs, aFileName, EFileStreamText | EFileWrite );
-        }
-    
-    if( err == KErrNotFound ) 
-        // file does not exist - create it
-        {
-        err=iFile.Create( iRfs, aFileName, EFileStreamText | EFileWrite );
-        }
-    
-    if( err == KErrNone )
-        {
-        // Write little-endian Unicode file header.
-        iFile.WriteUint16L( KLittleEndianUnicodeHeader );
-        }
-        
-    if( err != KErrNone )
-        {
-        iFile.Close();
-        ////CLOG_WRITE_FORMAT( "!Error Output file cannot be opened: %S", aFileName );
-        }
-        
-    return err;
-    }
-
-
-// ---------------------------------------------------------
-// CDumpTables::WriteL
-// ---------------------------------------------------------
-//
-void CDumpTables::WriteL( HBufC8* aDes )
-    {
-
-    if( aDes )
-        {
-    
-        CleanupStack::PushL( aDes );
-
-        HBufC16* text16 = HBufC16::NewL( aDes->Length() );
-        text16->Des().Copy( aDes->Des() );
-    
-        WriteL ( text16 );
-
-        CleanupStack::PopAndDestroy( aDes );
-        }
-
-    }    
-
-    
-// ---------------------------------------------------------
-// CDumpTables::WriteL
-// ---------------------------------------------------------
-//
-void CDumpTables::WriteL( HBufC16* aDes )
-    {
-    
-    if( aDes )
-        {
-        CleanupStack::PushL( aDes );
-        
-        TBool res = CheckCSVTransformNeedL( aDes );
-
-        // Need conversion
-        if( res )
-            {
-            HBufC16* cvsFormat = TransformToCSVFormatLC( aDes );
-            iFile.WriteL ( *cvsFormat );
-            CleanupStack::PopAndDestroy( cvsFormat );
-            }
-        else
-            {
-            iFile.WriteL ( *aDes );
-            }
-        CleanupStack::PopAndDestroy( aDes );
-        }
-    }    
-
-
-// ---------------------------------------------------------
-// CDumpTables::TransformToCSVFormatLC
-// ---------------------------------------------------------
-//
-HBufC16* CDumpTables::TransformToCSVFormatLC( const HBufC16* aField )
-    {
-    CLOG_WRITE_FORMAT( "Transform needed:  %S", aField );
-
-    // Length of the csv format string is calculated.
-    // "2" are the leading and trailing d.qquotes
-    TInt csvLen = aField->Length() + iNumOfDQuotes + 2; 
-    HBufC16* csv = HBufC16::NewLC( csvLen );
-    
-    TPtr16 ptr = csv->Des();
-
-    // Heading quote    
-    ptr.Append( KDQuote );
-    ptr.Append( *aField );
-    
-    // Quotes might be duplicated
-    if( 0 < iNumOfDQuotes )
-        {
-        // Heading quote step over
-        TInt pos = 1;
-        while( pos < ptr.Length() && pos != KErrNotFound )
-            {
-            ptr = ptr.Mid( pos );
-            pos = ptr.Find( KDQuote );
-            if( pos != KErrNotFound )
-                {
-                ptr.Insert( pos, KDQuote );
-                pos+=2;                
-                }
-            }
-        }
-
-    // Tailing quote
-    ptr.Append( KDQuote );
-
-    CLOG_WRITE_FORMAT( "Transformed:      %S", csv );
- 
-    return csv;
-    }
-
-
-// ---------------------------------------------------------
-// CDumpTables::CheckCSVTransformNeedL
-// ---------------------------------------------------------
-//
-TBool CDumpTables::CheckCSVTransformNeedL( HBufC16* aField )
-    {
-    // Looks for comma, new line or carrige return characters.
-    // Only existance is necessary. If any of them exist the
-    // quoting is necessary  
-    TInt cnrPos = aField->Find( KComma );
-    if( cnrPos == KErrNotFound )
-        {
-        cnrPos = aField->Find( KNewLine );
-        if( cnrPos == KErrNotFound )
-            {
-            cnrPos = aField->Find( KCRT );
-            }
-        }
-    
-    // Serches for all dquote. Number is usefull for csv text creation
-    iNumOfDQuotes = 0;        
-    TPtr16 ptr = aField->Des();
-    
-    TInt quotePos = ptr.Find( KDQuote );
-    while( quotePos != KErrNotFound )
-        {
-        iNumOfDQuotes++;
-        ptr = ptr.Mid( quotePos+1 );
-        quotePos = ptr.Find( KDQuote );
-        }
-      
-    // csv file conversion necessary if comma... or quote is in the text.        
-    return ( 0 < iNumOfDQuotes || cnrPos != KErrNotFound );
-    }