common/tools/ats/smoketest/IM/src/ParserUtils.cpp
author Maciej Seroka <maciejs@symbian.org>
Thu, 12 Nov 2009 14:45:32 +0000
changeset 756 736214c0060b
child 872 17498133d9ad
permissions -rw-r--r--
Added new smoketest
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
756
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     1
/*
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     2
* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). 
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     3
* All rights reserved.
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     5
* under the terms of the License "Symbian Foundation License v1.0"
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     7
* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     8
*
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
     9
* Initial Contributors:
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    11
*
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    12
* Contributors:
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    13
*
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    14
* Description: The class handles IMPS Setting file reading.
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    15
*
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    16
*
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    17
*/
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    18
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    19
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    20
// INCLUDE FILES
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    21
#include    <e32std.h>
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    22
#ifdef _DEBUG
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    23
#include    <flogger.h>
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    24
#endif
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    25
#include "ParserUtils.h"
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    26
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    27
// ================= MEMBER FUNCTIONS =======================
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    28
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    29
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    30
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    31
//**********************************
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    32
// CImpsSettingFile
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    33
//**********************************
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    34
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    35
CImpsSettingFile* CImpsSettingFile::NewL(
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    36
    RFs& aFs )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    37
    {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    38
    CImpsSettingFile* self = new ( ELeave ) CImpsSettingFile( aFs );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    39
    return self;
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    40
    }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    41
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    42
CImpsSettingFile::~CImpsSettingFile()
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    43
    {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    44
    if ( iOpen )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    45
        {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    46
        iReader.Close();
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    47
        }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    48
    iOpen = EFalse;
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    49
    }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    50
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    51
CImpsSettingFile::CImpsSettingFile( RFs& aFs )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    52
        : iFs( aFs ),
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    53
        iOpen( EFalse )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    54
    {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    55
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    56
    }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    57
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    58
void CImpsSettingFile::OpenL( TDesC& aResFile )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    59
    {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    60
    // open a file
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    61
    iFileName = aResFile;
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    62
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    63
    TInt myError = iReader.Open( iFs,
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    64
                                 iFileName,
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    65
                                 EFileShareReadersOnly );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    66
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    67
    User::LeaveIfError( myError );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    68
    iOpen = ETrue;
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    69
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    70
    }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    71
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    72
TPtrC8 CImpsSettingFile::KeyValueL( const TDesC8& aKey )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    73
    {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    74
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    75
    TPtrC8 myKey;
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    76
    TPtrC8 myValue;
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    77
    TBool getIt( EFalse );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    78
    TInt err = 0;
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    79
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    80
    // Reset the reader
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    81
    OpenL( iFileName );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    82
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    83
    // Start to search
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    84
    while ( !getIt )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    85
        {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    86
        TRAP ( err, ReadRowL( myKey, myValue ) );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    87
        if ( err != KErrNone )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    88
            {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    89
            User::Leave( KErrNotFound );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    90
            }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    91
        if ( !myKey.CompareF( aKey ) )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    92
            {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    93
            return myValue;
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    94
            }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    95
        }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    96
    return TPtrC8();
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    97
    }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    98
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
    99
void CImpsSettingFile::ReadRowL( TPtrC8& aKey, TPtrC8& aValue )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   100
    {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   101
    // READ ONE ROW
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   102
    TChar delim( 10 );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   103
    iReader.ReadL( iRowBuffer, delim );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   104
    TInt length = iRowBuffer.Length();
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   105
    if ( length > 2 )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   106
        {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   107
        // DROP CR+LF FROM THE END OF LINE
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   108
        iRowBuffer.Delete( length - 2, 2 );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   109
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   110
        TInt pos = 0;
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   111
        pos = iRowBuffer.Find( _L8( "=" ) );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   112
        if ( pos > 0 )
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   113
            {
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   114
            aKey.Set( iRowBuffer.Left( pos ) );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   115
            // Cut off separator
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   116
            aValue.Set( iRowBuffer.Mid( pos + 1 ) );
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   117
            }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   118
        }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   119
    }
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   120
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   121
//  End of File
736214c0060b Added new smoketest
Maciej Seroka <maciejs@symbian.org>
parents:
diff changeset
   122