contentstorage/castorage/src/casqlquerycreator.cpp
author hgs
Tue, 23 Mar 2010 23:28:12 +0200
changeset 86 e492551a0d54
parent 85 7feec50967db
child 61 8e5041d13c84
child 88 7f0462e8c3da
permissions -rw-r--r--
201005
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: CASqlQueryCreator implementation
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 <e32cmn.h>
7feec50967db 201003_02
hgs
parents:
diff changeset
    19
#include <badesca.h>
7feec50967db 201003_02
hgs
parents:
diff changeset
    20
7feec50967db 201003_02
hgs
parents:
diff changeset
    21
#include "casqlquerycreator.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    22
#include "casqlcommands.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    23
#include "cainnerentry.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    24
#include "cainnerquery.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    25
#include "caarraycleanup.inl"
7feec50967db 201003_02
hgs
parents:
diff changeset
    26
#include "casqlquery.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    27
#include "cadebug.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    28
#include "cadef.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    29
#include "caoperationparams.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    30
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
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    35
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    36
void CaSqlQueryCreator::CreateAddQueryL( CCaInnerEntry* aEntry,
7feec50967db 201003_02
hgs
parents:
diff changeset
    37
        RPointerArray<CCaSqlQuery>& aSqlQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
    38
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    39
    DEBUG(("_CA_:CASqlQueryCreator::CreateAddQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
    40
    CCaSqlQuery* queryIcon = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
    41
    
7feec50967db 201003_02
hgs
parents:
diff changeset
    42
    TIconType iconType = CaSqlQueryCreator::CheckIconType( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
    43
    
7feec50967db 201003_02
hgs
parents:
diff changeset
    44
    if( iconType == EProperIcon )
7feec50967db 201003_02
hgs
parents:
diff changeset
    45
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
    46
        CreateAddIconQueryL( aEntry, queryIcon, aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
    47
        //add new icon to DB
7feec50967db 201003_02
hgs
parents:
diff changeset
    48
        aSqlQuery.AppendL( queryIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
    49
        CleanupStack::Pop( queryIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
    50
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
    51
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
    52
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
    53
        // icon added to DB by another entry or not added
7feec50967db 201003_02
hgs
parents:
diff changeset
    54
        CleanupStack::PopAndDestroy( queryIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
    55
        queryIcon = NULL;
7feec50967db 201003_02
hgs
parents:
diff changeset
    56
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
    57
7feec50967db 201003_02
hgs
parents:
diff changeset
    58
    if( aEntry->GetId() != -1 )
7feec50967db 201003_02
hgs
parents:
diff changeset
    59
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
    60
        // check if entry is new and has to be added to DB or just updated
7feec50967db 201003_02
hgs
parents:
diff changeset
    61
        CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
    62
        if( aEntry->GetId() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
    63
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
    64
            //Update query is faster than replace query
7feec50967db 201003_02
hgs
parents:
diff changeset
    65
            CreateUpdateQueryEntryL( aEntry, query );
7feec50967db 201003_02
hgs
parents:
diff changeset
    66
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
    67
        else
7feec50967db 201003_02
hgs
parents:
diff changeset
    68
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
    69
            // check if entry's Uid was set
7feec50967db 201003_02
hgs
parents:
diff changeset
    70
            if( aEntry->GetUid() == 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
    71
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
    72
                if( ( aEntry->GetIconId() == 0 ) && ( queryIcon == NULL ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
    73
                    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    74
                    query->SetQueryL( 
7feec50967db 201003_02
hgs
parents:
diff changeset
    75
                            KSQLInsertToEntryUniqueUidWithoutIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
    76
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    77
                else
7feec50967db 201003_02
hgs
parents:
diff changeset
    78
                    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    79
                    query->SetQueryL( KSQLInsertToEntryUniqueUid );
7feec50967db 201003_02
hgs
parents:
diff changeset
    80
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    81
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
    82
            else
7feec50967db 201003_02
hgs
parents:
diff changeset
    83
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
    84
                if( ( aEntry->GetIconId() == 0 ) && ( queryIcon == NULL ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
    85
                    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    86
                    query->SetQueryL( KSQLInsertToEntryWithoutIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
    87
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    88
                else
7feec50967db 201003_02
hgs
parents:
diff changeset
    89
                    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    90
                    query->SetQueryL( KSQLInsertToEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
    91
                    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    92
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
    93
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
    94
        query->SetTableType( CCaSqlQuery::EEntryTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
    95
        aSqlQuery.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
    96
        CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
    97
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
    98
    // remove all entry's attributs from DB
7feec50967db 201003_02
hgs
parents:
diff changeset
    99
    CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   100
    query->SetQueryL( KSQLDeleteAttribute );
7feec50967db 201003_02
hgs
parents:
diff changeset
   101
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   102
    query->SetTableType( CCaSqlQuery::EAttributeTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   103
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   104
7feec50967db 201003_02
hgs
parents:
diff changeset
   105
    if( aEntry->GetAttributes().Count() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   106
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   107
        CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   108
        query->SetQueryL( KSQLInsertToAttribute );
7feec50967db 201003_02
hgs
parents:
diff changeset
   109
        aSqlQuery.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   110
        query->SetTableType( CCaSqlQuery::EAttributeTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   111
        CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   112
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   113
    
7feec50967db 201003_02
hgs
parents:
diff changeset
   114
    if( iconType == ENullIconToRemove )
7feec50967db 201003_02
hgs
parents:
diff changeset
   115
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   116
        RBuf queryRemoveIcon;
7feec50967db 201003_02
hgs
parents:
diff changeset
   117
        queryRemoveIcon.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   118
        queryRemoveIcon.CreateL( KSQLDeleteIconWhereIconId().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   119
        queryRemoveIcon.Append( KSQLDeleteIconWhereIconId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   120
        queryRemoveIcon.ReAllocL( KSQLDeleteIconWhereIconId().Length() + KMaxIntNumLength );
7feec50967db 201003_02
hgs
parents:
diff changeset
   121
        queryRemoveIcon.AppendNum( aEntry->GetIconId() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   122
        
7feec50967db 201003_02
hgs
parents:
diff changeset
   123
        CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   124
        query->SetQueryL( queryRemoveIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   125
        aSqlQuery.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   126
        query->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   127
        
7feec50967db 201003_02
hgs
parents:
diff changeset
   128
        CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   129
        CleanupStack::PopAndDestroy( &queryRemoveIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   130
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   131
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   132
7feec50967db 201003_02
hgs
parents:
diff changeset
   133
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   134
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   135
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   136
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   137
void CaSqlQueryCreator::CreateUpdateQueryEntryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   138
        const CCaInnerEntry* aEntry, CCaSqlQuery* aQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   139
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   140
    DEBUG( ("_CA_:CASqlQueryCreator::CreateUpdateQueryEntryL") );
7feec50967db 201003_02
hgs
parents:
diff changeset
   141
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   142
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   143
    query.CreateL( KSQLUpdateEntry().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   144
    query.Append( KSQLUpdateEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   145
    // text
7feec50967db 201003_02
hgs
parents:
diff changeset
   146
    if( aEntry->GetText().Length() != 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   147
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   148
        query.ReAllocL( query.Length() + KSQLUpdateEntryText().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   149
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   150
        query.Append( KSQLUpdateEntryText );
7feec50967db 201003_02
hgs
parents:
diff changeset
   151
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   152
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   153
    // description
7feec50967db 201003_02
hgs
parents:
diff changeset
   154
    query.ReAllocL( query.Length() + KSQLUpdateEntryDescription().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   155
            + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   156
    query.Append( KSQLUpdateEntryDescription );
7feec50967db 201003_02
hgs
parents:
diff changeset
   157
    query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   158
    // role
7feec50967db 201003_02
hgs
parents:
diff changeset
   159
    query.ReAllocL( query.Length() + KSQLUpdateEntryRole().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   160
            + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   161
    query.Append( KSQLUpdateEntryRole );
7feec50967db 201003_02
hgs
parents:
diff changeset
   162
    query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   163
    // type_name
7feec50967db 201003_02
hgs
parents:
diff changeset
   164
    if( aEntry->GetEntryTypeName().Length() != 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   165
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   166
        query.ReAllocL( query.Length() + KSQLUpdateEntryTypeName().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   167
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   168
        query.Append( KSQLUpdateEntryTypeName );
7feec50967db 201003_02
hgs
parents:
diff changeset
   169
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   170
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   171
    // id_icon
7feec50967db 201003_02
hgs
parents:
diff changeset
   172
    TIconType iconType = CaSqlQueryCreator::CheckIconType( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   173
    if( iconType == ENullIconToRemove || iconType == ENullIcon )
7feec50967db 201003_02
hgs
parents:
diff changeset
   174
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   175
        query.ReAllocL( query.Length( ) + 
7feec50967db 201003_02
hgs
parents:
diff changeset
   176
                KSQLUpdateEntryIdIconNull().Length() + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   177
        query.Append( KSQLUpdateEntryIdIconNull );
7feec50967db 201003_02
hgs
parents:
diff changeset
   178
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   179
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   180
        { 
7feec50967db 201003_02
hgs
parents:
diff changeset
   181
        query.ReAllocL( query.Length( ) + KSQLUpdateEntryIdIcon().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   182
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   183
        query.Append( KSQLUpdateEntryIdIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   184
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   185
    query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   186
    // check if entry's Uid was set
7feec50967db 201003_02
hgs
parents:
diff changeset
   187
    if( aEntry->GetUid() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   188
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   189
        query.ReAllocL( query.Length() + KSQLUpdateEntryUid().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   190
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   191
        query.Append( KSQLUpdateEntryUid );
7feec50967db 201003_02
hgs
parents:
diff changeset
   192
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   193
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   194
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   195
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   196
        query.ReAllocL( query.Length() + KSQLUpdateEntryUidNULL().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   197
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   198
        query.Append( KSQLUpdateEntryUidNULL );
7feec50967db 201003_02
hgs
parents:
diff changeset
   199
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   200
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   201
    //flags
7feec50967db 201003_02
hgs
parents:
diff changeset
   202
    query.ReAllocL( query.Length() + KSQLUpdateEntryFlags().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   203
            + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   204
    query.Append( KSQLUpdateEntryFlags );
7feec50967db 201003_02
hgs
parents:
diff changeset
   205
7feec50967db 201003_02
hgs
parents:
diff changeset
   206
    query.ReAllocL( query.Length() + KSQLUpdateWhere().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   207
    query.Append( KSQLUpdateWhere );
7feec50967db 201003_02
hgs
parents:
diff changeset
   208
7feec50967db 201003_02
hgs
parents:
diff changeset
   209
    aQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   210
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   211
    }
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
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   216
void CaSqlQueryCreator::CreateAddIconQueryForNewL( CCaInnerEntry* aEntry,
7feec50967db 201003_02
hgs
parents:
diff changeset
   217
        CCaSqlQuery* aQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   218
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   219
    DEBUG( ("_CA_:CASqlQueryCreator::CreateAddIconQueryForNewL") );
7feec50967db 201003_02
hgs
parents:
diff changeset
   220
    CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   221
    query->SetQueryL( KSQLGetIconId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   222
    query->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   223
7feec50967db 201003_02
hgs
parents:
diff changeset
   224
    query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   225
    query->BindValuesForGetIconL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   226
    TInt idIcon( 0 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   227
    query->ExecuteL( idIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   228
    CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   229
7feec50967db 201003_02
hgs
parents:
diff changeset
   230
    if( idIcon == 0 )  
7feec50967db 201003_02
hgs
parents:
diff changeset
   231
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   232
        // entry's icon data is not in DB
7feec50967db 201003_02
hgs
parents:
diff changeset
   233
        if( ( aEntry->GetIcon().iFileName.Length() != 0 ) ||
7feec50967db 201003_02
hgs
parents:
diff changeset
   234
             ( aEntry->GetIcon().iBitmapId != 0 ) ||
7feec50967db 201003_02
hgs
parents:
diff changeset
   235
             ( aEntry->GetIcon().iMaskId != 0 ) ||
7feec50967db 201003_02
hgs
parents:
diff changeset
   236
             ( aEntry->GetIcon().iSkinMajorId != 0 ) ||
7feec50967db 201003_02
hgs
parents:
diff changeset
   237
             ( aEntry->GetIcon().iSkinMinorId != 0 ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
   238
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   239
            // icon is not null, so that insert it to storage
7feec50967db 201003_02
hgs
parents:
diff changeset
   240
            aQuery->SetQueryL( KSQLInsertToIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   241
            aQuery->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   242
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   243
        else
7feec50967db 201003_02
hgs
parents:
diff changeset
   244
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   245
            // icon is null
7feec50967db 201003_02
hgs
parents:
diff changeset
   246
            aQuery->SetTableType( CCaSqlQuery::ENoTableType );
7feec50967db 201003_02
hgs
parents:
diff changeset
   247
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   248
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   249
    else if( idIcon > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   250
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   251
        aEntry->SetIconId( idIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   252
        aQuery->SetTableType( CCaSqlQuery::ENoTableType );
7feec50967db 201003_02
hgs
parents:
diff changeset
   253
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   254
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   255
// ---------------------------------------------------------------------------
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 CaSqlQueryCreator::CreateAddIconQueryForUpdateL(CCaInnerEntry* aEntry,
7feec50967db 201003_02
hgs
parents:
diff changeset
   260
        CCaSqlQuery* aQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   261
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   262
    DEBUG( ("_CA_:CASqlQueryCreator::CreateAddIconQueryForUpdateL") );
7feec50967db 201003_02
hgs
parents:
diff changeset
   263
    CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   264
    query->SetQueryL( KSQLGetIconDataByIdIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   265
    query->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   266
7feec50967db 201003_02
hgs
parents:
diff changeset
   267
    query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   268
    query->BindValuesForGetEntriesL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   269
    CCaInnerEntry::TIconAttributes iconAttributs;
7feec50967db 201003_02
hgs
parents:
diff changeset
   270
    query->ExecuteL( iconAttributs );
7feec50967db 201003_02
hgs
parents:
diff changeset
   271
    query->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   272
    if( !( !iconAttributs.iFileName.Compare( aEntry->GetIcon().iFileName )
7feec50967db 201003_02
hgs
parents:
diff changeset
   273
            && ( iconAttributs.iBitmapId == aEntry->GetIcon().iBitmapId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   274
            && ( iconAttributs.iMaskId == aEntry->GetIcon().iMaskId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   275
            && ( iconAttributs.iSkinMajorId
7feec50967db 201003_02
hgs
parents:
diff changeset
   276
                    == aEntry->GetIcon().iSkinMajorId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   277
            && ( iconAttributs.iSkinMinorId
7feec50967db 201003_02
hgs
parents:
diff changeset
   278
                    == aEntry->GetIcon().iSkinMinorId ) ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
   279
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   280
        // entry's icon data is updated
7feec50967db 201003_02
hgs
parents:
diff changeset
   281
        // if icon is used by another entry(s), new icon'll added to DB and
7feec50967db 201003_02
hgs
parents:
diff changeset
   282
        // new Id_Icon'll set to entry, otherwise it'll just updated
7feec50967db 201003_02
hgs
parents:
diff changeset
   283
        query->SetQueryL( KSQLGetIconsItems );
7feec50967db 201003_02
hgs
parents:
diff changeset
   284
        query->SetTableType( CCaSqlQuery::EEntryTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   285
7feec50967db 201003_02
hgs
parents:
diff changeset
   286
        query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   287
        query->BindValuesForGetEntriesL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   288
        RPointerArray<CCaInnerEntry> innerEntries;
7feec50967db 201003_02
hgs
parents:
diff changeset
   289
        CleanupResetAndDestroyPushL( innerEntries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   290
        TInt count = query->ExecuteL( innerEntries, CCaSqlQuery::EEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   291
        query->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   292
        if( count > 1 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   293
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   294
            //icon's data is used by another entry(s)
7feec50967db 201003_02
hgs
parents:
diff changeset
   295
            aQuery->SetQueryL( KSQLInsertToIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   296
            aQuery->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   297
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   298
        else
7feec50967db 201003_02
hgs
parents:
diff changeset
   299
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   300
            // icon's data is used just by this entry
7feec50967db 201003_02
hgs
parents:
diff changeset
   301
            CreateUpdateIconQueryL( aEntry, aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   302
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   303
7feec50967db 201003_02
hgs
parents:
diff changeset
   304
        CleanupStack::PopAndDestroy( &innerEntries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   305
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   306
    CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   307
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   308
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   309
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   310
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   311
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   312
void CaSqlQueryCreator::CreateAddIconQueryL( CCaInnerEntry* aEntry,
7feec50967db 201003_02
hgs
parents:
diff changeset
   313
        CCaSqlQuery* aQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   314
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   315
    DEBUG( ("_CA_:CASqlQueryCreator::CreateAddIconQueryL") );
7feec50967db 201003_02
hgs
parents:
diff changeset
   316
    // check if entry's icon id was set
7feec50967db 201003_02
hgs
parents:
diff changeset
   317
    if( aEntry->GetIconId() == 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   318
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   319
        // if entry doesn't have id_icon yet
7feec50967db 201003_02
hgs
parents:
diff changeset
   320
        // check if entry's icon data doesn't exist in DB
7feec50967db 201003_02
hgs
parents:
diff changeset
   321
        CreateAddIconQueryForNewL( aEntry, aQuery, aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   322
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   323
    else if( aEntry->GetIconId() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   324
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   325
        // entry has id_icon set
7feec50967db 201003_02
hgs
parents:
diff changeset
   326
        // check if entry's icon data are the same as in database
7feec50967db 201003_02
hgs
parents:
diff changeset
   327
        CreateAddIconQueryForUpdateL( aEntry, aQuery, aSqlDb );
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
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   332
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   333
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   334
void CaSqlQueryCreator::CreateUpdateIconQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   335
        const CCaInnerEntry* aEntry, CCaSqlQuery* aQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   336
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   337
    DEBUG(("_CA_:CASqlQueryCreator::CreateUpdateIconQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   338
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   339
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   340
    query.CreateL( KSQLUpdateIcon().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   341
    query.Append( KSQLUpdateIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   342
    if( aEntry->GetIcon().iFileName.Compare( KNullDesC ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
   343
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   344
        query.ReAllocL( query.Length() + KSQLUpdateIconFileName().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   345
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   346
        query.Append( KSQLUpdateIconFileName );
7feec50967db 201003_02
hgs
parents:
diff changeset
   347
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   348
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   349
    if( aEntry->GetIcon().iBitmapId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   350
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   351
        query.ReAllocL( query.Length() + KSQLUpdateIconBitmapId().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   352
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   353
        query.Append( KSQLUpdateIconBitmapId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   354
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   355
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   356
    if( aEntry->GetIcon().iMaskId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   357
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   358
        query.ReAllocL( query.Length() + KSQLUpdateIconMaskId().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   359
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   360
        query.Append( KSQLUpdateIconMaskId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   361
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   362
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   363
    if( aEntry->GetIcon().iSkinMajorId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   364
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   365
        query.ReAllocL( query.Length() + KSQLUpdateIconSkinMajorId().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   366
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   367
        query.Append( KSQLUpdateIconSkinMajorId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   368
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   369
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   370
    if( aEntry->GetIcon().iSkinMinorId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   371
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   372
        query.ReAllocL( query.Length() + KSQLUpdateIconSkinMinorId().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   373
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   374
        query.Append( KSQLUpdateIconSkinMinorId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   375
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   376
    if( !query.Right( KComma().Length() ).Compare( KComma ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
   377
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   378
        query.Assign( query.Mid( query.Length() - 
7feec50967db 201003_02
hgs
parents:
diff changeset
   379
                KComma().Length()).AllocL() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   380
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   381
    // add WHERE expr
7feec50967db 201003_02
hgs
parents:
diff changeset
   382
    query.ReAllocL( query.Length() + KSQLUpdateIconWhere().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   383
    query.Append( KSQLUpdateIconWhere );
7feec50967db 201003_02
hgs
parents:
diff changeset
   384
7feec50967db 201003_02
hgs
parents:
diff changeset
   385
    aQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   386
    aQuery->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   387
7feec50967db 201003_02
hgs
parents:
diff changeset
   388
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   389
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   390
7feec50967db 201003_02
hgs
parents:
diff changeset
   391
// ---------------------------------------------------------------------------
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 CaSqlQueryCreator::CreateGetEntriesQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   396
        const CCaInnerQuery* aQuery, CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   397
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   398
    DEBUG( ("_CA_:CASqlQueryCreator::CreateGetEntriesQueryL") );
7feec50967db 201003_02
hgs
parents:
diff changeset
   399
    if( aQuery->GetIds().Count() >= 1 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   400
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   401
        //        just one or more ids so select just those items. easy case.
7feec50967db 201003_02
hgs
parents:
diff changeset
   402
        CreateGetEntriesQueryByIdL( aQuery->GetIds().Count(), aSqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   403
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   404
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   405
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   406
        //        create a sql query for a list of items to return.
7feec50967db 201003_02
hgs
parents:
diff changeset
   407
        CreateGetEntriesQueryByQueryL( aQuery, aSqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   408
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   409
7feec50967db 201003_02
hgs
parents:
diff changeset
   410
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   411
7feec50967db 201003_02
hgs
parents:
diff changeset
   412
// ---------------------------------------------------------------------------
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
void CaSqlQueryCreator::CreateGetParentsIdsQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   417
        const RArray<TInt>& aEntryIdArray, CCaSqlQuery* aSqlQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   418
        const RArray<TInt>& aParentIdArray )
7feec50967db 201003_02
hgs
parents:
diff changeset
   419
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   420
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetParentsIdsQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   421
    RBuf entryIdList;
7feec50967db 201003_02
hgs
parents:
diff changeset
   422
    entryIdList.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   423
    CreateIdListL( aEntryIdArray.Count(), entryIdList, KSQLGEEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   424
    RBuf parentIdList;
7feec50967db 201003_02
hgs
parents:
diff changeset
   425
    parentIdList.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   426
    CreateIdListL( aParentIdArray.Count(), parentIdList, KSQLGEIdGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   427
7feec50967db 201003_02
hgs
parents:
diff changeset
   428
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   429
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   430
    query.CreateL( KSQLGetParentIds().Length() + entryIdList.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   431
    query.AppendFormat( KSQLGetParentIds, &entryIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   432
    if( aParentIdArray.Count() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   433
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   434
        query.ReAllocL( query.Length() + parentIdList.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   435
                + KSQLNotINIds().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   436
        query.AppendFormat( KSQLNotINIds, &parentIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   437
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   438
7feec50967db 201003_02
hgs
parents:
diff changeset
   439
    aSqlQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   440
7feec50967db 201003_02
hgs
parents:
diff changeset
   441
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   442
    CleanupStack::PopAndDestroy( &parentIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   443
    CleanupStack::PopAndDestroy( &entryIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   444
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   445
7feec50967db 201003_02
hgs
parents:
diff changeset
   446
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   447
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   448
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   449
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   450
void CaSqlQueryCreator::CreateGetAttributesQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   451
        const TInt aIdEntryCount, CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   452
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   453
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetAttributesQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   454
    PopulateQueryWithIdListL( aIdEntryCount, aSqlQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   455
            KSQLGetAttributesByEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   456
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   457
7feec50967db 201003_02
hgs
parents:
diff changeset
   458
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   459
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   460
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   461
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   462
void CaSqlQueryCreator::CreateRemoveQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   463
        RPointerArray<CCaSqlQuery>& aSqlQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   464
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   465
    DEBUG(("_CA_:CASqlQueryCreator::CreateRemoveQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   466
7feec50967db 201003_02
hgs
parents:
diff changeset
   467
    CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   468
    query->SetQueryL( KSQLDeleteLaunch );
7feec50967db 201003_02
hgs
parents:
diff changeset
   469
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   470
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   471
7feec50967db 201003_02
hgs
parents:
diff changeset
   472
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   473
    query->SetQueryL( KSQLDeleteEntryFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   474
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   475
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   476
7feec50967db 201003_02
hgs
parents:
diff changeset
   477
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   478
    query->SetQueryL( KSQLDeleteGroupFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   479
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   480
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   481
7feec50967db 201003_02
hgs
parents:
diff changeset
   482
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   483
    query->SetQueryL( KSQLDeleteAttribute );
7feec50967db 201003_02
hgs
parents:
diff changeset
   484
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   485
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   486
7feec50967db 201003_02
hgs
parents:
diff changeset
   487
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   488
    query->SetQueryL( KSQLDeleteEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   489
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   490
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   491
7feec50967db 201003_02
hgs
parents:
diff changeset
   492
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   493
    query->SetQueryL( KSQLDeleteIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   494
    query->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   495
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   496
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   497
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   498
7feec50967db 201003_02
hgs
parents:
diff changeset
   499
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   500
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   501
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   502
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   503
void CaSqlQueryCreator::CreateTouchQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   504
        RPointerArray<CCaSqlQuery>& aSqlQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   505
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   506
    DEBUG(("_CA_:CASqlQueryCreator::CreateTouchQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   507
7feec50967db 201003_02
hgs
parents:
diff changeset
   508
    CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   509
    query->SetQueryL( KSQLInsertToLaunch );
7feec50967db 201003_02
hgs
parents:
diff changeset
   510
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   511
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   512
7feec50967db 201003_02
hgs
parents:
diff changeset
   513
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   514
    query->SetQueryL( KSQLUpdateEntryUsedFlag );
7feec50967db 201003_02
hgs
parents:
diff changeset
   515
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   516
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   517
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   518
7feec50967db 201003_02
hgs
parents:
diff changeset
   519
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   520
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   521
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   522
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   523
void CaSqlQueryCreator::CreateLocalizeEntryQueryL( CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   524
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   525
    DEBUG(("_CA_:CASqlQueryCreator::CreateLocalizeEntryQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   526
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   527
    
7feec50967db 201003_02
hgs
parents:
diff changeset
   528
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   529
    query.CreateL( KSQLLocalizeEntry().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   530
    query.Append( KSQLLocalizeEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   531
    
7feec50967db 201003_02
hgs
parents:
diff changeset
   532
    aSqlQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   533
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   534
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   535
7feec50967db 201003_02
hgs
parents:
diff changeset
   536
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   537
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   538
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   539
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   540
void CaSqlQueryCreator::CreateGetLocalizationsQueryL( CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   541
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   542
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetLocalizationsQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   543
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   544
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   545
    query.CreateL( KSQLGetLocalizations().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   546
    query.Append( KSQLGetLocalizations );
7feec50967db 201003_02
hgs
parents:
diff changeset
   547
    
7feec50967db 201003_02
hgs
parents:
diff changeset
   548
    aSqlQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   549
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   550
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   551
7feec50967db 201003_02
hgs
parents:
diff changeset
   552
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   553
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   554
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   555
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   556
void CaSqlQueryCreator::CreateGetEntriesQueryByIdL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   557
        const TInt aIdEntryCount, CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   558
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   559
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetEntriesQueryByIdL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   560
    PopulateQueryWithIdListL( aIdEntryCount, aSqlQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   561
            KSQLGetListByEntryIds );
7feec50967db 201003_02
hgs
parents:
diff changeset
   562
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   563
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
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   568
void CaSqlQueryCreator::PopulateQueryWithIdListL( const TInt aIdEntryCount,
7feec50967db 201003_02
hgs
parents:
diff changeset
   569
        CCaSqlQuery* aQuery, const TDesC& aSqlQueryText )
7feec50967db 201003_02
hgs
parents:
diff changeset
   570
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   571
    DEBUG(("_CA_:CASqlQueryCreator::PopulateQueryWithIdListL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   572
    RBuf entryIdList;
7feec50967db 201003_02
hgs
parents:
diff changeset
   573
    entryIdList.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   574
7feec50967db 201003_02
hgs
parents:
diff changeset
   575
    CreateIdListL( aIdEntryCount, entryIdList, KSQLEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   576
7feec50967db 201003_02
hgs
parents:
diff changeset
   577
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   578
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   579
    query.CreateL( aSqlQueryText.Length() + entryIdList.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   580
    query.AppendFormat( aSqlQueryText, &entryIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   581
7feec50967db 201003_02
hgs
parents:
diff changeset
   582
    aQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   583
7feec50967db 201003_02
hgs
parents:
diff changeset
   584
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   585
    CleanupStack::PopAndDestroy( &entryIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   586
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   587
7feec50967db 201003_02
hgs
parents:
diff changeset
   588
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   589
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   590
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   591
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   592
void CaSqlQueryCreator::CreateIdListL( const TInt aIdEntryCount,
7feec50967db 201003_02
hgs
parents:
diff changeset
   593
        RBuf& aEntryIdList, const TDesC& aColName )
7feec50967db 201003_02
hgs
parents:
diff changeset
   594
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   595
    DEBUG(("_CA_:CASqlQueryCreator::CreateIdListL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   596
    //    Create an list of ids seperated by commas
7feec50967db 201003_02
hgs
parents:
diff changeset
   597
    if( aIdEntryCount > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   598
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   599
        aEntryIdList.CreateL( aIdEntryCount * ( aColName.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   600
                + KMaxIntNumLength ) - 1 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   601
        for( TInt i = 0; i < aIdEntryCount; i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   602
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   603
            aEntryIdList.Append( aColName );
7feec50967db 201003_02
hgs
parents:
diff changeset
   604
            aEntryIdList.AppendNum( i );
7feec50967db 201003_02
hgs
parents:
diff changeset
   605
            if( i != aIdEntryCount - 1 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   606
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   607
                aEntryIdList.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   608
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   609
            }
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
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   614
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   615
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   616
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   617
void CaSqlQueryCreator::CreateGetEntriesQueryByQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   618
        const CCaInnerQuery* aQuery, CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   619
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   620
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetEntriesQueryByQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   621
    RBuf whereStatement;
7feec50967db 201003_02
hgs
parents:
diff changeset
   622
    whereStatement.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   623
7feec50967db 201003_02
hgs
parents:
diff changeset
   624
    TUint flagsOn = aQuery->GetFlagsOn();
7feec50967db 201003_02
hgs
parents:
diff changeset
   625
    if( flagsOn != 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   626
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   627
        whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   628
                + KSQLGetEntryFlagsOn().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   629
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   630
        whereStatement.Append( KSQLGetEntryFlagsOn );
7feec50967db 201003_02
hgs
parents:
diff changeset
   631
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   632
7feec50967db 201003_02
hgs
parents:
diff changeset
   633
    TUint flagsOff = aQuery->GetFlagsOff();
7feec50967db 201003_02
hgs
parents:
diff changeset
   634
    if( flagsOff != 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   635
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   636
        whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   637
                + KSQLGetEntryFlagsOff().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   638
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   639
        whereStatement.Append( KSQLGetEntryFlagsOff );
7feec50967db 201003_02
hgs
parents:
diff changeset
   640
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   641
7feec50967db 201003_02
hgs
parents:
diff changeset
   642
    TInt role = aQuery->GetRole();
7feec50967db 201003_02
hgs
parents:
diff changeset
   643
    if( role != 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   644
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   645
        whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   646
                + KSQLGetEntryRole().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   647
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   648
        whereStatement.Append( KSQLGetEntryRole );
7feec50967db 201003_02
hgs
parents:
diff changeset
   649
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   650
7feec50967db 201003_02
hgs
parents:
diff changeset
   651
    TUint uid = aQuery->GetUid();
7feec50967db 201003_02
hgs
parents:
diff changeset
   652
    if( uid != 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   653
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   654
        whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   655
                + KSQLGetEntryUid().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   656
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   657
        whereStatement.Append( KSQLGetEntryUid );
7feec50967db 201003_02
hgs
parents:
diff changeset
   658
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   659
7feec50967db 201003_02
hgs
parents:
diff changeset
   660
    const CDesC16ArrayFlat* typeNames = aQuery->GetEntryTypeNames();
7feec50967db 201003_02
hgs
parents:
diff changeset
   661
7feec50967db 201003_02
hgs
parents:
diff changeset
   662
    if( typeNames && typeNames->MdcaCount() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   663
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   664
        RBuf typeNameWhereStatement;
7feec50967db 201003_02
hgs
parents:
diff changeset
   665
        typeNameWhereStatement.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   666
        for( TInt i = 0; i < typeNames->MdcaCount(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   667
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   668
            typeNameWhereStatement.ReAllocL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   669
                    typeNameWhereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   670
                    + typeNames->MdcaPoint( i ).Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   671
                    + KSingleQuotes().Length() * 2 + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   672
            typeNameWhereStatement.Append( KSingleQuotes );
7feec50967db 201003_02
hgs
parents:
diff changeset
   673
            typeNameWhereStatement.Append( typeNames->MdcaPoint( i ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   674
            typeNameWhereStatement.Append( KSingleQuotes );
7feec50967db 201003_02
hgs
parents:
diff changeset
   675
            if( i != typeNames->MdcaCount() - 1 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   676
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   677
                typeNameWhereStatement.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   678
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   679
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   680
        whereStatement.ReAllocL( KAnd().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   681
                + KSQLGetEntryTypeNames().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   682
                + typeNameWhereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   683
                + whereStatement.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   684
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   685
        whereStatement.AppendFormat( KSQLGetEntryTypeNames,
7feec50967db 201003_02
hgs
parents:
diff changeset
   686
                &typeNameWhereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   687
        CleanupStack::PopAndDestroy( &typeNameWhereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   688
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   689
7feec50967db 201003_02
hgs
parents:
diff changeset
   690
    TInt groupId = aQuery->GetParentId();
7feec50967db 201003_02
hgs
parents:
diff changeset
   691
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   692
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   693
    if( groupId > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   694
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   695
        query.CreateL( KSQLGetListByParentId().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   696
                + whereStatement.Length() - 2 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   697
        query.AppendFormat( KSQLGetListByParentId, &whereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   698
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   699
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   700
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   701
        query.CreateL( KSQLGetList().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   702
        query.Append( KSQLGetList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   703
        if( whereStatement.Length() >= KAnd().Length() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   704
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   705
            TPtrC ptrWhereStatement( whereStatement.Right(
7feec50967db 201003_02
hgs
parents:
diff changeset
   706
                    whereStatement.Length() - KAnd().Length() ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   707
            query.ReAllocL( KSQLGetList().Length() + KWhere().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   708
                    + ptrWhereStatement.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   709
            query.Append( KWhere );
7feec50967db 201003_02
hgs
parents:
diff changeset
   710
            query.Append( ptrWhereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   711
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   712
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   713
7feec50967db 201003_02
hgs
parents:
diff changeset
   714
    CCaInnerQuery::TSortAttribute sort = aQuery->GetSort();
7feec50967db 201003_02
hgs
parents:
diff changeset
   715
    ModifyQueryForSortOrderL( sort, query, groupId > 0 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   716
7feec50967db 201003_02
hgs
parents:
diff changeset
   717
    if( aQuery->GetCount() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   718
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   719
        query.ReAllocL( query.Length() + KLimit().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   720
                + KMaxIntNumLength );
7feec50967db 201003_02
hgs
parents:
diff changeset
   721
        query.Append( KLimit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   722
        TInt limitCount = aQuery->GetCount();
7feec50967db 201003_02
hgs
parents:
diff changeset
   723
        query.AppendNum( limitCount );
7feec50967db 201003_02
hgs
parents:
diff changeset
   724
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   725
7feec50967db 201003_02
hgs
parents:
diff changeset
   726
    aSqlQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   727
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   728
    CleanupStack::PopAndDestroy( &whereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   729
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   730
7feec50967db 201003_02
hgs
parents:
diff changeset
   731
7feec50967db 201003_02
hgs
parents:
diff changeset
   732
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   733
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   734
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   735
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   736
void CaSqlQueryCreator::CreateCustomSortQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   737
        const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   738
        RPointerArray<CCaSqlQuery>& aSqlQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   739
        RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   740
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   741
    for( TInt i = 0; i < aEntryIds.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   742
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   743
        CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   744
        query->SetQueryL( KSQLUpdatePositionInGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   745
        aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   746
        CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   747
        }
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
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   752
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   753
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   754
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   755
void CaSqlQueryCreator::ModifyQueryForSortOrderL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   756
        const CCaInnerQuery::TSortAttribute aSortType, RBuf& aQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   757
        TBool aSortByGroup )
7feec50967db 201003_02
hgs
parents:
diff changeset
   758
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   759
    DEBUG(("_CA_:CASqlQueryCreator::ModifyQueryForSortOrderL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   760
    switch ( aSortType )
7feec50967db 201003_02
hgs
parents:
diff changeset
   761
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   762
        case CCaInnerQuery::Name:
7feec50967db 201003_02
hgs
parents:
diff changeset
   763
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   764
            aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   765
                    + KSQLSortOrderNameAsc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   766
            aQuery.Append( KSQLSortOrderNameAsc );
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 CCaInnerQuery::NameDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   770
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   771
            aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   772
                    + KSQLSortOrderNameDesc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   773
            aQuery.Append( KSQLSortOrderNameDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   774
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   775
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   776
        case CCaInnerQuery::CreatedTimestamp:
7feec50967db 201003_02
hgs
parents:
diff changeset
   777
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   778
            aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   779
                    + KSQLSortOrderCreatedTimestampAsc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   780
            aQuery.Append( KSQLSortOrderCreatedTimestampAsc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   781
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   782
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   783
        case CCaInnerQuery::CreatedTimestampDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   784
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   785
            aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   786
                    + KSQLSortOrderCreatedTimestampDesc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   787
            aQuery.Append( KSQLSortOrderCreatedTimestampDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   788
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   789
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   790
        case CCaInnerQuery::MostUsed:
7feec50967db 201003_02
hgs
parents:
diff changeset
   791
        case CCaInnerQuery::MostUsedDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   792
        case CCaInnerQuery::LastUsed:
7feec50967db 201003_02
hgs
parents:
diff changeset
   793
        case CCaInnerQuery::LastUsedDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   794
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   795
            ModifyQueryForSortOrderLastMostUsedL( aSortType, aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   796
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   797
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   798
        case CCaInnerQuery::DefaultDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   799
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   800
            if( aSortByGroup )
7feec50967db 201003_02
hgs
parents:
diff changeset
   801
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   802
                aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   803
                        + KSQLSortOrderDefaultDesc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   804
                aQuery.Append( KSQLSortOrderDefaultDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   805
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   806
            else
7feec50967db 201003_02
hgs
parents:
diff changeset
   807
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   808
                aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   809
                        + KSQLSortOrderIdDesc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   810
                aQuery.Append( KSQLSortOrderIdDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   811
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   812
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   813
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   814
        case CCaInnerQuery::Default:
7feec50967db 201003_02
hgs
parents:
diff changeset
   815
        default:
7feec50967db 201003_02
hgs
parents:
diff changeset
   816
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   817
            if( aSortByGroup )
7feec50967db 201003_02
hgs
parents:
diff changeset
   818
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   819
                aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   820
                        + KSQLSortOrderDefault().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   821
                aQuery.Append( KSQLSortOrderDefault );
7feec50967db 201003_02
hgs
parents:
diff changeset
   822
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   823
            else
7feec50967db 201003_02
hgs
parents:
diff changeset
   824
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   825
                aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   826
                        + KSQLSortOrderIdAsc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   827
                aQuery.Append( KSQLSortOrderIdAsc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   828
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   829
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   830
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   831
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   832
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   833
7feec50967db 201003_02
hgs
parents:
diff changeset
   834
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   835
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   836
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   837
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   838
void CaSqlQueryCreator::ModifyQueryForSortOrderLastMostUsedL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   839
        const CCaInnerQuery::TSortAttribute aSortType, RBuf& aQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   840
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   841
    DEBUG(("_CA_:CASqlQueryCreator::ModifyQueryForSortOrderLastMostUsedL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   842
7feec50967db 201003_02
hgs
parents:
diff changeset
   843
    RBuf descPart;
7feec50967db 201003_02
hgs
parents:
diff changeset
   844
    descPart.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   845
    if( aSortType == CCaInnerQuery::MostUsedDesc || 
7feec50967db 201003_02
hgs
parents:
diff changeset
   846
         aSortType == CCaInnerQuery::LastUsedDesc )
7feec50967db 201003_02
hgs
parents:
diff changeset
   847
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   848
        descPart.CreateL( KDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   849
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   850
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   851
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   852
        descPart.CreateL( KNullDesC );
7feec50967db 201003_02
hgs
parents:
diff changeset
   853
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   854
7feec50967db 201003_02
hgs
parents:
diff changeset
   855
    RBuf usageDataQuery;
7feec50967db 201003_02
hgs
parents:
diff changeset
   856
    usageDataQuery.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   857
    if( aSortType == CCaInnerQuery::MostUsed || 
7feec50967db 201003_02
hgs
parents:
diff changeset
   858
         aSortType == CCaInnerQuery::MostUsedDesc )
7feec50967db 201003_02
hgs
parents:
diff changeset
   859
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   860
        usageDataQuery.CreateL( KSQLGetMostUsed );
7feec50967db 201003_02
hgs
parents:
diff changeset
   861
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   862
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   863
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   864
        usageDataQuery.CreateL( KSQLGetLastUsed );
7feec50967db 201003_02
hgs
parents:
diff changeset
   865
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   866
7feec50967db 201003_02
hgs
parents:
diff changeset
   867
    RBuf newQuery;
7feec50967db 201003_02
hgs
parents:
diff changeset
   868
    newQuery.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   869
    newQuery.CreateL( KSQLGetListByLaunchDataPart1().Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   870
            KSQLGetListByLaunchDataPart1().Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   871
            KSQLGetListByLaunchDataPart3().Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   872
            usageDataQuery.Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   873
            descPart.Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   874
            aQuery.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   875
    newQuery.Append( KSQLGetListByLaunchDataPart1 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   876
    newQuery.Append( aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   877
    newQuery.Append( KSQLGetListByLaunchDataPart2 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   878
    newQuery.Append( usageDataQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   879
    newQuery.Append( KSQLGetListByLaunchDataPart3 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   880
    newQuery.Append( descPart );
7feec50967db 201003_02
hgs
parents:
diff changeset
   881
    aQuery.Close();
7feec50967db 201003_02
hgs
parents:
diff changeset
   882
    aQuery.CreateL( newQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   883
7feec50967db 201003_02
hgs
parents:
diff changeset
   884
    CleanupStack::PopAndDestroy( &newQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   885
    CleanupStack::PopAndDestroy( &usageDataQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   886
    CleanupStack::PopAndDestroy( &descPart );
7feec50967db 201003_02
hgs
parents:
diff changeset
   887
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   888
7feec50967db 201003_02
hgs
parents:
diff changeset
   889
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   890
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   891
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   892
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   893
TBool CaSqlQueryCreator::CreateOrganizeQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   894
        const RArray<TInt>& aEntryIds, TCaOperationParams aParams,
7feec50967db 201003_02
hgs
parents:
diff changeset
   895
        RSqlDatabase& aSqlDb, RPointerArray<CCaSqlQuery>& aSqlQueries )
7feec50967db 201003_02
hgs
parents:
diff changeset
   896
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   897
    DEBUG(("_CA_:CASqlQueryCreator::CreateOrganizeQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   898
    TBool revereseInsertOrder = false;
7feec50967db 201003_02
hgs
parents:
diff changeset
   899
    TInt idCount( aEntryIds.Count() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   900
7feec50967db 201003_02
hgs
parents:
diff changeset
   901
    CCaSqlQuery * query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   902
    PopulateQueryWithIdListL( idCount, query,
7feec50967db 201003_02
hgs
parents:
diff changeset
   903
            KSQLOrganizeRemoveEntriesFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   904
    query->SetTableType( CCaSqlQuery::EGroupTableRemove );
7feec50967db 201003_02
hgs
parents:
diff changeset
   905
    aSqlQueries.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   906
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   907
7feec50967db 201003_02
hgs
parents:
diff changeset
   908
    switch( aParams.iOperationType )
7feec50967db 201003_02
hgs
parents:
diff changeset
   909
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   910
        case TCaOperationParams::EInsert:
7feec50967db 201003_02
hgs
parents:
diff changeset
   911
7feec50967db 201003_02
hgs
parents:
diff changeset
   912
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   913
            if( aParams.iBeforeEntryId <= 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   914
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   915
                User::Leave( KErrNotSupported );
7feec50967db 201003_02
hgs
parents:
diff changeset
   916
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   917
7feec50967db 201003_02
hgs
parents:
diff changeset
   918
            query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   919
            query->SetQueryL( KSQLOrganizeInsertToGroupBasic );
7feec50967db 201003_02
hgs
parents:
diff changeset
   920
            query->SetTableType( CCaSqlQuery::EGroupTableInsert );
7feec50967db 201003_02
hgs
parents:
diff changeset
   921
            aSqlQueries.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   922
            CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   923
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   924
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   925
        case TCaOperationParams::EAppend:
7feec50967db 201003_02
hgs
parents:
diff changeset
   926
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   927
            CCaSqlQuery * query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   928
            query->SetQueryL( KSQLOrganizeAppendToGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   929
            query->SetTableType( CCaSqlQuery::EGroupTableInsert );
7feec50967db 201003_02
hgs
parents:
diff changeset
   930
            aSqlQueries.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   931
            CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   932
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   933
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   934
        case TCaOperationParams::EPrepend:
7feec50967db 201003_02
hgs
parents:
diff changeset
   935
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   936
            query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   937
            query->SetQueryL( KSQLOrganizeInsertToGroupPrepend );
7feec50967db 201003_02
hgs
parents:
diff changeset
   938
            query->SetTableType( CCaSqlQuery::EGroupTableInsert );
7feec50967db 201003_02
hgs
parents:
diff changeset
   939
            aSqlQueries.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   940
            CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   941
7feec50967db 201003_02
hgs
parents:
diff changeset
   942
            revereseInsertOrder = true;
7feec50967db 201003_02
hgs
parents:
diff changeset
   943
7feec50967db 201003_02
hgs
parents:
diff changeset
   944
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   945
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   946
        case TCaOperationParams::ERemove:
7feec50967db 201003_02
hgs
parents:
diff changeset
   947
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   948
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   949
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   950
        default:
7feec50967db 201003_02
hgs
parents:
diff changeset
   951
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   952
            User::Leave( KErrNotSupported );
7feec50967db 201003_02
hgs
parents:
diff changeset
   953
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   954
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   955
    return revereseInsertOrder;
7feec50967db 201003_02
hgs
parents:
diff changeset
   956
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   957
7feec50967db 201003_02
hgs
parents:
diff changeset
   958
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   959
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   960
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   961
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   962
CaSqlQueryCreator::TIconType CaSqlQueryCreator::CheckIconType( const CCaInnerEntry* aEntry )
7feec50967db 201003_02
hgs
parents:
diff changeset
   963
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   964
    CaSqlQueryCreator::TIconType iconType;
7feec50967db 201003_02
hgs
parents:
diff changeset
   965
    if( aEntry->GetIcon().iBitmapId == 0 &&
7feec50967db 201003_02
hgs
parents:
diff changeset
   966
        aEntry->GetIcon().iMaskId == 0 &&
7feec50967db 201003_02
hgs
parents:
diff changeset
   967
        aEntry->GetIcon().iSkinMajorId == 0 &&
7feec50967db 201003_02
hgs
parents:
diff changeset
   968
        aEntry->GetIcon().iSkinMinorId == 0 &&
7feec50967db 201003_02
hgs
parents:
diff changeset
   969
        aEntry->GetIcon().iFileName.Length() == 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   970
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   971
        if( aEntry->GetIconId() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   972
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   973
            iconType = ENullIconToRemove;
7feec50967db 201003_02
hgs
parents:
diff changeset
   974
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   975
        else
7feec50967db 201003_02
hgs
parents:
diff changeset
   976
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   977
            iconType = ENullIcon;
7feec50967db 201003_02
hgs
parents:
diff changeset
   978
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   979
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   980
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   981
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   982
        iconType = EProperIcon;
7feec50967db 201003_02
hgs
parents:
diff changeset
   983
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   984
    return iconType;
7feec50967db 201003_02
hgs
parents:
diff changeset
   985
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   986
7feec50967db 201003_02
hgs
parents:
diff changeset
   987