contentstorage/castorage/src/casqlitestorage.cpp
author hgs
Fri, 06 Aug 2010 13:40:46 +0300
changeset 107 b34d53f6acdf
parent 98 d2f833ab7940
child 127 7b66bc3c6dc9
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
85
7feec50967db 201003_02
hgs
parents:
diff changeset
     1
/*
7feec50967db 201003_02
hgs
parents:
diff changeset
     2
 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
7feec50967db 201003_02
hgs
parents:
diff changeset
     3
 * All rights reserved.
7feec50967db 201003_02
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
7feec50967db 201003_02
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
7feec50967db 201003_02
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
7feec50967db 201003_02
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
7feec50967db 201003_02
hgs
parents:
diff changeset
     8
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
     9
 * Initial Contributors:
7feec50967db 201003_02
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
7feec50967db 201003_02
hgs
parents:
diff changeset
    11
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
    12
 * Contributors:
7feec50967db 201003_02
hgs
parents:
diff changeset
    13
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
    14
 * Description:
7feec50967db 201003_02
hgs
parents:
diff changeset
    15
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
    16
 */
86
hgs
parents: 85
diff changeset
    17
#include "casqlitestorage.h"
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    18
#include "caconsts.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    19
#include "casqlcommands.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    20
#include "casqlquery.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    21
#include "casqlquerycreator.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    22
#include "cainnerentry.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    23
#include "cainnerquery.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    24
#include "caarraycleanup.inl"
7feec50967db 201003_02
hgs
parents:
diff changeset
    25
#include "calocalizationentry.h"
88
hgs
parents: 86
diff changeset
    26
#include "cainternaltypes.h"
89
hgs
parents: 88
diff changeset
    27
#include "cadef.h"
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    28
7feec50967db 201003_02
hgs
parents:
diff changeset
    29
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    30
// CCASqLiteStorage::CCpStorageEngine()
7feec50967db 201003_02
hgs
parents:
diff changeset
    31
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    32
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    33
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    34
CCaSqLiteStorage::CCaSqLiteStorage()
7feec50967db 201003_02
hgs
parents:
diff changeset
    35
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    36
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    37
7feec50967db 201003_02
hgs
parents:
diff changeset
    38
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    39
// CCASqLiteStorage::ConstructL()
7feec50967db 201003_02
hgs
parents:
diff changeset
    40
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    41
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    42
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    43
void CCaSqLiteStorage::ConstructL()
7feec50967db 201003_02
hgs
parents:
diff changeset
    44
    {
86
hgs
parents: 85
diff changeset
    45
    User::LeaveIfError( iRfs.Connect() );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    46
86
hgs
parents: 85
diff changeset
    47
    User::LeaveIfError( CreatePrivateDirPath( iPrivatePathCDriveDb, KCDrive,
hgs
parents: 85
diff changeset
    48
            KDbName ) );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    49
86
hgs
parents: 85
diff changeset
    50
    User::LeaveIfError( CreatePrivateDirPath( iPrivatePathZDriveDb, KZDrive,
hgs
parents: 85
diff changeset
    51
            KDbName ) );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    52
86
hgs
parents: 85
diff changeset
    53
    User::LeaveIfError( CreatePrivateDirPath( iPrivatePathCDrive, KCDrive,
hgs
parents: 85
diff changeset
    54
            KNullDesC ) );
89
hgs
parents: 88
diff changeset
    55
    
107
hgs
parents: 98
diff changeset
    56
    User::LeaveIfError( CreatePrivateDirPath( iPrivatePathCDriveDbBackup, KCDrive,
hgs
parents: 98
diff changeset
    57
    		KDbNameBackup ) );
hgs
parents: 98
diff changeset
    58
    
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    59
86
hgs
parents: 85
diff changeset
    60
    if( iSqlDb.Open( iPrivatePathCDriveDb, &KSqlDbConfig ) )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    61
        {
86
hgs
parents: 85
diff changeset
    62
        //we could not load data base from C-drive lets try Rom
hgs
parents: 85
diff changeset
    63
        LoadDataBaseFromRomL();
hgs
parents: 85
diff changeset
    64
        }
89
hgs
parents: 88
diff changeset
    65
    else
hgs
parents: 88
diff changeset
    66
        {
hgs
parents: 88
diff changeset
    67
        TBuf<KCaMaxAttrNameLen> versionValue;
hgs
parents: 88
diff changeset
    68
        DbPropertyL(KCaDbPropVersion, versionValue);
hgs
parents: 88
diff changeset
    69
        ASSERT(versionValue.Length()>0);
hgs
parents: 88
diff changeset
    70
        if( versionValue.CompareC( KCaDbVersion ) )
hgs
parents: 88
diff changeset
    71
            {
hgs
parents: 88
diff changeset
    72
            // database loaded from C: is obsolete, load from Z:
hgs
parents: 88
diff changeset
    73
            iSqlDb.Close();
hgs
parents: 88
diff changeset
    74
            LoadDataBaseFromRomL();
hgs
parents: 88
diff changeset
    75
            }
hgs
parents: 88
diff changeset
    76
        }
86
hgs
parents: 85
diff changeset
    77
    }
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    78
86
hgs
parents: 85
diff changeset
    79
// ---------------------------------------------------------------------------
hgs
parents: 85
diff changeset
    80
// CCASqLiteStorage::NewL()
hgs
parents: 85
diff changeset
    81
//
hgs
parents: 85
diff changeset
    82
// ---------------------------------------------------------------------------
hgs
parents: 85
diff changeset
    83
//
hgs
parents: 85
diff changeset
    84
void CCaSqLiteStorage::LoadDataBaseFromRomL()
hgs
parents: 85
diff changeset
    85
    {
hgs
parents: 85
diff changeset
    86
    if( ( BaflUtils::FileExists( iRfs, iPrivatePathCDriveDb ) ) )
hgs
parents: 85
diff changeset
    87
        {
hgs
parents: 85
diff changeset
    88
        iSqlDb.Close();
hgs
parents: 85
diff changeset
    89
        User::LeaveIfError( BaflUtils::DeleteFile( iRfs,
hgs
parents: 85
diff changeset
    90
                iPrivatePathCDriveDb ) );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    91
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
    92
86
hgs
parents: 85
diff changeset
    93
    if( !( BaflUtils::FileExists( iRfs, iPrivatePathZDriveDb ) ) )
hgs
parents: 85
diff changeset
    94
        {
89
hgs
parents: 88
diff changeset
    95
        User::Panic( _L("fatal error - castorage.db not exists in ROM"),
86
hgs
parents: 85
diff changeset
    96
                KErrNotFound );
hgs
parents: 85
diff changeset
    97
        }
hgs
parents: 85
diff changeset
    98
    else
hgs
parents: 85
diff changeset
    99
        {
hgs
parents: 85
diff changeset
   100
        if( !( BaflUtils::FolderExists( iRfs, iPrivatePathCDrive ) ) )
hgs
parents: 85
diff changeset
   101
            {
hgs
parents: 85
diff changeset
   102
            User::LeaveIfError( iRfs.CreatePrivatePath( EDriveC ) );
hgs
parents: 85
diff changeset
   103
            }
hgs
parents: 85
diff changeset
   104
        User::LeaveIfError( BaflUtils::CopyFile( iRfs,
hgs
parents: 85
diff changeset
   105
                iPrivatePathZDriveDb, iPrivatePathCDrive ) );
hgs
parents: 85
diff changeset
   106
        User::LeaveIfError( iRfs.SetAtt( iPrivatePathCDriveDb,
hgs
parents: 85
diff changeset
   107
                KEntryAttNormal, KEntryAttReadOnly ) );
hgs
parents: 85
diff changeset
   108
        User::LeaveIfError( iSqlDb.Open( iPrivatePathCDriveDb,
hgs
parents: 85
diff changeset
   109
                &KSqlDbConfig ) );
hgs
parents: 85
diff changeset
   110
        }
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   111
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   112
7feec50967db 201003_02
hgs
parents:
diff changeset
   113
// ---------------------------------------------------------------------------
107
hgs
parents: 98
diff changeset
   114
// 
hgs
parents: 98
diff changeset
   115
//
hgs
parents: 98
diff changeset
   116
// ---------------------------------------------------------------------------
hgs
parents: 98
diff changeset
   117
//
hgs
parents: 98
diff changeset
   118
void CCaSqLiteStorage::SaveDatabaseL()
hgs
parents: 98
diff changeset
   119
    {
hgs
parents: 98
diff changeset
   120
    if( ( BaflUtils::FileExists( iRfs, iPrivatePathCDriveDb ) ) )
hgs
parents: 98
diff changeset
   121
        {
hgs
parents: 98
diff changeset
   122
        iSqlDb.Close();
hgs
parents: 98
diff changeset
   123
        User::LeaveIfError( BaflUtils::CopyFile( iRfs,
hgs
parents: 98
diff changeset
   124
                iPrivatePathCDriveDb, iPrivatePathCDriveDbBackup ) );
hgs
parents: 98
diff changeset
   125
        User::LeaveIfError( iSqlDb.Open( iPrivatePathCDriveDb,
hgs
parents: 98
diff changeset
   126
                &KSqlDbConfig ) );
hgs
parents: 98
diff changeset
   127
        }
hgs
parents: 98
diff changeset
   128
    }
hgs
parents: 98
diff changeset
   129
hgs
parents: 98
diff changeset
   130
// ---------------------------------------------------------------------------
hgs
parents: 98
diff changeset
   131
// 
hgs
parents: 98
diff changeset
   132
//
hgs
parents: 98
diff changeset
   133
// ---------------------------------------------------------------------------
hgs
parents: 98
diff changeset
   134
//
hgs
parents: 98
diff changeset
   135
void CCaSqLiteStorage::RestoreDatabaseL()
hgs
parents: 98
diff changeset
   136
    {
hgs
parents: 98
diff changeset
   137
    if( ( BaflUtils::FileExists( iRfs, iPrivatePathCDriveDbBackup ) ) )
hgs
parents: 98
diff changeset
   138
        {
hgs
parents: 98
diff changeset
   139
        iSqlDb.Close();
hgs
parents: 98
diff changeset
   140
        User::LeaveIfError( BaflUtils::CopyFile( iRfs,
hgs
parents: 98
diff changeset
   141
        		iPrivatePathCDriveDbBackup, iPrivatePathCDriveDb ) );
hgs
parents: 98
diff changeset
   142
        User::LeaveIfError( iSqlDb.Open( iPrivatePathCDriveDb,
hgs
parents: 98
diff changeset
   143
                &KSqlDbConfig ) );
hgs
parents: 98
diff changeset
   144
        }
hgs
parents: 98
diff changeset
   145
    }
hgs
parents: 98
diff changeset
   146
hgs
parents: 98
diff changeset
   147
// ---------------------------------------------------------------------------
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   148
// CCASqLiteStorage::NewL()
7feec50967db 201003_02
hgs
parents:
diff changeset
   149
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   150
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   151
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   152
CCaSqLiteStorage* CCaSqLiteStorage::NewL()
7feec50967db 201003_02
hgs
parents:
diff changeset
   153
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   154
    CCaSqLiteStorage* self = CCaSqLiteStorage::NewLC();
7feec50967db 201003_02
hgs
parents:
diff changeset
   155
    CleanupStack::Pop( self );
7feec50967db 201003_02
hgs
parents:
diff changeset
   156
    return self;
7feec50967db 201003_02
hgs
parents:
diff changeset
   157
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   158
7feec50967db 201003_02
hgs
parents:
diff changeset
   159
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   160
// CCASqLiteStorage::NewLC()
7feec50967db 201003_02
hgs
parents:
diff changeset
   161
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   162
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   163
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   164
CCaSqLiteStorage* CCaSqLiteStorage::NewLC()
7feec50967db 201003_02
hgs
parents:
diff changeset
   165
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   166
    CCaSqLiteStorage* self = new ( ELeave ) CCaSqLiteStorage();
7feec50967db 201003_02
hgs
parents:
diff changeset
   167
    CleanupStack::PushL( self );
7feec50967db 201003_02
hgs
parents:
diff changeset
   168
    self->ConstructL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   169
    return self;
7feec50967db 201003_02
hgs
parents:
diff changeset
   170
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   171
7feec50967db 201003_02
hgs
parents:
diff changeset
   172
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   173
// CCASqLiteStorage::~CCpStorageEngine()
7feec50967db 201003_02
hgs
parents:
diff changeset
   174
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   175
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   176
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   177
CCaSqLiteStorage::~CCaSqLiteStorage()
7feec50967db 201003_02
hgs
parents:
diff changeset
   178
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   179
    iSqlDb.Close();
86
hgs
parents: 85
diff changeset
   180
    iRfs.Close();
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   181
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   182
7feec50967db 201003_02
hgs
parents:
diff changeset
   183
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   184
// CCaSqLiteStorage::CreatePrivateDirPath()
7feec50967db 201003_02
hgs
parents:
diff changeset
   185
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   186
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   187
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   188
TInt CCaSqLiteStorage::CreatePrivateDirPath( TFileName& aPrivatePath,
86
hgs
parents: 85
diff changeset
   189
        const TDesC& aDrive, const TDesC& aDbName )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   190
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   191
    TInt error( KErrNone );
7feec50967db 201003_02
hgs
parents:
diff changeset
   192
7feec50967db 201003_02
hgs
parents:
diff changeset
   193
#ifdef CONTENT_ARSENAL_STORAGE_UT
7feec50967db 201003_02
hgs
parents:
diff changeset
   194
    TFileName KPathWithoutDrive( KDoubleSlash );
7feec50967db 201003_02
hgs
parents:
diff changeset
   195
#else
7feec50967db 201003_02
hgs
parents:
diff changeset
   196
    TFileName KPathWithoutDrive;
86
hgs
parents: 85
diff changeset
   197
    error = iRfs.PrivatePath( KPathWithoutDrive );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   198
    if( error != KErrNone )
7feec50967db 201003_02
hgs
parents:
diff changeset
   199
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   200
        return error;
7feec50967db 201003_02
hgs
parents:
diff changeset
   201
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   202
#endif
7feec50967db 201003_02
hgs
parents:
diff changeset
   203
7feec50967db 201003_02
hgs
parents:
diff changeset
   204
    aPrivatePath.Copy( aDrive );
7feec50967db 201003_02
hgs
parents:
diff changeset
   205
    aPrivatePath.Append( KPathWithoutDrive );
7feec50967db 201003_02
hgs
parents:
diff changeset
   206
    aPrivatePath.Append( aDbName );
7feec50967db 201003_02
hgs
parents:
diff changeset
   207
7feec50967db 201003_02
hgs
parents:
diff changeset
   208
    return error;
7feec50967db 201003_02
hgs
parents:
diff changeset
   209
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   210
7feec50967db 201003_02
hgs
parents:
diff changeset
   211
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   212
// CCASqLiteStorage::GetListL
7feec50967db 201003_02
hgs
parents:
diff changeset
   213
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   214
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   215
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   216
void CCaSqLiteStorage::GetEntriesL( const CCaInnerQuery* aQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   217
        RPointerArray<CCaInnerEntry>& aResultContainer )
7feec50967db 201003_02
hgs
parents:
diff changeset
   218
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   219
    //    Fetch entries from
7feec50967db 201003_02
hgs
parents:
diff changeset
   220
    CCaSqlQuery* sqlGetEntriesQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   221
    CaSqlQueryCreator::CreateGetEntriesQueryL( aQuery, sqlGetEntriesQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   222
    sqlGetEntriesQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   223
    sqlGetEntriesQuery->BindValuesForGetEntriesL( aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   224
    sqlGetEntriesQuery->ExecuteL( aResultContainer, CCaSqlQuery::EEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   225
    CleanupStack::PopAndDestroy( sqlGetEntriesQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   226
7feec50967db 201003_02
hgs
parents:
diff changeset
   227
    //    Populate the entries with their attributes
7feec50967db 201003_02
hgs
parents:
diff changeset
   228
    if( aResultContainer.Count() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   229
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   230
        CCaSqlQuery* sqlGetAttributesQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   231
        CaSqlQueryCreator::CreateGetAttributesQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   232
                aResultContainer.Count(), sqlGetAttributesQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   233
        sqlGetAttributesQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   234
        sqlGetAttributesQuery->BindEntryIdsL( aResultContainer );
7feec50967db 201003_02
hgs
parents:
diff changeset
   235
        sqlGetAttributesQuery->ExecuteL( aResultContainer,
7feec50967db 201003_02
hgs
parents:
diff changeset
   236
                CCaSqlQuery::EAttribute );
7feec50967db 201003_02
hgs
parents:
diff changeset
   237
        CleanupStack::PopAndDestroy( sqlGetAttributesQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   238
        }
88
hgs
parents: 86
diff changeset
   239
    
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   240
    //  set entries if proper order if they were fetched by ids
7feec50967db 201003_02
hgs
parents:
diff changeset
   241
    if( aQuery->GetIds().Count() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   242
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   243
        SetEntriesInProperOrderL( aQuery->GetIds(), aResultContainer );
7feec50967db 201003_02
hgs
parents:
diff changeset
   244
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   245
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   246
94
hgs
parents: 92
diff changeset
   247
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   248
//
hgs
parents: 92
diff changeset
   249
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   250
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   251
void CCaSqLiteStorage::LocalizeEntryL( CCaLocalizationEntry& aLocalization )
7feec50967db 201003_02
hgs
parents:
diff changeset
   252
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   253
    CCaSqlQuery* sqlLocalizeEntryQuery = CCaSqlQuery::NewLC( iSqlDb );
107
hgs
parents: 98
diff changeset
   254
    if ( aLocalization.GetAttributeName().Compare( KColumnEnText ) == 0 )
96
hgs
parents: 94
diff changeset
   255
        {
hgs
parents: 94
diff changeset
   256
        CaSqlQueryCreator::CreateLocalizationTableQueryL( sqlLocalizeEntryQuery,
hgs
parents: 94
diff changeset
   257
            KSQLLocalizeTextEntry );
hgs
parents: 94
diff changeset
   258
        }
hgs
parents: 94
diff changeset
   259
    else if ( aLocalization.GetAttributeName().Compare(
hgs
parents: 94
diff changeset
   260
            KColumnEnDescription ) == 0 )
hgs
parents: 94
diff changeset
   261
        {
hgs
parents: 94
diff changeset
   262
        CaSqlQueryCreator::CreateLocalizationTableQueryL( sqlLocalizeEntryQuery,
hgs
parents: 94
diff changeset
   263
            KSQLLocalizeDescriptionEntry );
hgs
parents: 94
diff changeset
   264
        }
107
hgs
parents: 98
diff changeset
   265
    else if ( aLocalization.GetAttributeName().Compare( KShortName ) == 0 )
hgs
parents: 98
diff changeset
   266
        {
hgs
parents: 98
diff changeset
   267
        CaSqlQueryCreator::CreateLocalizationTableQueryL( sqlLocalizeEntryQuery,
hgs
parents: 98
diff changeset
   268
            KSQLLocalizeShortNameAttribute );
hgs
parents: 98
diff changeset
   269
        }
hgs
parents: 98
diff changeset
   270
    else if ( aLocalization.GetAttributeName().Compare( KTitleName ) == 0 )
hgs
parents: 98
diff changeset
   271
        {
hgs
parents: 98
diff changeset
   272
        CaSqlQueryCreator::CreateLocalizationTableQueryL( sqlLocalizeEntryQuery,
hgs
parents: 98
diff changeset
   273
            KSQLLocalizeTitleNameAttribute );
hgs
parents: 98
diff changeset
   274
        }
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   275
    sqlLocalizeEntryQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   276
    sqlLocalizeEntryQuery->BindValuesForLocalizeL( aLocalization );
7feec50967db 201003_02
hgs
parents:
diff changeset
   277
    sqlLocalizeEntryQuery->ExecuteL( );
7feec50967db 201003_02
hgs
parents:
diff changeset
   278
    CleanupStack::PopAndDestroy( sqlLocalizeEntryQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   279
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   280
94
hgs
parents: 92
diff changeset
   281
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   282
//
hgs
parents: 92
diff changeset
   283
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   284
//
hgs
parents: 92
diff changeset
   285
void CCaSqLiteStorage::AddLocalizationL(
hgs
parents: 92
diff changeset
   286
        const CCaLocalizationEntry& aLocalization)
hgs
parents: 92
diff changeset
   287
    {
hgs
parents: 92
diff changeset
   288
    if (LocalizationEntryPresentL(aLocalization))
hgs
parents: 92
diff changeset
   289
        {
hgs
parents: 92
diff changeset
   290
        ExecuteLocalizationStatementL(aLocalization, KSQLUpdateLocalization);
hgs
parents: 92
diff changeset
   291
        }
hgs
parents: 92
diff changeset
   292
    else
hgs
parents: 92
diff changeset
   293
        {
hgs
parents: 92
diff changeset
   294
        ExecuteLocalizationStatementL(aLocalization, KSQLAddLocalization);
hgs
parents: 92
diff changeset
   295
        }
hgs
parents: 92
diff changeset
   296
    }
hgs
parents: 92
diff changeset
   297
hgs
parents: 92
diff changeset
   298
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   299
//
hgs
parents: 92
diff changeset
   300
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   301
//
hgs
parents: 92
diff changeset
   302
TBool CCaSqLiteStorage::LocalizationEntryPresentL(
hgs
parents: 92
diff changeset
   303
        const CCaLocalizationEntry& aLocalization)
hgs
parents: 92
diff changeset
   304
    {
hgs
parents: 92
diff changeset
   305
    TBool result(EFalse);
hgs
parents: 92
diff changeset
   306
    CCaSqlQuery* sqlQuery = CCaSqlQuery::NewLC( iSqlDb );
hgs
parents: 92
diff changeset
   307
    CaSqlQueryCreator::CreateLocalizationTableQueryL(sqlQuery,
hgs
parents: 92
diff changeset
   308
            KSQLGetLocalization);
hgs
parents: 92
diff changeset
   309
    sqlQuery->PrepareL();
hgs
parents: 92
diff changeset
   310
    sqlQuery->BindValuesForGetLocalizationEntryL( aLocalization );
hgs
parents: 92
diff changeset
   311
    result = sqlQuery->ExecuteEntryPresentL( );
hgs
parents: 92
diff changeset
   312
    CleanupStack::PopAndDestroy( sqlQuery );
hgs
parents: 92
diff changeset
   313
    return result;
hgs
parents: 92
diff changeset
   314
    }
hgs
parents: 92
diff changeset
   315
hgs
parents: 92
diff changeset
   316
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   317
//
hgs
parents: 92
diff changeset
   318
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   319
//
hgs
parents: 92
diff changeset
   320
void CCaSqLiteStorage::ExecuteLocalizationStatementL(
hgs
parents: 92
diff changeset
   321
        const CCaLocalizationEntry& aLocalization, const TDesC& aStatement)
hgs
parents: 92
diff changeset
   322
    {
hgs
parents: 92
diff changeset
   323
    CCaSqlQuery* sqlQuery = CCaSqlQuery::NewLC( iSqlDb );
hgs
parents: 92
diff changeset
   324
    CaSqlQueryCreator::CreateLocalizationTableQueryL(sqlQuery,aStatement );
hgs
parents: 92
diff changeset
   325
    sqlQuery->PrepareL();
hgs
parents: 92
diff changeset
   326
    sqlQuery->BindValuesForLocalizationEntryL( aLocalization );
hgs
parents: 92
diff changeset
   327
    sqlQuery->ExecuteL( );
hgs
parents: 92
diff changeset
   328
    CleanupStack::PopAndDestroy( sqlQuery );
hgs
parents: 92
diff changeset
   329
    }
hgs
parents: 92
diff changeset
   330
hgs
parents: 92
diff changeset
   331
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   332
//
hgs
parents: 92
diff changeset
   333
// ---------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   334
//
86
hgs
parents: 85
diff changeset
   335
void CCaSqLiteStorage::GetLocalizationsL(
hgs
parents: 85
diff changeset
   336
        RPointerArray<CCaLocalizationEntry>& aResultContainer )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   337
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   338
    CCaSqlQuery* sqlGetLocalizationsQuery = CCaSqlQuery::NewLC( iSqlDb );
94
hgs
parents: 92
diff changeset
   339
    CaSqlQueryCreator::CreateLocalizationTableQueryL(
hgs
parents: 92
diff changeset
   340
            sqlGetLocalizationsQuery, KSQLGetLocalizations );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   341
    sqlGetLocalizationsQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   342
    sqlGetLocalizationsQuery->ExecuteLocalizationsL( aResultContainer );
7feec50967db 201003_02
hgs
parents:
diff changeset
   343
    CleanupStack::PopAndDestroy( sqlGetLocalizationsQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   344
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   345
7feec50967db 201003_02
hgs
parents:
diff changeset
   346
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   347
// CCASqLiteStorage::GetEntriesIdsL
7feec50967db 201003_02
hgs
parents:
diff changeset
   348
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   349
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   350
//
86
hgs
parents: 85
diff changeset
   351
void CCaSqLiteStorage::GetEntriesIdsL( const CCaInnerQuery* aQuery,
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   352
        RArray<TInt>& aResultIdArray )
7feec50967db 201003_02
hgs
parents:
diff changeset
   353
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   354
    CCaSqlQuery* sqlGetEntriesIdsQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   355
    CaSqlQueryCreator::CreateGetEntriesQueryL( aQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   356
            sqlGetEntriesIdsQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   357
    sqlGetEntriesIdsQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   358
    sqlGetEntriesIdsQuery->BindValuesForGetEntriesL( aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   359
    sqlGetEntriesIdsQuery->ExecuteL( aResultIdArray,
7feec50967db 201003_02
hgs
parents:
diff changeset
   360
            CCaSqlQuery::EEntryTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   361
    CleanupStack::PopAndDestroy( sqlGetEntriesIdsQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   362
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   363
7feec50967db 201003_02
hgs
parents:
diff changeset
   364
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   365
// CCASqLiteStorage::GetEntriesIdsL
7feec50967db 201003_02
hgs
parents:
diff changeset
   366
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   367
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   368
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   369
void CCaSqLiteStorage::GetParentsIdsL( const RArray<TInt>& aEntryIdArray,
98
hgs
parents: 96
diff changeset
   370
        RArray<TInt>& aParentIdArray, TBool aCheckParentsParent )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   371
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   372
    CCaSqlQuery* sqlGetParentIdsQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   373
    CaSqlQueryCreator::CreateGetParentsIdsQueryL( aEntryIdArray,
7feec50967db 201003_02
hgs
parents:
diff changeset
   374
            sqlGetParentIdsQuery, aParentIdArray );
7feec50967db 201003_02
hgs
parents:
diff changeset
   375
    sqlGetParentIdsQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   376
    sqlGetParentIdsQuery->BindIdsL( aEntryIdArray, KSQLGEEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   377
    if( aParentIdArray.Count() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   378
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   379
        sqlGetParentIdsQuery->BindIdsL( aParentIdArray, KSQLGEIdGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   380
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   381
    TInt parentCount = sqlGetParentIdsQuery->ExecuteL( aParentIdArray,
7feec50967db 201003_02
hgs
parents:
diff changeset
   382
            CCaSqlQuery::EGroupTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   383
    CleanupStack::PopAndDestroy( sqlGetParentIdsQuery );
98
hgs
parents: 96
diff changeset
   384
    if( aCheckParentsParent && parentCount > 0 )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   385
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   386
        GetParentsIdsL( aParentIdArray, aParentIdArray );
7feec50967db 201003_02
hgs
parents:
diff changeset
   387
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   388
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   389
7feec50967db 201003_02
hgs
parents:
diff changeset
   390
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   391
// CCASqLiteStorage::AddL
7feec50967db 201003_02
hgs
parents:
diff changeset
   392
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   393
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   394
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   395
void CCaSqLiteStorage::AddL( CCaInnerEntry* aEntry, TBool aUpdate)
7feec50967db 201003_02
hgs
parents:
diff changeset
   396
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   397
    RPointerArray<CCaSqlQuery> sqlQueries;
7feec50967db 201003_02
hgs
parents:
diff changeset
   398
    CleanupResetAndDestroyPushL( sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   399
7feec50967db 201003_02
hgs
parents:
diff changeset
   400
    CaSqlQueryCreator::CreateAddQueryL( aEntry, sqlQueries, iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   401
7feec50967db 201003_02
hgs
parents:
diff changeset
   402
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   403
    TRAPD( err, ExecuteAddL( aEntry, sqlQueries ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   404
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   405
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   406
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   407
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   408
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   409
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   410
7feec50967db 201003_02
hgs
parents:
diff changeset
   411
    CleanupStack::PopAndDestroy( &sqlQueries );
86
hgs
parents: 85
diff changeset
   412
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   413
    if( aUpdate )
7feec50967db 201003_02
hgs
parents:
diff changeset
   414
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   415
        RemoveFromLocalizationL( aEntry->GetId() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   416
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   417
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   418
7feec50967db 201003_02
hgs
parents:
diff changeset
   419
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   420
// CCASqLiteStorage::RemoveL
7feec50967db 201003_02
hgs
parents:
diff changeset
   421
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   422
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   423
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   424
void CCaSqLiteStorage::RemoveL( const RArray<TInt>& aEntryIds )
7feec50967db 201003_02
hgs
parents:
diff changeset
   425
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   426
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   427
    TRAPD( err, ExecuteRemoveL( aEntryIds ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   428
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   429
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   430
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   431
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   432
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   433
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   434
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   435
7feec50967db 201003_02
hgs
parents:
diff changeset
   436
// ---------------------------------------------------------------------------
86
hgs
parents: 85
diff changeset
   437
// CCASqLiteStorage::OrganizeL( const RArray<TInt>& aEntryIds,
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   438
//        TCaOperationParams aParams )
7feec50967db 201003_02
hgs
parents:
diff changeset
   439
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   440
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   441
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   442
void CCaSqLiteStorage::OrganizeL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   443
        TCaOperationParams aParams )
7feec50967db 201003_02
hgs
parents:
diff changeset
   444
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   445
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   446
    TRAPD( err, ExecuteOrganizeL( aEntryIds, aParams ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   447
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   448
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   449
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   450
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   451
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   452
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   453
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   454
7feec50967db 201003_02
hgs
parents:
diff changeset
   455
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   456
// CCASqLiteStorage::TouchL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   457
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   458
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   459
//
107
hgs
parents: 98
diff changeset
   460
void CCaSqLiteStorage::TouchL( const TInt aEntryId, TBool aRemovable )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   461
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   462
    ExecuteStatementL( KSqlStatementBegin );
107
hgs
parents: 98
diff changeset
   463
    TRAPD( err, ExecuteTouchL( aEntryId, aRemovable ) );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   464
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   465
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   466
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   467
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   468
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   469
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   470
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   471
7feec50967db 201003_02
hgs
parents:
diff changeset
   472
// ---------------------------------------------------------------------------
86
hgs
parents: 85
diff changeset
   473
// CCASqLiteStorage::DbPropertyL
hgs
parents: 85
diff changeset
   474
// ( const TDesC& aProperty, TDes& aPropertyValue )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   475
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   476
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   477
void CCaSqLiteStorage::DbPropertyL( const TDesC& aProperty,
7feec50967db 201003_02
hgs
parents:
diff changeset
   478
        TDes& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   479
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   480
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   481
    TRAPD( err, ExecuteDbPropertyL( aProperty, aPropertyValue ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   482
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   483
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   484
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   485
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   486
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   487
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   488
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   489
7feec50967db 201003_02
hgs
parents:
diff changeset
   490
// ---------------------------------------------------------------------------
86
hgs
parents: 85
diff changeset
   491
// CCASqLiteStorage::SetDBPropertyL
hgs
parents: 85
diff changeset
   492
// ( const TDesC& aProperty, const TDesC& aPropertyValue )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   493
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   494
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   495
void CCaSqLiteStorage::SetDBPropertyL( const TDesC& aProperty,
7feec50967db 201003_02
hgs
parents:
diff changeset
   496
        const TDesC& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   497
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   498
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   499
    TRAPD( err, ExecuteSetDbPropertyL( aProperty, aPropertyValue ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   500
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   501
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   502
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   503
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   504
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   505
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   506
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   507
7feec50967db 201003_02
hgs
parents:
diff changeset
   508
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   509
// CCaSqLiteStorage::RemoveFromLocalizationL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   510
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   511
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   512
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   513
void CCaSqLiteStorage::RemoveFromLocalizationL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   514
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   515
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   516
    TRAPD( err, ExecuteRemoveFromLocalizationL( aEntryId ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   517
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   518
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   519
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   520
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   521
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   522
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   523
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   524
7feec50967db 201003_02
hgs
parents:
diff changeset
   525
// ---------------------------------------------------------------------------
86
hgs
parents: 85
diff changeset
   526
// CCaSqLiteStorage::CustomSortL
hgs
parents: 85
diff changeset
   527
// ( const RArray<TInt>& aEntryIds, const TInt aGroupId )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   528
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   529
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   530
void CCaSqLiteStorage::CustomSortL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   531
        const TInt aGroupId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   532
    {
107
hgs
parents: 98
diff changeset
   533
    RArray<TInt> entryIds;
hgs
parents: 98
diff changeset
   534
    CleanupClosePushL( entryIds );
hgs
parents: 98
diff changeset
   535
    for( TInt j=0; j<aEntryIds.Count(); j++ )
hgs
parents: 98
diff changeset
   536
        {
hgs
parents: 98
diff changeset
   537
        entryIds.AppendL(aEntryIds[j]);
hgs
parents: 98
diff changeset
   538
        }
hgs
parents: 98
diff changeset
   539
    
hgs
parents: 98
diff changeset
   540
    RArray<TInt> oldIds;
hgs
parents: 98
diff changeset
   541
    CleanupClosePushL( oldIds );
hgs
parents: 98
diff changeset
   542
    CCaInnerQuery* innerQuery = CCaInnerQuery::NewLC();
hgs
parents: 98
diff changeset
   543
    innerQuery->SetParentId( aGroupId );
hgs
parents: 98
diff changeset
   544
    
hgs
parents: 98
diff changeset
   545
    GetEntriesIdsL( innerQuery, oldIds );
hgs
parents: 98
diff changeset
   546
    
hgs
parents: 98
diff changeset
   547
    if( oldIds.Count() != entryIds.Count() )
hgs
parents: 98
diff changeset
   548
        {
hgs
parents: 98
diff changeset
   549
        for( TInt i=0; i<oldIds.Count(); i++ )
hgs
parents: 98
diff changeset
   550
            {
hgs
parents: 98
diff changeset
   551
            TInt oldId = oldIds[i];
hgs
parents: 98
diff changeset
   552
            if( entryIds.Find( oldId ) == KErrNotFound )
hgs
parents: 98
diff changeset
   553
                {
hgs
parents: 98
diff changeset
   554
                // instert apps with visible set on false on old positions
hgs
parents: 98
diff changeset
   555
                entryIds.InsertL( oldId, i );
hgs
parents: 98
diff changeset
   556
                }
hgs
parents: 98
diff changeset
   557
            }
hgs
parents: 98
diff changeset
   558
        }
hgs
parents: 98
diff changeset
   559
    
hgs
parents: 98
diff changeset
   560
    const RArray<TInt> constEntryIds( entryIds );
hgs
parents: 98
diff changeset
   561
    
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   562
    RPointerArray<CCaSqlQuery> sqlQueries;
107
hgs
parents: 98
diff changeset
   563
    CleanupResetAndDestroyPushL( sqlQueries ); 
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   564
86
hgs
parents: 85
diff changeset
   565
    CaSqlQueryCreator::CreateCustomSortQueryL(
107
hgs
parents: 98
diff changeset
   566
            constEntryIds, sqlQueries, iSqlDb );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   567
7feec50967db 201003_02
hgs
parents:
diff changeset
   568
    ExecuteStatementL( KSqlStatementBegin );
107
hgs
parents: 98
diff changeset
   569
    TRAPD( err, ExecuteCustomSortL( constEntryIds, aGroupId, sqlQueries ) );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   570
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   571
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   572
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   573
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   574
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   575
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   576
7feec50967db 201003_02
hgs
parents:
diff changeset
   577
    CleanupStack::PopAndDestroy( &sqlQueries );
107
hgs
parents: 98
diff changeset
   578
    CleanupStack::PopAndDestroy( innerQuery );
hgs
parents: 98
diff changeset
   579
    CleanupStack::PopAndDestroy( &oldIds );
hgs
parents: 98
diff changeset
   580
    CleanupStack::PopAndDestroy( &entryIds );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   581
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   582
7feec50967db 201003_02
hgs
parents:
diff changeset
   583
// ---------------------------------------------------------------------------
86
hgs
parents: 85
diff changeset
   584
// CCaSqLiteStorage::ExecuteCustomSortL
hgs
parents: 85
diff changeset
   585
// ( const RArray<TInt>& aEntryIds, const TInt aGroupId )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   586
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   587
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   588
void CCaSqLiteStorage::ExecuteCustomSortL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   589
        const TInt aGroupId , RPointerArray<CCaSqlQuery>& aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   590
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   591
    for( TInt i = 0; i < aSqlQuery.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   592
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   593
        TInt newPosition = i + 1;
7feec50967db 201003_02
hgs
parents:
diff changeset
   594
        TInt entryId = aEntryIds[i];
86
hgs
parents: 85
diff changeset
   595
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   596
        aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   597
        aSqlQuery[i]->BindValuesForCustomSortL( aGroupId, entryId, newPosition );
7feec50967db 201003_02
hgs
parents:
diff changeset
   598
        aSqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   599
        aSqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   600
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   601
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   602
7feec50967db 201003_02
hgs
parents:
diff changeset
   603
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   604
// CCaSqLiteStorage::ExecuteRemoveFromLocalizationL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   605
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   606
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   607
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   608
void CCaSqLiteStorage::ExecuteRemoveFromLocalizationL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   609
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   610
    CCaSqlQuery* query = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   611
    query->SetQueryL( KSQLDeleteLocalizationTextWhereEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   612
    query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   613
    query->BindValuesForRemoveFromLocalizationL( aEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   614
    query->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   615
    CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   616
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   617
7feec50967db 201003_02
hgs
parents:
diff changeset
   618
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   619
// CCASqLiteStorage::ExecuteStatementL( const TDesC& aStatement )
7feec50967db 201003_02
hgs
parents:
diff changeset
   620
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   621
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   622
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   623
void CCaSqLiteStorage::ExecuteStatementL( const TDesC& aStatement )
7feec50967db 201003_02
hgs
parents:
diff changeset
   624
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   625
    CCaSqlQuery* query = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   626
    query->SetQueryL( aStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   627
    query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   628
    query->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   629
    CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   630
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   631
7feec50967db 201003_02
hgs
parents:
diff changeset
   632
// ---------------------------------------------------------------------------
86
hgs
parents: 85
diff changeset
   633
// CCASqLiteStorage::ExecuteAddL(CCaInnerEntry* aEntry,
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   634
//         RPointerArray<CCASqlQuery>& sqlQuery)
7feec50967db 201003_02
hgs
parents:
diff changeset
   635
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   636
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   637
//
86
hgs
parents: 85
diff changeset
   638
void CCaSqLiteStorage::ExecuteAddL( CCaInnerEntry* aEntry,
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   639
        RPointerArray<CCaSqlQuery>& aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   640
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   641
    TBool isAttributeDeleted( EFalse );
7feec50967db 201003_02
hgs
parents:
diff changeset
   642
    for( TInt i = 0; i < aSqlQuery.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   643
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   644
        if( aSqlQuery[i]->Type() == CCaSqlQuery::EIconTable )
7feec50967db 201003_02
hgs
parents:
diff changeset
   645
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   646
            //check if icon exists - just update
7feec50967db 201003_02
hgs
parents:
diff changeset
   647
            CCaSqlQuery* query = CCaSqlQuery::NewLC( iSqlDb );
92
hgs
parents: 89
diff changeset
   648
            CaSqlQueryCreator::CreateFindIconQueryL(aEntry, query);
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   649
            query->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   650
            query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   651
            query->BindValuesForGetIconL( aEntry );
92
hgs
parents: 89
diff changeset
   652
            TInt idIcon( 0 );
hgs
parents: 89
diff changeset
   653
            query->ExecuteL( idIcon );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   654
            CleanupStack::PopAndDestroy( query );
86
hgs
parents: 85
diff changeset
   655
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   656
            aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   657
            aSqlQuery[i]->BindValuesForAddL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   658
            TInt tmpId( 0 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   659
            TRAPD( err, tmpId = aSqlQuery[i]->ExecuteL() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   660
            aSqlQuery[i]->CloseStatement();
92
hgs
parents: 89
diff changeset
   661
            if( !idIcon && !aEntry->GetIconId() )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   662
                { // new icon added
7feec50967db 201003_02
hgs
parents:
diff changeset
   663
                aEntry->SetIconId( tmpId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   664
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   665
            if( err == KSqlErrConstraint )
7feec50967db 201003_02
hgs
parents:
diff changeset
   666
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   667
                // ignore, this means that the icon cannot be removed
7feec50967db 201003_02
hgs
parents:
diff changeset
   668
                // because some other entry has the same icon.
7feec50967db 201003_02
hgs
parents:
diff changeset
   669
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   670
            else if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   671
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   672
                User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   673
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   674
7feec50967db 201003_02
hgs
parents:
diff changeset
   675
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   676
        else if( aSqlQuery[i]->Type() == CCaSqlQuery::EEntryTable )
7feec50967db 201003_02
hgs
parents:
diff changeset
   677
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   678
            aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   679
            aSqlQuery[i]->BindValuesForAddL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   680
            TInt tmpId = aSqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   681
            aSqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   682
            if( !aEntry->GetId() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   683
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   684
                // new entry added
7feec50967db 201003_02
hgs
parents:
diff changeset
   685
                aEntry->SetId( tmpId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   686
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   687
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   688
        else if( !isAttributeDeleted
7feec50967db 201003_02
hgs
parents:
diff changeset
   689
                && aSqlQuery[i]->Type() == CCaSqlQuery::EAttributeTable )
7feec50967db 201003_02
hgs
parents:
diff changeset
   690
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   691
            // delete all entry's attributes, just ones
7feec50967db 201003_02
hgs
parents:
diff changeset
   692
            aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   693
            aSqlQuery[i]->BindEntryIdL( aEntry->GetId() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   694
            aSqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   695
            aSqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   696
            isAttributeDeleted = ETrue;
7feec50967db 201003_02
hgs
parents:
diff changeset
   697
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   698
        else if( aSqlQuery[i]->Type()==CCaSqlQuery::EAttributeTable )
7feec50967db 201003_02
hgs
parents:
diff changeset
   699
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   700
            // add new attribute(s) if it's neccesery
7feec50967db 201003_02
hgs
parents:
diff changeset
   701
            aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   702
            for( TInt k(0); k < aEntry->GetAttributes().Count(); k++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   703
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   704
                // if(id_entry, name) exist it'll replaced by new value
7feec50967db 201003_02
hgs
parents:
diff changeset
   705
                aSqlQuery[i]->BindValuesForAddAttributeL( aEntry,
7feec50967db 201003_02
hgs
parents:
diff changeset
   706
                        aEntry->GetAttributes()[k] );
7feec50967db 201003_02
hgs
parents:
diff changeset
   707
                aSqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   708
                aSqlQuery[i]->ResetStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   709
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   710
            aSqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   711
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   712
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   713
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   714
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   715
// CCASqLiteStorage::ExecuteRemoveL( const RArray<TInt>& aEntryIds)
7feec50967db 201003_02
hgs
parents:
diff changeset
   716
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   717
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   718
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   719
void CCaSqLiteStorage::ExecuteRemoveL( const RArray<TInt>& aEntryIds )
7feec50967db 201003_02
hgs
parents:
diff changeset
   720
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   721
    for( int i=0; i<aEntryIds.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   722
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   723
        // check if entry exist in database
7feec50967db 201003_02
hgs
parents:
diff changeset
   724
        CCaSqlQuery* queryEntry = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   725
        queryEntry->SetQueryL( KSQLGetEntryIdFromEntryTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   726
        queryEntry->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   727
        queryEntry->BindEntryIdL( aEntryIds[i] );
7feec50967db 201003_02
hgs
parents:
diff changeset
   728
        TInt entryCount( 0 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   729
        queryEntry->ExecuteL( entryCount );
7feec50967db 201003_02
hgs
parents:
diff changeset
   730
        CleanupStack::PopAndDestroy( queryEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   731
        if( !entryCount )
7feec50967db 201003_02
hgs
parents:
diff changeset
   732
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   733
            User::Leave( KErrNotFound );
7feec50967db 201003_02
hgs
parents:
diff changeset
   734
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   735
7feec50967db 201003_02
hgs
parents:
diff changeset
   736
        // SELECT Id_Icon FROM CA_ENTRY WHERE Id = aEntryId;
7feec50967db 201003_02
hgs
parents:
diff changeset
   737
        CCaSqlQuery* queryIconId = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   738
        queryIconId->SetQueryL( KSQLGETIconIdFromEntryTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   739
        queryIconId->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   740
        queryIconId->BindEntryIdL( aEntryIds[i] );
7feec50967db 201003_02
hgs
parents:
diff changeset
   741
        TInt iconId( 0 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   742
        queryIconId->ExecuteL( iconId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   743
        CleanupStack::PopAndDestroy( queryIconId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   744
7feec50967db 201003_02
hgs
parents:
diff changeset
   745
        RPointerArray<CCaSqlQuery> sqlQuery;
7feec50967db 201003_02
hgs
parents:
diff changeset
   746
        CleanupResetAndDestroyPushL( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   747
        CaSqlQueryCreator::CreateRemoveQueryL( sqlQuery, iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   748
        for( TInt j = 0; j < sqlQuery.Count(); j++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   749
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   750
            if( !( sqlQuery[j]->Type() == CCaSqlQuery::EIconTable &&
7feec50967db 201003_02
hgs
parents:
diff changeset
   751
                    iconId == 0 ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
   752
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   753
                sqlQuery[j]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   754
                sqlQuery[j]->BindValuesForRemoveL( aEntryIds[i], iconId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   755
                TRAPD( err, sqlQuery[j]->ExecuteL() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   756
                sqlQuery[j]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   757
7feec50967db 201003_02
hgs
parents:
diff changeset
   758
                if( sqlQuery[j]->Type() == CCaSqlQuery::EIconTable &&
7feec50967db 201003_02
hgs
parents:
diff changeset
   759
                        err == KSqlErrConstraint )
7feec50967db 201003_02
hgs
parents:
diff changeset
   760
                    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   761
                    // ignore, this means that the icon cannot be removed
7feec50967db 201003_02
hgs
parents:
diff changeset
   762
                    // because some other entry has the same icon.
7feec50967db 201003_02
hgs
parents:
diff changeset
   763
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   764
                else if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   765
                    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   766
                    User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   767
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   768
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   769
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   770
        CleanupStack::PopAndDestroy( &sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   771
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   772
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   773
7feec50967db 201003_02
hgs
parents:
diff changeset
   774
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   775
// CCASqLiteStorage::ExecuteOrganizeL(const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   776
//      TCaOperationParams aParams)
7feec50967db 201003_02
hgs
parents:
diff changeset
   777
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   778
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   779
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   780
void CCaSqLiteStorage::ExecuteOrganizeL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   781
        TCaOperationParams aParams )
7feec50967db 201003_02
hgs
parents:
diff changeset
   782
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   783
    VerifyOrganizeParamsL( aEntryIds, aParams );
7feec50967db 201003_02
hgs
parents:
diff changeset
   784
7feec50967db 201003_02
hgs
parents:
diff changeset
   785
    RPointerArray<CCaSqlQuery> sqlQueries;
7feec50967db 201003_02
hgs
parents:
diff changeset
   786
    CleanupResetAndDestroyPushL( sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   787
7feec50967db 201003_02
hgs
parents:
diff changeset
   788
    TBool revereseInsertOrder = CaSqlQueryCreator::CreateOrganizeQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   789
            aEntryIds, aParams, iSqlDb, sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   790
7feec50967db 201003_02
hgs
parents:
diff changeset
   791
    for( TInt i = 0; i < sqlQueries.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   792
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   793
        switch( sqlQueries[i]->Type() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   794
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   795
            case CCaSqlQuery::EGroupTableRemove:
7feec50967db 201003_02
hgs
parents:
diff changeset
   796
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   797
                sqlQueries[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   798
                sqlQueries[i]->BindValuesForOrganizeL( aEntryIds, aParams );
7feec50967db 201003_02
hgs
parents:
diff changeset
   799
                sqlQueries[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   800
                sqlQueries[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   801
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   802
                break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   803
7feec50967db 201003_02
hgs
parents:
diff changeset
   804
            case CCaSqlQuery::EGroupTableInsert:
7feec50967db 201003_02
hgs
parents:
diff changeset
   805
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   806
                sqlQueries[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   807
                for( TInt j = 0; j < aEntryIds.Count(); j++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   808
                    {
86
hgs
parents: 85
diff changeset
   809
                    TInt k = (revereseInsertOrder) ?
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   810
                        (aEntryIds.Count() - 1) - j : j;
86
hgs
parents: 85
diff changeset
   811
                    sqlQueries[i]->BindValuesForOrganizeL(
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   812
                            aEntryIds, aParams, aEntryIds[k] );
7feec50967db 201003_02
hgs
parents:
diff changeset
   813
                    sqlQueries[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   814
                    sqlQueries[i]->ResetStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   815
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   816
                sqlQueries[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   817
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   818
                break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   819
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   820
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   821
7feec50967db 201003_02
hgs
parents:
diff changeset
   822
    CleanupStack::PopAndDestroy( &sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   823
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   824
7feec50967db 201003_02
hgs
parents:
diff changeset
   825
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   826
// CCASqLiteStorage::ExecuteTouchL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   827
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   828
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   829
//
107
hgs
parents: 98
diff changeset
   830
void CCaSqLiteStorage::ExecuteTouchL( const TInt aEntryId, TBool aRemovable )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   831
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   832
    RPointerArray<CCaSqlQuery> sqlQuery;
7feec50967db 201003_02
hgs
parents:
diff changeset
   833
    CleanupResetAndDestroyPushL( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   834
107
hgs
parents: 98
diff changeset
   835
    CaSqlQueryCreator::CreateTouchQueryL( sqlQuery, iSqlDb, aRemovable );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   836
7feec50967db 201003_02
hgs
parents:
diff changeset
   837
    TTime time;
7feec50967db 201003_02
hgs
parents:
diff changeset
   838
    time.UniversalTime();
7feec50967db 201003_02
hgs
parents:
diff changeset
   839
7feec50967db 201003_02
hgs
parents:
diff changeset
   840
    for( TInt i = 0; i < sqlQuery.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   841
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   842
        sqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   843
        sqlQuery[i]->BindValuesForLaunchL( aEntryId, time.Int64() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   844
        sqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   845
        sqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   846
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   847
7feec50967db 201003_02
hgs
parents:
diff changeset
   848
    CleanupStack::PopAndDestroy( &sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   849
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   850
7feec50967db 201003_02
hgs
parents:
diff changeset
   851
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   852
// ExecuteDbPropertyL( const TDesC& aProperty, TDes& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   853
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   854
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   855
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   856
void CCaSqLiteStorage::ExecuteDbPropertyL( const TDesC& aProperty,
7feec50967db 201003_02
hgs
parents:
diff changeset
   857
        TDes& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   858
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   859
    CCaSqlQuery* sqlQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   860
    sqlQuery->SetQueryL( KSQLGetProperty );
7feec50967db 201003_02
hgs
parents:
diff changeset
   861
    sqlQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   862
    sqlQuery->BindValuesForPropertyL( aProperty );
7feec50967db 201003_02
hgs
parents:
diff changeset
   863
    sqlQuery->ExecutePropertyL( aPropertyValue );
7feec50967db 201003_02
hgs
parents:
diff changeset
   864
    sqlQuery->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   865
    CleanupStack::PopAndDestroy( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   866
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   867
7feec50967db 201003_02
hgs
parents:
diff changeset
   868
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   869
// ExecuteSetDbPropertyL( const TDesC& aProperty, const TDesC& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   870
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   871
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   872
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   873
void CCaSqLiteStorage::ExecuteSetDbPropertyL( const TDesC& aProperty,
7feec50967db 201003_02
hgs
parents:
diff changeset
   874
        const TDesC& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   875
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   876
    CCaSqlQuery* sqlQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   877
    sqlQuery->SetQueryL( KSQLUpdateProperty );
7feec50967db 201003_02
hgs
parents:
diff changeset
   878
    sqlQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   879
    sqlQuery->BindValuesForPropertyUpdateL( aProperty, aPropertyValue );
7feec50967db 201003_02
hgs
parents:
diff changeset
   880
    sqlQuery->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   881
    sqlQuery->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   882
    CleanupStack::PopAndDestroy( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   883
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   884
7feec50967db 201003_02
hgs
parents:
diff changeset
   885
7feec50967db 201003_02
hgs
parents:
diff changeset
   886
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   887
// CCASqLiteStorage::RemoveOldEntriesFromLaunchTableL( TInt aDays )
7feec50967db 201003_02
hgs
parents:
diff changeset
   888
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   889
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   890
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   891
void CCaSqLiteStorage::RemoveOldEntriesFromLaunchTableL( TInt aDays )
7feec50967db 201003_02
hgs
parents:
diff changeset
   892
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   893
    TTime presentTime;
7feec50967db 201003_02
hgs
parents:
diff changeset
   894
    presentTime.UniversalTime();
7feec50967db 201003_02
hgs
parents:
diff changeset
   895
    TTime borderTime = presentTime - ( TTimeIntervalDays( aDays ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   896
7feec50967db 201003_02
hgs
parents:
diff changeset
   897
    CCaSqlQuery* sqlQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   898
    sqlQuery->SetQueryL( KSQLDeleteOldFromLaunch );
7feec50967db 201003_02
hgs
parents:
diff changeset
   899
    sqlQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   900
    sqlQuery->BindValuesForLaunchL( 0, borderTime.Int64() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   901
    sqlQuery->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   902
7feec50967db 201003_02
hgs
parents:
diff changeset
   903
    CleanupStack::PopAndDestroy( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   904
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   905
7feec50967db 201003_02
hgs
parents:
diff changeset
   906
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   907
// CCASqLiteStorage::VerifyOrganizeParamsL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   908
//      TCaOperationParams aParams);
7feec50967db 201003_02
hgs
parents:
diff changeset
   909
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   910
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   911
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   912
void CCaSqLiteStorage::VerifyOrganizeParamsL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   913
        TCaOperationParams aParams )
7feec50967db 201003_02
hgs
parents:
diff changeset
   914
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   915
    switch( aParams.iOperationType )
7feec50967db 201003_02
hgs
parents:
diff changeset
   916
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   917
        case TCaOperationParams::ERemove:
7feec50967db 201003_02
hgs
parents:
diff changeset
   918
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   919
            CCaSqlQuery * query = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   920
            CaSqlQueryCreator::PopulateQueryWithIdListL( aEntryIds.Count(),
7feec50967db 201003_02
hgs
parents:
diff changeset
   921
                    query, KSQLOrganizeGetEntryIdCountFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   922
7feec50967db 201003_02
hgs
parents:
diff changeset
   923
            query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   924
            query->BindValuesForOrganizeL( aEntryIds, aParams );
7feec50967db 201003_02
hgs
parents:
diff changeset
   925
            TInt dbEntryCount;
7feec50967db 201003_02
hgs
parents:
diff changeset
   926
            query->ExecuteL( dbEntryCount );
7feec50967db 201003_02
hgs
parents:
diff changeset
   927
            query->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   928
            if( dbEntryCount < aEntryIds.Count() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   929
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   930
                User::Leave( KErrArgument );
7feec50967db 201003_02
hgs
parents:
diff changeset
   931
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   932
7feec50967db 201003_02
hgs
parents:
diff changeset
   933
            CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   934
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   935
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   936
        case TCaOperationParams::EInsert:
7feec50967db 201003_02
hgs
parents:
diff changeset
   937
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   938
            CCaSqlQuery * query = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   939
            CaSqlQueryCreator::PopulateQueryWithIdListL( 1, query,
7feec50967db 201003_02
hgs
parents:
diff changeset
   940
                    KSQLOrganizeGetEntryIdCountFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   941
            RArray<TInt> id;
7feec50967db 201003_02
hgs
parents:
diff changeset
   942
            CleanupClosePushL( id );
7feec50967db 201003_02
hgs
parents:
diff changeset
   943
            id.AppendL( aParams.iBeforeEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   944
7feec50967db 201003_02
hgs
parents:
diff changeset
   945
            query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   946
            query->BindValuesForOrganizeL( id, aParams );
7feec50967db 201003_02
hgs
parents:
diff changeset
   947
            TInt dbEntryCount;
7feec50967db 201003_02
hgs
parents:
diff changeset
   948
            query->ExecuteL( dbEntryCount );
7feec50967db 201003_02
hgs
parents:
diff changeset
   949
            query->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   950
            if( dbEntryCount == 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   951
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   952
                User::Leave( KErrArgument );
7feec50967db 201003_02
hgs
parents:
diff changeset
   953
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   954
7feec50967db 201003_02
hgs
parents:
diff changeset
   955
            CleanupStack::PopAndDestroy( &id );
7feec50967db 201003_02
hgs
parents:
diff changeset
   956
            CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   957
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   958
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   959
        case TCaOperationParams::EPrepend:
7feec50967db 201003_02
hgs
parents:
diff changeset
   960
        case TCaOperationParams::EAppend:
7feec50967db 201003_02
hgs
parents:
diff changeset
   961
        default:
7feec50967db 201003_02
hgs
parents:
diff changeset
   962
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   963
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   964
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   965
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   966
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   967
7feec50967db 201003_02
hgs
parents:
diff changeset
   968
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   969
// CCASqLiteStorage::SetEntriesInProperOrderL
7feec50967db 201003_02
hgs
parents:
diff changeset
   970
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   971
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   972
void CCaSqLiteStorage::SetEntriesInProperOrderL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   973
        const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   974
        RPointerArray<CCaInnerEntry>& aResultContainer )
7feec50967db 201003_02
hgs
parents:
diff changeset
   975
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   976
    for( TInt i = 0; i < aEntryIds.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   977
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   978
        for( TInt j = i + 1; j < aResultContainer.Count(); j++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   979
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   980
            if( aEntryIds[i] == aResultContainer[j]->GetId() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   981
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   982
                CCaInnerEntry* temporary( NULL );
7feec50967db 201003_02
hgs
parents:
diff changeset
   983
                temporary = aResultContainer[i];
7feec50967db 201003_02
hgs
parents:
diff changeset
   984
                aResultContainer[i] = aResultContainer[j];
7feec50967db 201003_02
hgs
parents:
diff changeset
   985
                aResultContainer[j] = temporary;
7feec50967db 201003_02
hgs
parents:
diff changeset
   986
                break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   987
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   988
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   989
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   990
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   991
98
hgs
parents: 96
diff changeset
   992