dbcreator/commsdatcreator/Inc/cdcdumptables.h
author Simon Howkins <simonh@symbian.org>
Thu, 18 Nov 2010 15:05:52 +0000
branchRCL_3
changeset 76 40780c2f3a6b
parent 0 5a93021fdf25
permissions -rw-r--r--
Adjusted to avoid exports, etc, from a top-level bld.inf

/*
* Copyright (c) 2002 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:   Declaration of the class CDbCreator
*
*/




#ifndef DUMP_TABLES_H
#define DUMP_TABLES_H

// INCLUDE FILES

#include <e32base.h>
#include <s32file.h>

// CLASS DECLARATION

class CMDBSession;

/**
* CDumpTables writes data from CommsDat to CSV format file.
* CDumpTables dumps the CommsDat tables which are not dumped 
* by any other application.
*/
class CDumpTables : public CBase
    {

    public:
    
        /**
         * Two-phase constructor.
         * @return CDumpTables instance.
         */
        static CDumpTables* NewL();

        /**
         * Two-phase constructor.
         * @return CDumpTables instance. Let the instance on the CleanupStack. 
         */
        static CDumpTables* NewLC();
     
        /**
         * Destructor.
         */
        virtual ~CDumpTables();
        
        /**
         * Dumps the unsupported tables to CSV format file.
         * @param outFileName name of the output file with full path. 
         */
        void DoDumpTablesL( const TFileName& aOutFileName );
        
    protected:

        /**
         * Second phase constructor. Leaves on failure.
         */
        void ConstructL();
        
     private:
    
        /**
         * Constructor
         */
        CDumpTables();
        
        /**
         * Template method for dumping one CommsDat table
         * @param class T representing the table which is dumped. 
         */
        template<class T> void DumpTableL( const TDesC* aTableName );

        /**
         * Opens a output file for dumping. It tries to open the file
         * and if it does not exist then a new one created.
         * @param aFileName name of the file. It cannot be NULL.  
         */
        TInt OpenFileL( const TFileName& aFileName );
        
        /**
         * Writes 8 bit descriptor to 16 bit unicode file in CSV format.
         * @param aDes the written text. It gets the ownership.  
         */
        void WriteL( HBufC8* aDes );

        /**
         * Writes 16 bit descriptor to 16 bit unicode file in CSV format.
         * @param aDes the written text. It gets the ownership.  
         */
        void WriteL( HBufC16* aDes );

        /**
         * Transform the parameter field to CSV accepted format.
         * @param aField the field that should be checked and transform
         * to CSV format if it is necessary
         * @return the CSV acceptable format.
         */
        HBufC16* TransformToCSVFormatLC( const HBufC16* aField );
        
        /**
         * Checks the parameter field if transformation to CSV format is
         * necessary.
         * @param aField the field which should be checked.
         * @return ETrue if transformation is necessary else EFalse.
         */
        TBool CheckCSVTransformNeedL( HBufC16* aFiled );


    private:
    
        // Session for CommsDat
        CommsDat::CMDBSession* iSession;
        
        // Fs for file handling
        RFs   iRfs;

        // Output file
        RFileWriteStream iFile;
        
        // Counter for how many double qoutes are in the given text. 
        TInt iNumOfDQuotes;        

    };

#endif DUMP_TABLES_H