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