contentstorage/castorage/src/casqlitestorage.cpp
author hgs
Tue, 23 Mar 2010 23:17:02 +0200
changeset 85 7feec50967db
child 86 e492551a0d54
permissions -rw-r--r--
201003_02
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
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    17
7feec50967db 201003_02
hgs
parents:
diff changeset
    18
#include <BAUTILS.H>
7feec50967db 201003_02
hgs
parents:
diff changeset
    19
#include "caconsts.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    20
#include "casqlitestorage.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    21
#include "casqlcommands.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    22
#include "casqlquery.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    23
#include "casqlquerycreator.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    24
#include "cainnerentry.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    25
#include "cainnerquery.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    26
#include "caarraycleanup.inl"
7feec50967db 201003_02
hgs
parents:
diff changeset
    27
#include "calocalizationentry.h"
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
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    45
    RFs rfs;
7feec50967db 201003_02
hgs
parents:
diff changeset
    46
    CleanupClosePushL( rfs );
7feec50967db 201003_02
hgs
parents:
diff changeset
    47
    User::LeaveIfError( rfs.Connect() );
7feec50967db 201003_02
hgs
parents:
diff changeset
    48
7feec50967db 201003_02
hgs
parents:
diff changeset
    49
    TFileName privatePathCDriveDb;
7feec50967db 201003_02
hgs
parents:
diff changeset
    50
    User::LeaveIfError( CreatePrivateDirPath( privatePathCDriveDb, KCDrive,
7feec50967db 201003_02
hgs
parents:
diff changeset
    51
            KDbName, rfs ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
    52
7feec50967db 201003_02
hgs
parents:
diff changeset
    53
    TFileName privatePathZDriveDb;
7feec50967db 201003_02
hgs
parents:
diff changeset
    54
    User::LeaveIfError( CreatePrivateDirPath( privatePathZDriveDb, KZDrive,
7feec50967db 201003_02
hgs
parents:
diff changeset
    55
            KDbName, rfs ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
    56
7feec50967db 201003_02
hgs
parents:
diff changeset
    57
    TFileName privatePathCDrive;
7feec50967db 201003_02
hgs
parents:
diff changeset
    58
    User::LeaveIfError( CreatePrivateDirPath( privatePathCDrive, KCDrive,
7feec50967db 201003_02
hgs
parents:
diff changeset
    59
            KNullDesC, rfs ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
    60
7feec50967db 201003_02
hgs
parents:
diff changeset
    61
    if( iSqlDb.Open( privatePathCDriveDb, &KSqlDbConfig ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
    62
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
    63
        if( ( BaflUtils::FileExists( rfs, privatePathCDriveDb ) ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
    64
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
    65
            User::LeaveIfError( BaflUtils::DeleteFile( rfs,
7feec50967db 201003_02
hgs
parents:
diff changeset
    66
                    privatePathCDriveDb ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
    67
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
    68
7feec50967db 201003_02
hgs
parents:
diff changeset
    69
        if( !( BaflUtils::FileExists( rfs, privatePathZDriveDb ) ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
    70
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
    71
            User::Panic( _L("fatal error - castoragedb not exists in ROM"),
7feec50967db 201003_02
hgs
parents:
diff changeset
    72
                    KErrNotFound );
7feec50967db 201003_02
hgs
parents:
diff changeset
    73
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
    74
        else
7feec50967db 201003_02
hgs
parents:
diff changeset
    75
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
    76
            if( !( BaflUtils::FolderExists( rfs, privatePathCDrive ) ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
    77
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
    78
                User::LeaveIfError( rfs.CreatePrivatePath( EDriveC ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
    79
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
    80
            User::LeaveIfError( BaflUtils::CopyFile( rfs,
7feec50967db 201003_02
hgs
parents:
diff changeset
    81
                    privatePathZDriveDb, privatePathCDrive ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
    82
            User::LeaveIfError( rfs.SetAtt( privatePathCDriveDb,
7feec50967db 201003_02
hgs
parents:
diff changeset
    83
                    KEntryAttNormal, KEntryAttReadOnly ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
    84
            User::LeaveIfError( iSqlDb.Open( privatePathCDriveDb,
7feec50967db 201003_02
hgs
parents:
diff changeset
    85
                    &KSqlDbConfig ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
    86
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
    87
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
    88
7feec50967db 201003_02
hgs
parents:
diff changeset
    89
    CleanupStack::PopAndDestroy( &rfs );
7feec50967db 201003_02
hgs
parents:
diff changeset
    90
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    91
7feec50967db 201003_02
hgs
parents:
diff changeset
    92
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    93
// CCASqLiteStorage::NewL()
7feec50967db 201003_02
hgs
parents:
diff changeset
    94
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    95
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    96
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    97
CCaSqLiteStorage* CCaSqLiteStorage::NewL()
7feec50967db 201003_02
hgs
parents:
diff changeset
    98
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    99
    CCaSqLiteStorage* self = CCaSqLiteStorage::NewLC();
7feec50967db 201003_02
hgs
parents:
diff changeset
   100
    CleanupStack::Pop( self );
7feec50967db 201003_02
hgs
parents:
diff changeset
   101
    return self;
7feec50967db 201003_02
hgs
parents:
diff changeset
   102
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   103
7feec50967db 201003_02
hgs
parents:
diff changeset
   104
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   105
// CCASqLiteStorage::NewLC()
7feec50967db 201003_02
hgs
parents:
diff changeset
   106
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   107
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   108
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   109
CCaSqLiteStorage* CCaSqLiteStorage::NewLC()
7feec50967db 201003_02
hgs
parents:
diff changeset
   110
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   111
    CCaSqLiteStorage* self = new ( ELeave ) CCaSqLiteStorage();
7feec50967db 201003_02
hgs
parents:
diff changeset
   112
    CleanupStack::PushL( self );
7feec50967db 201003_02
hgs
parents:
diff changeset
   113
    self->ConstructL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   114
    return self;
7feec50967db 201003_02
hgs
parents:
diff changeset
   115
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   116
7feec50967db 201003_02
hgs
parents:
diff changeset
   117
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   118
// CCASqLiteStorage::~CCpStorageEngine()
7feec50967db 201003_02
hgs
parents:
diff changeset
   119
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   120
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   121
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   122
CCaSqLiteStorage::~CCaSqLiteStorage()
7feec50967db 201003_02
hgs
parents:
diff changeset
   123
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   124
    iSqlDb.Close();
7feec50967db 201003_02
hgs
parents:
diff changeset
   125
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   126
7feec50967db 201003_02
hgs
parents:
diff changeset
   127
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   128
// CCaSqLiteStorage::CreatePrivateDirPath()
7feec50967db 201003_02
hgs
parents:
diff changeset
   129
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   130
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   131
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   132
TInt CCaSqLiteStorage::CreatePrivateDirPath( TFileName& aPrivatePath,
7feec50967db 201003_02
hgs
parents:
diff changeset
   133
        const TDesC& aDrive, const TDesC& aDbName, RFs& aFsSession )
7feec50967db 201003_02
hgs
parents:
diff changeset
   134
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   135
    TInt error( KErrNone );
7feec50967db 201003_02
hgs
parents:
diff changeset
   136
7feec50967db 201003_02
hgs
parents:
diff changeset
   137
#ifdef CONTENT_ARSENAL_STORAGE_UT
7feec50967db 201003_02
hgs
parents:
diff changeset
   138
    TFileName KPathWithoutDrive( KDoubleSlash );
7feec50967db 201003_02
hgs
parents:
diff changeset
   139
#else
7feec50967db 201003_02
hgs
parents:
diff changeset
   140
    TFileName KPathWithoutDrive;
7feec50967db 201003_02
hgs
parents:
diff changeset
   141
    error = aFsSession.PrivatePath( KPathWithoutDrive );
7feec50967db 201003_02
hgs
parents:
diff changeset
   142
    if( error != KErrNone )
7feec50967db 201003_02
hgs
parents:
diff changeset
   143
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   144
        return error;
7feec50967db 201003_02
hgs
parents:
diff changeset
   145
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   146
#endif
7feec50967db 201003_02
hgs
parents:
diff changeset
   147
7feec50967db 201003_02
hgs
parents:
diff changeset
   148
    aPrivatePath.Copy( aDrive );
7feec50967db 201003_02
hgs
parents:
diff changeset
   149
    aPrivatePath.Append( KPathWithoutDrive );
7feec50967db 201003_02
hgs
parents:
diff changeset
   150
    aPrivatePath.Append( aDbName );
7feec50967db 201003_02
hgs
parents:
diff changeset
   151
7feec50967db 201003_02
hgs
parents:
diff changeset
   152
    return error;
7feec50967db 201003_02
hgs
parents:
diff changeset
   153
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   154
7feec50967db 201003_02
hgs
parents:
diff changeset
   155
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   156
// CCASqLiteStorage::GetListL
7feec50967db 201003_02
hgs
parents:
diff changeset
   157
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   158
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   159
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   160
void CCaSqLiteStorage::GetEntriesL( const CCaInnerQuery* aQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   161
        RPointerArray<CCaInnerEntry>& aResultContainer )
7feec50967db 201003_02
hgs
parents:
diff changeset
   162
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   163
    //    Fetch entries from
7feec50967db 201003_02
hgs
parents:
diff changeset
   164
    CCaSqlQuery* sqlGetEntriesQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   165
    CaSqlQueryCreator::CreateGetEntriesQueryL( aQuery, sqlGetEntriesQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   166
    sqlGetEntriesQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   167
    sqlGetEntriesQuery->BindValuesForGetEntriesL( aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   168
    sqlGetEntriesQuery->ExecuteL( aResultContainer, CCaSqlQuery::EEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   169
    CleanupStack::PopAndDestroy( sqlGetEntriesQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   170
7feec50967db 201003_02
hgs
parents:
diff changeset
   171
    //    Populate the entries with their attributes
7feec50967db 201003_02
hgs
parents:
diff changeset
   172
    if( aResultContainer.Count() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   173
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   174
        CCaSqlQuery* sqlGetAttributesQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   175
        CaSqlQueryCreator::CreateGetAttributesQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   176
                aResultContainer.Count(), sqlGetAttributesQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   177
        sqlGetAttributesQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   178
        sqlGetAttributesQuery->BindEntryIdsL( aResultContainer );
7feec50967db 201003_02
hgs
parents:
diff changeset
   179
        sqlGetAttributesQuery->ExecuteL( aResultContainer,
7feec50967db 201003_02
hgs
parents:
diff changeset
   180
                CCaSqlQuery::EAttribute );
7feec50967db 201003_02
hgs
parents:
diff changeset
   181
        CleanupStack::PopAndDestroy( sqlGetAttributesQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   182
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   183
    //  set entries if proper order if they were fetched by ids
7feec50967db 201003_02
hgs
parents:
diff changeset
   184
    if( aQuery->GetIds().Count() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   185
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   186
        SetEntriesInProperOrderL( aQuery->GetIds(), aResultContainer );
7feec50967db 201003_02
hgs
parents:
diff changeset
   187
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   188
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   189
7feec50967db 201003_02
hgs
parents:
diff changeset
   190
void CCaSqLiteStorage::LocalizeEntryL( CCaLocalizationEntry& aLocalization )
7feec50967db 201003_02
hgs
parents:
diff changeset
   191
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   192
    CCaSqlQuery* sqlLocalizeEntryQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   193
    CaSqlQueryCreator::CreateLocalizeEntryQueryL( sqlLocalizeEntryQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   194
    sqlLocalizeEntryQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   195
    sqlLocalizeEntryQuery->BindValuesForLocalizeL( aLocalization );
7feec50967db 201003_02
hgs
parents:
diff changeset
   196
    sqlLocalizeEntryQuery->ExecuteL( );
7feec50967db 201003_02
hgs
parents:
diff changeset
   197
    CleanupStack::PopAndDestroy( sqlLocalizeEntryQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   198
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   199
7feec50967db 201003_02
hgs
parents:
diff changeset
   200
void CCaSqLiteStorage::GetLocalizationsL( RPointerArray<CCaLocalizationEntry>& aResultContainer )
7feec50967db 201003_02
hgs
parents:
diff changeset
   201
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   202
    CCaSqlQuery* sqlGetLocalizationsQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   203
    CaSqlQueryCreator::CreateGetLocalizationsQueryL( sqlGetLocalizationsQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   204
    
7feec50967db 201003_02
hgs
parents:
diff changeset
   205
    sqlGetLocalizationsQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   206
    sqlGetLocalizationsQuery->ExecuteLocalizationsL( aResultContainer );
7feec50967db 201003_02
hgs
parents:
diff changeset
   207
    CleanupStack::PopAndDestroy( sqlGetLocalizationsQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   208
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   209
7feec50967db 201003_02
hgs
parents:
diff changeset
   210
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   211
// CCASqLiteStorage::GetEntriesIdsL
7feec50967db 201003_02
hgs
parents:
diff changeset
   212
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   213
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   214
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   215
void CCaSqLiteStorage::GetEntriesIdsL( const CCaInnerQuery* aQuery, 
7feec50967db 201003_02
hgs
parents:
diff changeset
   216
        RArray<TInt>& aResultIdArray )
7feec50967db 201003_02
hgs
parents:
diff changeset
   217
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   218
    CCaSqlQuery* sqlGetEntriesIdsQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   219
    CaSqlQueryCreator::CreateGetEntriesQueryL( aQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   220
            sqlGetEntriesIdsQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   221
    sqlGetEntriesIdsQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   222
    sqlGetEntriesIdsQuery->BindValuesForGetEntriesL( aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   223
    sqlGetEntriesIdsQuery->ExecuteL( aResultIdArray,
7feec50967db 201003_02
hgs
parents:
diff changeset
   224
            CCaSqlQuery::EEntryTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   225
    CleanupStack::PopAndDestroy( sqlGetEntriesIdsQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   226
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   227
7feec50967db 201003_02
hgs
parents:
diff changeset
   228
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   229
// CCASqLiteStorage::GetEntriesIdsL
7feec50967db 201003_02
hgs
parents:
diff changeset
   230
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   231
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   232
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   233
void CCaSqLiteStorage::GetParentsIdsL( const RArray<TInt>& aEntryIdArray,
7feec50967db 201003_02
hgs
parents:
diff changeset
   234
        RArray<TInt>& aParentIdArray )
7feec50967db 201003_02
hgs
parents:
diff changeset
   235
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   236
    CCaSqlQuery* sqlGetParentIdsQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   237
    CaSqlQueryCreator::CreateGetParentsIdsQueryL( aEntryIdArray,
7feec50967db 201003_02
hgs
parents:
diff changeset
   238
            sqlGetParentIdsQuery, aParentIdArray );
7feec50967db 201003_02
hgs
parents:
diff changeset
   239
    sqlGetParentIdsQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   240
    sqlGetParentIdsQuery->BindIdsL( aEntryIdArray, KSQLGEEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   241
    if( aParentIdArray.Count() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   242
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   243
        sqlGetParentIdsQuery->BindIdsL( aParentIdArray, KSQLGEIdGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   244
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   245
    TInt parentCount = sqlGetParentIdsQuery->ExecuteL( aParentIdArray,
7feec50967db 201003_02
hgs
parents:
diff changeset
   246
            CCaSqlQuery::EGroupTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   247
    CleanupStack::PopAndDestroy( sqlGetParentIdsQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   248
    if( parentCount > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   249
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   250
        GetParentsIdsL( aParentIdArray, aParentIdArray );
7feec50967db 201003_02
hgs
parents:
diff changeset
   251
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   252
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   253
7feec50967db 201003_02
hgs
parents:
diff changeset
   254
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   255
// CCASqLiteStorage::AddL
7feec50967db 201003_02
hgs
parents:
diff changeset
   256
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   257
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   258
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   259
void CCaSqLiteStorage::AddL( CCaInnerEntry* aEntry, TBool aUpdate)
7feec50967db 201003_02
hgs
parents:
diff changeset
   260
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   261
    RPointerArray<CCaSqlQuery> sqlQueries;
7feec50967db 201003_02
hgs
parents:
diff changeset
   262
    CleanupResetAndDestroyPushL( sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   263
7feec50967db 201003_02
hgs
parents:
diff changeset
   264
    CaSqlQueryCreator::CreateAddQueryL( aEntry, sqlQueries, iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   265
7feec50967db 201003_02
hgs
parents:
diff changeset
   266
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   267
    TRAPD( err, ExecuteAddL( aEntry, sqlQueries ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   268
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   269
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   270
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   271
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   272
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   273
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   274
7feec50967db 201003_02
hgs
parents:
diff changeset
   275
    CleanupStack::PopAndDestroy( &sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   276
    
7feec50967db 201003_02
hgs
parents:
diff changeset
   277
    if( aUpdate )
7feec50967db 201003_02
hgs
parents:
diff changeset
   278
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   279
        RemoveFromLocalizationL( aEntry->GetId() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   280
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   281
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   282
7feec50967db 201003_02
hgs
parents:
diff changeset
   283
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   284
// CCASqLiteStorage::RemoveL
7feec50967db 201003_02
hgs
parents:
diff changeset
   285
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   286
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   287
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   288
void CCaSqLiteStorage::RemoveL( const RArray<TInt>& aEntryIds )
7feec50967db 201003_02
hgs
parents:
diff changeset
   289
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   290
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   291
    TRAPD( err, ExecuteRemoveL( aEntryIds ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   292
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   293
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   294
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   295
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   296
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   297
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   298
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   299
7feec50967db 201003_02
hgs
parents:
diff changeset
   300
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   301
// CCASqLiteStorage::OrganizeL( const RArray<TInt>& aEntryIds, 
7feec50967db 201003_02
hgs
parents:
diff changeset
   302
//        TCaOperationParams aParams )
7feec50967db 201003_02
hgs
parents:
diff changeset
   303
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   304
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   305
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   306
void CCaSqLiteStorage::OrganizeL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   307
        TCaOperationParams aParams )
7feec50967db 201003_02
hgs
parents:
diff changeset
   308
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   309
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   310
    TRAPD( err, ExecuteOrganizeL( aEntryIds, aParams ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   311
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   312
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   313
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   314
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   315
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   316
    ExecuteStatementL( KSqlStatementCommit );
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::TouchL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   321
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   322
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   323
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   324
void CCaSqLiteStorage::TouchL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   325
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   326
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   327
    TRAPD( err, ExecuteTouchL( aEntryId ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   328
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   329
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   330
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   331
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   332
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   333
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   334
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   335
7feec50967db 201003_02
hgs
parents:
diff changeset
   336
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   337
// CCASqLiteStorage::DbPropertyL( ( const TDesC& aProperty, TDes& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   338
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   339
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   340
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   341
void CCaSqLiteStorage::DbPropertyL( const TDesC& aProperty,
7feec50967db 201003_02
hgs
parents:
diff changeset
   342
        TDes& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   343
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   344
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   345
    TRAPD( err, ExecuteDbPropertyL( aProperty, aPropertyValue ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   346
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   347
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   348
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   349
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   350
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   351
    ExecuteStatementL( KSqlStatementCommit );
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::SetDBPropertyL( const TDesC& aProperty, const TDesC& aPropertyValue )
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::SetDBPropertyL( const TDesC& aProperty,
7feec50967db 201003_02
hgs
parents:
diff changeset
   360
        const TDesC& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   361
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   362
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   363
    TRAPD( err, ExecuteSetDbPropertyL( aProperty, aPropertyValue ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   364
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   365
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   366
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   367
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   368
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   369
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   370
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   371
7feec50967db 201003_02
hgs
parents:
diff changeset
   372
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   373
// CCaSqLiteStorage::RemoveFromLocalizationL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   374
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   375
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   376
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   377
void CCaSqLiteStorage::RemoveFromLocalizationL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   378
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   379
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   380
    TRAPD( err, ExecuteRemoveFromLocalizationL( aEntryId ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   381
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   382
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   383
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   384
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   385
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   386
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   387
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   388
7feec50967db 201003_02
hgs
parents:
diff changeset
   389
7feec50967db 201003_02
hgs
parents:
diff changeset
   390
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   391
// CCaSqLiteStorage::CustomSortL( const RArray<TInt>& aEntryIds, const TInt aGroupId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   392
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   393
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   394
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   395
void CCaSqLiteStorage::CustomSortL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   396
        const TInt aGroupId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   397
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   398
    RPointerArray<CCaSqlQuery> sqlQueries;
7feec50967db 201003_02
hgs
parents:
diff changeset
   399
    CleanupResetAndDestroyPushL( sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   400
7feec50967db 201003_02
hgs
parents:
diff changeset
   401
    CaSqlQueryCreator::CreateCustomSortQueryL( aEntryIds, sqlQueries, iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   402
7feec50967db 201003_02
hgs
parents:
diff changeset
   403
    ExecuteStatementL( KSqlStatementBegin );
7feec50967db 201003_02
hgs
parents:
diff changeset
   404
    TRAPD( err, ExecuteCustomSortL( aEntryIds, aGroupId, sqlQueries ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   405
    if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   406
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   407
        ExecuteStatementL( KSqlStatementRollback );
7feec50967db 201003_02
hgs
parents:
diff changeset
   408
        User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   409
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   410
    ExecuteStatementL( KSqlStatementCommit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   411
7feec50967db 201003_02
hgs
parents:
diff changeset
   412
    CleanupStack::PopAndDestroy( &sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   413
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   414
7feec50967db 201003_02
hgs
parents:
diff changeset
   415
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   416
// CCaSqLiteStorage::ExecuteCustomSortL( const RArray<TInt>& aEntryIds, const TInt aGroupId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   417
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   418
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   419
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   420
void CCaSqLiteStorage::ExecuteCustomSortL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   421
        const TInt aGroupId , RPointerArray<CCaSqlQuery>& aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   422
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   423
    for( TInt i = 0; i < aSqlQuery.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   424
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   425
        TInt newPosition = i + 1;
7feec50967db 201003_02
hgs
parents:
diff changeset
   426
        TInt entryId = aEntryIds[i];
7feec50967db 201003_02
hgs
parents:
diff changeset
   427
        
7feec50967db 201003_02
hgs
parents:
diff changeset
   428
        aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   429
        aSqlQuery[i]->BindValuesForCustomSortL( aGroupId, entryId, newPosition );
7feec50967db 201003_02
hgs
parents:
diff changeset
   430
        aSqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   431
        aSqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   432
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   433
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   434
7feec50967db 201003_02
hgs
parents:
diff changeset
   435
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   436
// CCaSqLiteStorage::ExecuteRemoveFromLocalizationL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   437
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   438
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   439
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   440
void CCaSqLiteStorage::ExecuteRemoveFromLocalizationL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   441
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   442
    CCaSqlQuery* query = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   443
    query->SetQueryL( KSQLDeleteLocalizationTextWhereEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   444
    query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   445
    query->BindValuesForRemoveFromLocalizationL( aEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   446
    query->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   447
    CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   448
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   449
7feec50967db 201003_02
hgs
parents:
diff changeset
   450
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   451
// CCASqLiteStorage::ExecuteStatementL( const TDesC& aStatement )
7feec50967db 201003_02
hgs
parents:
diff changeset
   452
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   453
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   454
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   455
void CCaSqLiteStorage::ExecuteStatementL( const TDesC& aStatement )
7feec50967db 201003_02
hgs
parents:
diff changeset
   456
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   457
    CCaSqlQuery* query = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   458
    query->SetQueryL( aStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   459
    query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   460
    query->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   461
    CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   462
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   463
7feec50967db 201003_02
hgs
parents:
diff changeset
   464
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   465
// CCASqLiteStorage::ExecuteAddL(CCaInnerEntry* aEntry, 
7feec50967db 201003_02
hgs
parents:
diff changeset
   466
//         RPointerArray<CCASqlQuery>& sqlQuery)
7feec50967db 201003_02
hgs
parents:
diff changeset
   467
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   468
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   469
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   470
void CCaSqLiteStorage::ExecuteAddL( CCaInnerEntry* aEntry, 
7feec50967db 201003_02
hgs
parents:
diff changeset
   471
        RPointerArray<CCaSqlQuery>& aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   472
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   473
    TBool isAttributeDeleted( EFalse );
7feec50967db 201003_02
hgs
parents:
diff changeset
   474
    for( TInt i = 0; i < aSqlQuery.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   475
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   476
        if( aSqlQuery[i]->Type() == CCaSqlQuery::EIconTable )
7feec50967db 201003_02
hgs
parents:
diff changeset
   477
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   478
            //check if icon exists - just update
7feec50967db 201003_02
hgs
parents:
diff changeset
   479
            CCaSqlQuery* query = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   480
            query->SetQueryL( KSQLGetIconId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   481
            query->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   482
            query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   483
            query->BindValuesForGetIconL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   484
            CCaInnerEntry::TIconAttributes iconAttributes;
7feec50967db 201003_02
hgs
parents:
diff changeset
   485
            TInt countIcons = query->ExecuteL( iconAttributes );
7feec50967db 201003_02
hgs
parents:
diff changeset
   486
            CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   487
   
7feec50967db 201003_02
hgs
parents:
diff changeset
   488
            aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   489
            aSqlQuery[i]->BindValuesForAddL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   490
            TInt tmpId( 0 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   491
            TRAPD( err, tmpId = aSqlQuery[i]->ExecuteL() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   492
            aSqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   493
            if( !countIcons && !aEntry->GetIconId() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   494
                { // new icon added
7feec50967db 201003_02
hgs
parents:
diff changeset
   495
                aEntry->SetIconId( tmpId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   496
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   497
7feec50967db 201003_02
hgs
parents:
diff changeset
   498
            if( err == KSqlErrConstraint )
7feec50967db 201003_02
hgs
parents:
diff changeset
   499
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   500
                // ignore, this means that the icon cannot be removed
7feec50967db 201003_02
hgs
parents:
diff changeset
   501
                // because some other entry has the same icon.
7feec50967db 201003_02
hgs
parents:
diff changeset
   502
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   503
            else if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   504
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   505
                User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   506
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   507
7feec50967db 201003_02
hgs
parents:
diff changeset
   508
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   509
        else if( aSqlQuery[i]->Type() == CCaSqlQuery::EEntryTable )
7feec50967db 201003_02
hgs
parents:
diff changeset
   510
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   511
            aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   512
            aSqlQuery[i]->BindValuesForAddL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   513
            TInt tmpId = aSqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   514
            aSqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   515
            if( !aEntry->GetId() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   516
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   517
                // new entry added
7feec50967db 201003_02
hgs
parents:
diff changeset
   518
                aEntry->SetId( tmpId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   519
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   520
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   521
        else if( !isAttributeDeleted
7feec50967db 201003_02
hgs
parents:
diff changeset
   522
                && aSqlQuery[i]->Type() == CCaSqlQuery::EAttributeTable )
7feec50967db 201003_02
hgs
parents:
diff changeset
   523
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   524
            // delete all entry's attributes, just ones
7feec50967db 201003_02
hgs
parents:
diff changeset
   525
            aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   526
            aSqlQuery[i]->BindEntryIdL( aEntry->GetId() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   527
            aSqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   528
            aSqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   529
            isAttributeDeleted = ETrue;
7feec50967db 201003_02
hgs
parents:
diff changeset
   530
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   531
        else if( aSqlQuery[i]->Type()==CCaSqlQuery::EAttributeTable )
7feec50967db 201003_02
hgs
parents:
diff changeset
   532
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   533
            // add new attribute(s) if it's neccesery
7feec50967db 201003_02
hgs
parents:
diff changeset
   534
            aSqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   535
            for( TInt k(0); k < aEntry->GetAttributes().Count(); k++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   536
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   537
                // if(id_entry, name) exist it'll replaced by new value
7feec50967db 201003_02
hgs
parents:
diff changeset
   538
                aSqlQuery[i]->BindValuesForAddAttributeL( aEntry,
7feec50967db 201003_02
hgs
parents:
diff changeset
   539
                        aEntry->GetAttributes()[k] );
7feec50967db 201003_02
hgs
parents:
diff changeset
   540
                aSqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   541
                aSqlQuery[i]->ResetStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   542
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   543
            aSqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   544
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   545
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   546
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   547
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   548
// CCASqLiteStorage::ExecuteRemoveL( const RArray<TInt>& aEntryIds)
7feec50967db 201003_02
hgs
parents:
diff changeset
   549
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   550
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   551
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   552
void CCaSqLiteStorage::ExecuteRemoveL( const RArray<TInt>& aEntryIds )
7feec50967db 201003_02
hgs
parents:
diff changeset
   553
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   554
    for( int i=0; i<aEntryIds.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   555
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   556
        // check if entry exist in database
7feec50967db 201003_02
hgs
parents:
diff changeset
   557
        CCaSqlQuery* queryEntry = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   558
        queryEntry->SetQueryL( KSQLGetEntryIdFromEntryTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   559
        queryEntry->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   560
        queryEntry->BindEntryIdL( aEntryIds[i] );
7feec50967db 201003_02
hgs
parents:
diff changeset
   561
        TInt entryCount( 0 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   562
        queryEntry->ExecuteL( entryCount );
7feec50967db 201003_02
hgs
parents:
diff changeset
   563
        CleanupStack::PopAndDestroy( queryEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   564
        if( !entryCount )
7feec50967db 201003_02
hgs
parents:
diff changeset
   565
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   566
            User::Leave( KErrNotFound );
7feec50967db 201003_02
hgs
parents:
diff changeset
   567
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   568
7feec50967db 201003_02
hgs
parents:
diff changeset
   569
        // SELECT Id_Icon FROM CA_ENTRY WHERE Id = aEntryId;
7feec50967db 201003_02
hgs
parents:
diff changeset
   570
        CCaSqlQuery* queryIconId = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   571
        queryIconId->SetQueryL( KSQLGETIconIdFromEntryTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   572
        queryIconId->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   573
        queryIconId->BindEntryIdL( aEntryIds[i] );
7feec50967db 201003_02
hgs
parents:
diff changeset
   574
        TInt iconId( 0 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   575
        queryIconId->ExecuteL( iconId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   576
        CleanupStack::PopAndDestroy( queryIconId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   577
7feec50967db 201003_02
hgs
parents:
diff changeset
   578
        RPointerArray<CCaSqlQuery> sqlQuery;
7feec50967db 201003_02
hgs
parents:
diff changeset
   579
        CleanupResetAndDestroyPushL( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   580
        CaSqlQueryCreator::CreateRemoveQueryL( sqlQuery, iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   581
        for( TInt j = 0; j < sqlQuery.Count(); j++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   582
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   583
            if( !( sqlQuery[j]->Type() == CCaSqlQuery::EIconTable &&
7feec50967db 201003_02
hgs
parents:
diff changeset
   584
                    iconId == 0 ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
   585
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   586
                sqlQuery[j]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   587
                sqlQuery[j]->BindValuesForRemoveL( aEntryIds[i], iconId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   588
                TRAPD( err, sqlQuery[j]->ExecuteL() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   589
                sqlQuery[j]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   590
7feec50967db 201003_02
hgs
parents:
diff changeset
   591
                if( sqlQuery[j]->Type() == CCaSqlQuery::EIconTable &&
7feec50967db 201003_02
hgs
parents:
diff changeset
   592
                        err == KSqlErrConstraint )
7feec50967db 201003_02
hgs
parents:
diff changeset
   593
                    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   594
                    // ignore, this means that the icon cannot be removed
7feec50967db 201003_02
hgs
parents:
diff changeset
   595
                    // because some other entry has the same icon.
7feec50967db 201003_02
hgs
parents:
diff changeset
   596
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   597
                else if( err )
7feec50967db 201003_02
hgs
parents:
diff changeset
   598
                    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   599
                    User::Leave( err );
7feec50967db 201003_02
hgs
parents:
diff changeset
   600
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   601
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   602
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   603
        CleanupStack::PopAndDestroy( &sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   604
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   605
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   606
7feec50967db 201003_02
hgs
parents:
diff changeset
   607
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   608
// CCASqLiteStorage::ExecuteOrganizeL(const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   609
//      TCaOperationParams aParams)
7feec50967db 201003_02
hgs
parents:
diff changeset
   610
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   611
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   612
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   613
void CCaSqLiteStorage::ExecuteOrganizeL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   614
        TCaOperationParams aParams )
7feec50967db 201003_02
hgs
parents:
diff changeset
   615
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   616
    VerifyOrganizeParamsL( aEntryIds, aParams );
7feec50967db 201003_02
hgs
parents:
diff changeset
   617
7feec50967db 201003_02
hgs
parents:
diff changeset
   618
    RPointerArray<CCaSqlQuery> sqlQueries;
7feec50967db 201003_02
hgs
parents:
diff changeset
   619
    CleanupResetAndDestroyPushL( sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   620
7feec50967db 201003_02
hgs
parents:
diff changeset
   621
    TBool revereseInsertOrder = CaSqlQueryCreator::CreateOrganizeQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   622
            aEntryIds, aParams, iSqlDb, sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   623
7feec50967db 201003_02
hgs
parents:
diff changeset
   624
    for( TInt i = 0; i < sqlQueries.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   625
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   626
        switch( sqlQueries[i]->Type() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   627
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   628
            case CCaSqlQuery::EGroupTableRemove:
7feec50967db 201003_02
hgs
parents:
diff changeset
   629
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   630
                sqlQueries[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   631
                sqlQueries[i]->BindValuesForOrganizeL( aEntryIds, aParams );
7feec50967db 201003_02
hgs
parents:
diff changeset
   632
                sqlQueries[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   633
                sqlQueries[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   634
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   635
                break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   636
7feec50967db 201003_02
hgs
parents:
diff changeset
   637
            case CCaSqlQuery::EGroupTableInsert:
7feec50967db 201003_02
hgs
parents:
diff changeset
   638
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   639
                sqlQueries[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   640
                for( TInt j = 0; j < aEntryIds.Count(); j++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   641
                    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   642
                    TInt k = (revereseInsertOrder) ? 
7feec50967db 201003_02
hgs
parents:
diff changeset
   643
                        (aEntryIds.Count() - 1) - j : j;
7feec50967db 201003_02
hgs
parents:
diff changeset
   644
                    sqlQueries[i]->BindValuesForOrganizeL( 
7feec50967db 201003_02
hgs
parents:
diff changeset
   645
                            aEntryIds, aParams, aEntryIds[k] );
7feec50967db 201003_02
hgs
parents:
diff changeset
   646
                    sqlQueries[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   647
                    sqlQueries[i]->ResetStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   648
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   649
                sqlQueries[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   650
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   651
                break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   652
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   653
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   654
7feec50967db 201003_02
hgs
parents:
diff changeset
   655
    CleanupStack::PopAndDestroy( &sqlQueries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   656
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   657
7feec50967db 201003_02
hgs
parents:
diff changeset
   658
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   659
// CCASqLiteStorage::ExecuteTouchL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   660
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   661
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   662
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   663
void CCaSqLiteStorage::ExecuteTouchL( const TInt aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   664
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   665
    RPointerArray<CCaSqlQuery> sqlQuery;
7feec50967db 201003_02
hgs
parents:
diff changeset
   666
    CleanupResetAndDestroyPushL( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   667
7feec50967db 201003_02
hgs
parents:
diff changeset
   668
    CaSqlQueryCreator::CreateTouchQueryL( sqlQuery, iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   669
7feec50967db 201003_02
hgs
parents:
diff changeset
   670
    TTime time;
7feec50967db 201003_02
hgs
parents:
diff changeset
   671
    time.UniversalTime();
7feec50967db 201003_02
hgs
parents:
diff changeset
   672
7feec50967db 201003_02
hgs
parents:
diff changeset
   673
    for( TInt i = 0; i < sqlQuery.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   674
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   675
        sqlQuery[i]->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   676
        sqlQuery[i]->BindValuesForLaunchL( aEntryId, time.Int64() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   677
        sqlQuery[i]->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   678
        sqlQuery[i]->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   679
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   680
7feec50967db 201003_02
hgs
parents:
diff changeset
   681
    CleanupStack::PopAndDestroy( &sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   682
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   683
7feec50967db 201003_02
hgs
parents:
diff changeset
   684
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   685
// ExecuteDbPropertyL( const TDesC& aProperty, TDes& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   686
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   687
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   688
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   689
void CCaSqLiteStorage::ExecuteDbPropertyL( const TDesC& aProperty,
7feec50967db 201003_02
hgs
parents:
diff changeset
   690
        TDes& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   691
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   692
    CCaSqlQuery* sqlQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   693
    sqlQuery->SetQueryL( KSQLGetProperty );
7feec50967db 201003_02
hgs
parents:
diff changeset
   694
    sqlQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   695
    sqlQuery->BindValuesForPropertyL( aProperty );
7feec50967db 201003_02
hgs
parents:
diff changeset
   696
    sqlQuery->ExecutePropertyL( aPropertyValue );
7feec50967db 201003_02
hgs
parents:
diff changeset
   697
    sqlQuery->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   698
    CleanupStack::PopAndDestroy( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   699
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   700
7feec50967db 201003_02
hgs
parents:
diff changeset
   701
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   702
// ExecuteSetDbPropertyL( const TDesC& aProperty, const TDesC& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   703
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   704
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   705
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   706
void CCaSqLiteStorage::ExecuteSetDbPropertyL( const TDesC& aProperty,
7feec50967db 201003_02
hgs
parents:
diff changeset
   707
        const TDesC& aPropertyValue )
7feec50967db 201003_02
hgs
parents:
diff changeset
   708
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   709
    CCaSqlQuery* sqlQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   710
    sqlQuery->SetQueryL( KSQLUpdateProperty );
7feec50967db 201003_02
hgs
parents:
diff changeset
   711
    sqlQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   712
    sqlQuery->BindValuesForPropertyUpdateL( aProperty, aPropertyValue );
7feec50967db 201003_02
hgs
parents:
diff changeset
   713
    sqlQuery->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   714
    sqlQuery->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   715
    CleanupStack::PopAndDestroy( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   716
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   717
7feec50967db 201003_02
hgs
parents:
diff changeset
   718
7feec50967db 201003_02
hgs
parents:
diff changeset
   719
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   720
// CCASqLiteStorage::RemoveOldEntriesFromLaunchTableL( TInt aDays )
7feec50967db 201003_02
hgs
parents:
diff changeset
   721
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   722
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   723
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   724
void CCaSqLiteStorage::RemoveOldEntriesFromLaunchTableL( TInt aDays )
7feec50967db 201003_02
hgs
parents:
diff changeset
   725
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   726
    TTime presentTime;
7feec50967db 201003_02
hgs
parents:
diff changeset
   727
    presentTime.UniversalTime();
7feec50967db 201003_02
hgs
parents:
diff changeset
   728
    TTime borderTime = presentTime - ( TTimeIntervalDays( aDays ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   729
7feec50967db 201003_02
hgs
parents:
diff changeset
   730
    CCaSqlQuery* sqlQuery = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   731
    sqlQuery->SetQueryL( KSQLDeleteOldFromLaunch );
7feec50967db 201003_02
hgs
parents:
diff changeset
   732
    sqlQuery->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   733
    sqlQuery->BindValuesForLaunchL( 0, borderTime.Int64() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   734
    sqlQuery->ExecuteL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   735
7feec50967db 201003_02
hgs
parents:
diff changeset
   736
    CleanupStack::PopAndDestroy( sqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   737
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   738
7feec50967db 201003_02
hgs
parents:
diff changeset
   739
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   740
// CCASqLiteStorage::VerifyOrganizeParamsL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   741
//      TCaOperationParams aParams);
7feec50967db 201003_02
hgs
parents:
diff changeset
   742
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   743
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   744
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   745
void CCaSqLiteStorage::VerifyOrganizeParamsL( const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   746
        TCaOperationParams aParams )
7feec50967db 201003_02
hgs
parents:
diff changeset
   747
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   748
    switch( aParams.iOperationType )
7feec50967db 201003_02
hgs
parents:
diff changeset
   749
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   750
        case TCaOperationParams::ERemove:
7feec50967db 201003_02
hgs
parents:
diff changeset
   751
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   752
            CCaSqlQuery * query = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   753
            CaSqlQueryCreator::PopulateQueryWithIdListL( aEntryIds.Count(),
7feec50967db 201003_02
hgs
parents:
diff changeset
   754
                    query, KSQLOrganizeGetEntryIdCountFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   755
7feec50967db 201003_02
hgs
parents:
diff changeset
   756
            query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   757
            query->BindValuesForOrganizeL( aEntryIds, aParams );
7feec50967db 201003_02
hgs
parents:
diff changeset
   758
            TInt dbEntryCount;
7feec50967db 201003_02
hgs
parents:
diff changeset
   759
            query->ExecuteL( dbEntryCount );
7feec50967db 201003_02
hgs
parents:
diff changeset
   760
            query->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   761
            if( dbEntryCount < aEntryIds.Count() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   762
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   763
                User::Leave( KErrArgument );
7feec50967db 201003_02
hgs
parents:
diff changeset
   764
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   765
7feec50967db 201003_02
hgs
parents:
diff changeset
   766
            CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   767
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   768
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   769
        case TCaOperationParams::EInsert:
7feec50967db 201003_02
hgs
parents:
diff changeset
   770
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   771
            CCaSqlQuery * query = CCaSqlQuery::NewLC( iSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   772
            CaSqlQueryCreator::PopulateQueryWithIdListL( 1, query,
7feec50967db 201003_02
hgs
parents:
diff changeset
   773
                    KSQLOrganizeGetEntryIdCountFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   774
            RArray<TInt> id;
7feec50967db 201003_02
hgs
parents:
diff changeset
   775
            CleanupClosePushL( id );
7feec50967db 201003_02
hgs
parents:
diff changeset
   776
            id.AppendL( aParams.iBeforeEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   777
7feec50967db 201003_02
hgs
parents:
diff changeset
   778
            query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   779
            query->BindValuesForOrganizeL( id, aParams );
7feec50967db 201003_02
hgs
parents:
diff changeset
   780
            TInt dbEntryCount;
7feec50967db 201003_02
hgs
parents:
diff changeset
   781
            query->ExecuteL( dbEntryCount );
7feec50967db 201003_02
hgs
parents:
diff changeset
   782
            query->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   783
            if( dbEntryCount == 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   784
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   785
                User::Leave( KErrArgument );
7feec50967db 201003_02
hgs
parents:
diff changeset
   786
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   787
7feec50967db 201003_02
hgs
parents:
diff changeset
   788
            CleanupStack::PopAndDestroy( &id );
7feec50967db 201003_02
hgs
parents:
diff changeset
   789
            CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   790
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   791
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   792
        case TCaOperationParams::EPrepend:
7feec50967db 201003_02
hgs
parents:
diff changeset
   793
        case TCaOperationParams::EAppend:
7feec50967db 201003_02
hgs
parents:
diff changeset
   794
        default:
7feec50967db 201003_02
hgs
parents:
diff changeset
   795
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   796
            //            TODO: do nothing when default
7feec50967db 201003_02
hgs
parents:
diff changeset
   797
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   798
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   799
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   800
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   801
7feec50967db 201003_02
hgs
parents:
diff changeset
   802
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   803
// CCASqLiteStorage::SetEntriesInProperOrderL
7feec50967db 201003_02
hgs
parents:
diff changeset
   804
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   805
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   806
void CCaSqLiteStorage::SetEntriesInProperOrderL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   807
        const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   808
        RPointerArray<CCaInnerEntry>& aResultContainer )
7feec50967db 201003_02
hgs
parents:
diff changeset
   809
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   810
    for( TInt i = 0; i < aEntryIds.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   811
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   812
        for( TInt j = i + 1; j < aResultContainer.Count(); j++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   813
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   814
            if( aEntryIds[i] == aResultContainer[j]->GetId() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   815
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   816
                CCaInnerEntry* temporary( NULL );
7feec50967db 201003_02
hgs
parents:
diff changeset
   817
                temporary = aResultContainer[i];
7feec50967db 201003_02
hgs
parents:
diff changeset
   818
                aResultContainer[i] = aResultContainer[j];
7feec50967db 201003_02
hgs
parents:
diff changeset
   819
                aResultContainer[j] = temporary;
7feec50967db 201003_02
hgs
parents:
diff changeset
   820
                break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   821
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   822
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   823
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   824
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   825