contentstorage/castorage/src/casqlquerycreator.cpp
author hgs
Tue, 23 Mar 2010 23:55:55 +0200
changeset 88 7f0462e8c3da
parent 85 7feec50967db
child 89 1e87eb3b400f
permissions -rw-r--r--
201009
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 ) ||
88
hgs
parents: 85
diff changeset
   234
            ( aEntry->GetIcon().iSkinId.Length() != 0 ) ||
hgs
parents: 85
diff changeset
   235
            ( aEntry->GetIcon().iApplicationId.Length() != 0 )
hgs
parents: 85
diff changeset
   236
             )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   237
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   238
            // icon is not null, so that insert it to storage
7feec50967db 201003_02
hgs
parents:
diff changeset
   239
            aQuery->SetQueryL( KSQLInsertToIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   240
            aQuery->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   241
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   242
        else
7feec50967db 201003_02
hgs
parents:
diff changeset
   243
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   244
            // icon is null
7feec50967db 201003_02
hgs
parents:
diff changeset
   245
            aQuery->SetTableType( CCaSqlQuery::ENoTableType );
7feec50967db 201003_02
hgs
parents:
diff changeset
   246
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   247
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   248
    else if( idIcon > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   249
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   250
        aEntry->SetIconId( idIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   251
        aQuery->SetTableType( CCaSqlQuery::ENoTableType );
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
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   256
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   257
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   258
void CaSqlQueryCreator::CreateAddIconQueryForUpdateL(CCaInnerEntry* aEntry,
7feec50967db 201003_02
hgs
parents:
diff changeset
   259
        CCaSqlQuery* aQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   260
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   261
    DEBUG( ("_CA_:CASqlQueryCreator::CreateAddIconQueryForUpdateL") );
7feec50967db 201003_02
hgs
parents:
diff changeset
   262
    CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   263
    query->SetQueryL( KSQLGetIconDataByIdIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   264
    query->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   265
7feec50967db 201003_02
hgs
parents:
diff changeset
   266
    query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   267
    query->BindValuesForGetEntriesL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   268
    CCaInnerEntry::TIconAttributes iconAttributs;
7feec50967db 201003_02
hgs
parents:
diff changeset
   269
    query->ExecuteL( iconAttributs );
7feec50967db 201003_02
hgs
parents:
diff changeset
   270
    query->CloseStatement();
88
hgs
parents: 85
diff changeset
   271
    if( !(     !iconAttributs.iFileName.Compare( aEntry->GetIcon().iFileName )
hgs
parents: 85
diff changeset
   272
            && (!iconAttributs.iSkinId.Compare( aEntry->GetIcon().iSkinId ))
hgs
parents: 85
diff changeset
   273
            && (!iconAttributs.iApplicationId.Compare( aEntry->GetIcon().iApplicationId ))
hgs
parents: 85
diff changeset
   274
                    ) )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   275
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   276
        // entry's icon data is updated
7feec50967db 201003_02
hgs
parents:
diff changeset
   277
        // if icon is used by another entry(s), new icon'll added to DB and
7feec50967db 201003_02
hgs
parents:
diff changeset
   278
        // new Id_Icon'll set to entry, otherwise it'll just updated
7feec50967db 201003_02
hgs
parents:
diff changeset
   279
        query->SetQueryL( KSQLGetIconsItems );
7feec50967db 201003_02
hgs
parents:
diff changeset
   280
        query->SetTableType( CCaSqlQuery::EEntryTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   281
7feec50967db 201003_02
hgs
parents:
diff changeset
   282
        query->PrepareL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   283
        query->BindValuesForGetEntriesL( aEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   284
        RPointerArray<CCaInnerEntry> innerEntries;
7feec50967db 201003_02
hgs
parents:
diff changeset
   285
        CleanupResetAndDestroyPushL( innerEntries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   286
        TInt count = query->ExecuteL( innerEntries, CCaSqlQuery::EEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   287
        query->CloseStatement();
7feec50967db 201003_02
hgs
parents:
diff changeset
   288
        if( count > 1 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   289
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   290
            //icon's data is used by another entry(s)
7feec50967db 201003_02
hgs
parents:
diff changeset
   291
            aQuery->SetQueryL( KSQLInsertToIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   292
            aQuery->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   293
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   294
        else
7feec50967db 201003_02
hgs
parents:
diff changeset
   295
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   296
            // icon's data is used just by this entry
7feec50967db 201003_02
hgs
parents:
diff changeset
   297
            CreateUpdateIconQueryL( aEntry, aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   298
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   299
7feec50967db 201003_02
hgs
parents:
diff changeset
   300
        CleanupStack::PopAndDestroy( &innerEntries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   301
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   302
    CleanupStack::PopAndDestroy( query );
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
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   307
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   308
void CaSqlQueryCreator::CreateAddIconQueryL( CCaInnerEntry* aEntry,
7feec50967db 201003_02
hgs
parents:
diff changeset
   309
        CCaSqlQuery* aQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   310
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   311
    DEBUG( ("_CA_:CASqlQueryCreator::CreateAddIconQueryL") );
7feec50967db 201003_02
hgs
parents:
diff changeset
   312
    // check if entry's icon id was set
7feec50967db 201003_02
hgs
parents:
diff changeset
   313
    if( aEntry->GetIconId() == 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   314
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   315
        // if entry doesn't have id_icon yet
7feec50967db 201003_02
hgs
parents:
diff changeset
   316
        // check if entry's icon data doesn't exist in DB
7feec50967db 201003_02
hgs
parents:
diff changeset
   317
        CreateAddIconQueryForNewL( aEntry, aQuery, aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   318
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   319
    else if( aEntry->GetIconId() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   320
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   321
        // entry has id_icon set
7feec50967db 201003_02
hgs
parents:
diff changeset
   322
        // check if entry's icon data are the same as in database
7feec50967db 201003_02
hgs
parents:
diff changeset
   323
        CreateAddIconQueryForUpdateL( aEntry, aQuery, aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   324
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   325
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   326
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   327
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   328
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   329
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   330
void CaSqlQueryCreator::CreateUpdateIconQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   331
        const CCaInnerEntry* aEntry, CCaSqlQuery* aQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   332
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   333
    DEBUG(("_CA_:CASqlQueryCreator::CreateUpdateIconQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   334
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   335
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   336
    query.CreateL( KSQLUpdateIcon().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   337
    query.Append( KSQLUpdateIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   338
    if( aEntry->GetIcon().iFileName.Compare( KNullDesC ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
   339
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   340
        query.ReAllocL( query.Length() + KSQLUpdateIconFileName().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   341
                + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   342
        query.Append( KSQLUpdateIconFileName );
7feec50967db 201003_02
hgs
parents:
diff changeset
   343
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   344
        }
88
hgs
parents: 85
diff changeset
   345
    if( aEntry->GetIcon().iSkinId.Compare( KNullDesC ) )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   346
        {
88
hgs
parents: 85
diff changeset
   347
        query.ReAllocL( query.Length() + KSQLUpdateIconSkinId().Length()
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   348
                + KComma().Length() );
88
hgs
parents: 85
diff changeset
   349
        query.Append( KSQLUpdateIconSkinId );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   350
        query.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   351
        }
88
hgs
parents: 85
diff changeset
   352
     if( aEntry->GetIcon().iApplicationId.Compare(KNullDesC) )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   353
        {
88
hgs
parents: 85
diff changeset
   354
        query.ReAllocL( query.Length() + KSQLUpdateIconAppId().Length()
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   355
                + KComma().Length() );
88
hgs
parents: 85
diff changeset
   356
        query.Append( KSQLUpdateIconAppId );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   357
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   358
    if( !query.Right( KComma().Length() ).Compare( KComma ) )
7feec50967db 201003_02
hgs
parents:
diff changeset
   359
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   360
        query.Assign( query.Mid( query.Length() - 
7feec50967db 201003_02
hgs
parents:
diff changeset
   361
                KComma().Length()).AllocL() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   362
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   363
    // add WHERE expr
7feec50967db 201003_02
hgs
parents:
diff changeset
   364
    query.ReAllocL( query.Length() + KSQLUpdateIconWhere().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   365
    query.Append( KSQLUpdateIconWhere );
7feec50967db 201003_02
hgs
parents:
diff changeset
   366
7feec50967db 201003_02
hgs
parents:
diff changeset
   367
    aQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   368
    aQuery->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   369
7feec50967db 201003_02
hgs
parents:
diff changeset
   370
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   371
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   372
7feec50967db 201003_02
hgs
parents:
diff changeset
   373
// ---------------------------------------------------------------------------
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 CaSqlQueryCreator::CreateGetEntriesQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   378
        const CCaInnerQuery* aQuery, CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   379
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   380
    DEBUG( ("_CA_:CASqlQueryCreator::CreateGetEntriesQueryL") );
7feec50967db 201003_02
hgs
parents:
diff changeset
   381
    if( aQuery->GetIds().Count() >= 1 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   382
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   383
        //        just one or more ids so select just those items. easy case.
7feec50967db 201003_02
hgs
parents:
diff changeset
   384
        CreateGetEntriesQueryByIdL( aQuery->GetIds().Count(), aSqlQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   385
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   386
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   387
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   388
        //        create a sql query for a list of items to return.
7feec50967db 201003_02
hgs
parents:
diff changeset
   389
        CreateGetEntriesQueryByQueryL( aQuery, aSqlQuery );
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
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   396
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   397
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   398
void CaSqlQueryCreator::CreateGetParentsIdsQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   399
        const RArray<TInt>& aEntryIdArray, CCaSqlQuery* aSqlQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   400
        const RArray<TInt>& aParentIdArray )
7feec50967db 201003_02
hgs
parents:
diff changeset
   401
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   402
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetParentsIdsQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   403
    RBuf entryIdList;
7feec50967db 201003_02
hgs
parents:
diff changeset
   404
    entryIdList.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   405
    CreateIdListL( aEntryIdArray.Count(), entryIdList, KSQLGEEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   406
    RBuf parentIdList;
7feec50967db 201003_02
hgs
parents:
diff changeset
   407
    parentIdList.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   408
    CreateIdListL( aParentIdArray.Count(), parentIdList, KSQLGEIdGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   409
7feec50967db 201003_02
hgs
parents:
diff changeset
   410
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   411
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   412
    query.CreateL( KSQLGetParentIds().Length() + entryIdList.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   413
    query.AppendFormat( KSQLGetParentIds, &entryIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   414
    if( aParentIdArray.Count() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   415
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   416
        query.ReAllocL( query.Length() + parentIdList.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   417
                + KSQLNotINIds().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   418
        query.AppendFormat( KSQLNotINIds, &parentIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   419
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   420
7feec50967db 201003_02
hgs
parents:
diff changeset
   421
    aSqlQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   422
7feec50967db 201003_02
hgs
parents:
diff changeset
   423
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   424
    CleanupStack::PopAndDestroy( &parentIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   425
    CleanupStack::PopAndDestroy( &entryIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   426
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   427
7feec50967db 201003_02
hgs
parents:
diff changeset
   428
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   429
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   430
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   431
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   432
void CaSqlQueryCreator::CreateGetAttributesQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   433
        const TInt aIdEntryCount, CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   434
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   435
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetAttributesQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   436
    PopulateQueryWithIdListL( aIdEntryCount, aSqlQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   437
            KSQLGetAttributesByEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   438
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   439
7feec50967db 201003_02
hgs
parents:
diff changeset
   440
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   441
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   442
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   443
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   444
void CaSqlQueryCreator::CreateRemoveQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   445
        RPointerArray<CCaSqlQuery>& aSqlQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   446
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   447
    DEBUG(("_CA_:CASqlQueryCreator::CreateRemoveQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   448
7feec50967db 201003_02
hgs
parents:
diff changeset
   449
    CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   450
    query->SetQueryL( KSQLDeleteLaunch );
7feec50967db 201003_02
hgs
parents:
diff changeset
   451
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   452
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   453
7feec50967db 201003_02
hgs
parents:
diff changeset
   454
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   455
    query->SetQueryL( KSQLDeleteEntryFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   456
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   457
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   458
7feec50967db 201003_02
hgs
parents:
diff changeset
   459
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   460
    query->SetQueryL( KSQLDeleteGroupFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   461
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   462
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   463
7feec50967db 201003_02
hgs
parents:
diff changeset
   464
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   465
    query->SetQueryL( KSQLDeleteAttribute );
7feec50967db 201003_02
hgs
parents:
diff changeset
   466
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   467
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   468
7feec50967db 201003_02
hgs
parents:
diff changeset
   469
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   470
    query->SetQueryL( KSQLDeleteEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   471
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   472
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   473
7feec50967db 201003_02
hgs
parents:
diff changeset
   474
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   475
    query->SetQueryL( KSQLDeleteIcon );
7feec50967db 201003_02
hgs
parents:
diff changeset
   476
    query->SetTableType( CCaSqlQuery::EIconTable );
7feec50967db 201003_02
hgs
parents:
diff changeset
   477
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   478
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   479
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   480
7feec50967db 201003_02
hgs
parents:
diff changeset
   481
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   482
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   483
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   484
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   485
void CaSqlQueryCreator::CreateTouchQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   486
        RPointerArray<CCaSqlQuery>& aSqlQuery, RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   487
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   488
    DEBUG(("_CA_:CASqlQueryCreator::CreateTouchQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   489
7feec50967db 201003_02
hgs
parents:
diff changeset
   490
    CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   491
    query->SetQueryL( KSQLInsertToLaunch );
7feec50967db 201003_02
hgs
parents:
diff changeset
   492
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   493
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   494
7feec50967db 201003_02
hgs
parents:
diff changeset
   495
    query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   496
    query->SetQueryL( KSQLUpdateEntryUsedFlag );
7feec50967db 201003_02
hgs
parents:
diff changeset
   497
    aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   498
    CleanupStack::Pop( query );
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
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   504
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   505
void CaSqlQueryCreator::CreateLocalizeEntryQueryL( CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   506
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   507
    DEBUG(("_CA_:CASqlQueryCreator::CreateLocalizeEntryQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   508
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   509
    
7feec50967db 201003_02
hgs
parents:
diff changeset
   510
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   511
    query.CreateL( KSQLLocalizeEntry().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   512
    query.Append( KSQLLocalizeEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   513
    
7feec50967db 201003_02
hgs
parents:
diff changeset
   514
    aSqlQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   515
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   516
    }
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
void CaSqlQueryCreator::CreateGetLocalizationsQueryL( CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   523
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   524
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetLocalizationsQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   525
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   526
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   527
    query.CreateL( KSQLGetLocalizations().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   528
    query.Append( KSQLGetLocalizations );
7feec50967db 201003_02
hgs
parents:
diff changeset
   529
    
7feec50967db 201003_02
hgs
parents:
diff changeset
   530
    aSqlQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   531
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   532
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   533
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
void CaSqlQueryCreator::CreateGetEntriesQueryByIdL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   539
        const TInt aIdEntryCount, CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   540
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   541
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetEntriesQueryByIdL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   542
    PopulateQueryWithIdListL( aIdEntryCount, aSqlQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   543
            KSQLGetListByEntryIds );
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
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   549
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   550
void CaSqlQueryCreator::PopulateQueryWithIdListL( const TInt aIdEntryCount,
7feec50967db 201003_02
hgs
parents:
diff changeset
   551
        CCaSqlQuery* aQuery, const TDesC& aSqlQueryText )
7feec50967db 201003_02
hgs
parents:
diff changeset
   552
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   553
    DEBUG(("_CA_:CASqlQueryCreator::PopulateQueryWithIdListL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   554
    RBuf entryIdList;
7feec50967db 201003_02
hgs
parents:
diff changeset
   555
    entryIdList.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   556
7feec50967db 201003_02
hgs
parents:
diff changeset
   557
    CreateIdListL( aIdEntryCount, entryIdList, KSQLEntryId );
7feec50967db 201003_02
hgs
parents:
diff changeset
   558
7feec50967db 201003_02
hgs
parents:
diff changeset
   559
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   560
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   561
    query.CreateL( aSqlQueryText.Length() + entryIdList.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   562
    query.AppendFormat( aSqlQueryText, &entryIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   563
7feec50967db 201003_02
hgs
parents:
diff changeset
   564
    aQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   565
7feec50967db 201003_02
hgs
parents:
diff changeset
   566
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   567
    CleanupStack::PopAndDestroy( &entryIdList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   568
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   569
7feec50967db 201003_02
hgs
parents:
diff changeset
   570
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   571
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   572
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   573
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   574
void CaSqlQueryCreator::CreateIdListL( const TInt aIdEntryCount,
7feec50967db 201003_02
hgs
parents:
diff changeset
   575
        RBuf& aEntryIdList, const TDesC& aColName )
7feec50967db 201003_02
hgs
parents:
diff changeset
   576
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   577
    DEBUG(("_CA_:CASqlQueryCreator::CreateIdListL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   578
    //    Create an list of ids seperated by commas
7feec50967db 201003_02
hgs
parents:
diff changeset
   579
    if( aIdEntryCount > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   580
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   581
        aEntryIdList.CreateL( aIdEntryCount * ( aColName.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   582
                + KMaxIntNumLength ) - 1 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   583
        for( TInt i = 0; i < aIdEntryCount; i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   584
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   585
            aEntryIdList.Append( aColName );
7feec50967db 201003_02
hgs
parents:
diff changeset
   586
            aEntryIdList.AppendNum( i );
7feec50967db 201003_02
hgs
parents:
diff changeset
   587
            if( i != aIdEntryCount - 1 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   588
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   589
                aEntryIdList.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   590
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   591
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   592
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   593
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   594
7feec50967db 201003_02
hgs
parents:
diff changeset
   595
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   596
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   597
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   598
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   599
void CaSqlQueryCreator::CreateGetEntriesQueryByQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   600
        const CCaInnerQuery* aQuery, CCaSqlQuery* aSqlQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   601
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   602
    DEBUG(("_CA_:CASqlQueryCreator::CreateGetEntriesQueryByQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   603
    RBuf whereStatement;
7feec50967db 201003_02
hgs
parents:
diff changeset
   604
    whereStatement.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   605
7feec50967db 201003_02
hgs
parents:
diff changeset
   606
    TUint flagsOn = aQuery->GetFlagsOn();
7feec50967db 201003_02
hgs
parents:
diff changeset
   607
    if( flagsOn != 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   608
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   609
        whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   610
                + KSQLGetEntryFlagsOn().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   611
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   612
        whereStatement.Append( KSQLGetEntryFlagsOn );
7feec50967db 201003_02
hgs
parents:
diff changeset
   613
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   614
7feec50967db 201003_02
hgs
parents:
diff changeset
   615
    TUint flagsOff = aQuery->GetFlagsOff();
7feec50967db 201003_02
hgs
parents:
diff changeset
   616
    if( flagsOff != 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   617
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   618
        whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   619
                + KSQLGetEntryFlagsOff().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   620
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   621
        whereStatement.Append( KSQLGetEntryFlagsOff );
7feec50967db 201003_02
hgs
parents:
diff changeset
   622
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   623
7feec50967db 201003_02
hgs
parents:
diff changeset
   624
    TInt role = aQuery->GetRole();
7feec50967db 201003_02
hgs
parents:
diff changeset
   625
    if( role != 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
                + KSQLGetEntryRole().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   629
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   630
        whereStatement.Append( KSQLGetEntryRole );
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 uid = aQuery->GetUid();
7feec50967db 201003_02
hgs
parents:
diff changeset
   634
    if( uid != 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
                + KSQLGetEntryUid().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   638
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   639
        whereStatement.Append( KSQLGetEntryUid );
7feec50967db 201003_02
hgs
parents:
diff changeset
   640
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   641
7feec50967db 201003_02
hgs
parents:
diff changeset
   642
    const CDesC16ArrayFlat* typeNames = aQuery->GetEntryTypeNames();
7feec50967db 201003_02
hgs
parents:
diff changeset
   643
7feec50967db 201003_02
hgs
parents:
diff changeset
   644
    if( typeNames && typeNames->MdcaCount() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   645
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   646
        RBuf typeNameWhereStatement;
7feec50967db 201003_02
hgs
parents:
diff changeset
   647
        typeNameWhereStatement.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   648
        for( TInt i = 0; i < typeNames->MdcaCount(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   649
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   650
            typeNameWhereStatement.ReAllocL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   651
                    typeNameWhereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   652
                    + typeNames->MdcaPoint( i ).Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   653
                    + KSingleQuotes().Length() * 2 + KComma().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   654
            typeNameWhereStatement.Append( KSingleQuotes );
7feec50967db 201003_02
hgs
parents:
diff changeset
   655
            typeNameWhereStatement.Append( typeNames->MdcaPoint( i ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   656
            typeNameWhereStatement.Append( KSingleQuotes );
7feec50967db 201003_02
hgs
parents:
diff changeset
   657
            if( i != typeNames->MdcaCount() - 1 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   658
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   659
                typeNameWhereStatement.Append( KComma );
7feec50967db 201003_02
hgs
parents:
diff changeset
   660
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   661
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   662
        whereStatement.ReAllocL( KAnd().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   663
                + KSQLGetEntryTypeNames().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   664
                + typeNameWhereStatement.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   665
                + whereStatement.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   666
        whereStatement.Append( KAnd );
7feec50967db 201003_02
hgs
parents:
diff changeset
   667
        whereStatement.AppendFormat( KSQLGetEntryTypeNames,
7feec50967db 201003_02
hgs
parents:
diff changeset
   668
                &typeNameWhereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   669
        CleanupStack::PopAndDestroy( &typeNameWhereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   670
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   671
7feec50967db 201003_02
hgs
parents:
diff changeset
   672
    TInt groupId = aQuery->GetParentId();
7feec50967db 201003_02
hgs
parents:
diff changeset
   673
    RBuf query;
7feec50967db 201003_02
hgs
parents:
diff changeset
   674
    query.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   675
    if( groupId > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   676
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   677
        query.CreateL( KSQLGetListByParentId().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   678
                + whereStatement.Length() - 2 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   679
        query.AppendFormat( KSQLGetListByParentId, &whereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   680
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   681
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   682
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   683
        query.CreateL( KSQLGetList().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   684
        query.Append( KSQLGetList );
7feec50967db 201003_02
hgs
parents:
diff changeset
   685
        if( whereStatement.Length() >= KAnd().Length() )
7feec50967db 201003_02
hgs
parents:
diff changeset
   686
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   687
            TPtrC ptrWhereStatement( whereStatement.Right(
7feec50967db 201003_02
hgs
parents:
diff changeset
   688
                    whereStatement.Length() - KAnd().Length() ) );
7feec50967db 201003_02
hgs
parents:
diff changeset
   689
            query.ReAllocL( KSQLGetList().Length() + KWhere().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   690
                    + ptrWhereStatement.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   691
            query.Append( KWhere );
7feec50967db 201003_02
hgs
parents:
diff changeset
   692
            query.Append( ptrWhereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   693
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   694
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   695
7feec50967db 201003_02
hgs
parents:
diff changeset
   696
    CCaInnerQuery::TSortAttribute sort = aQuery->GetSort();
7feec50967db 201003_02
hgs
parents:
diff changeset
   697
    ModifyQueryForSortOrderL( sort, query, groupId > 0 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   698
7feec50967db 201003_02
hgs
parents:
diff changeset
   699
    if( aQuery->GetCount() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   700
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   701
        query.ReAllocL( query.Length() + KLimit().Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   702
                + KMaxIntNumLength );
7feec50967db 201003_02
hgs
parents:
diff changeset
   703
        query.Append( KLimit );
7feec50967db 201003_02
hgs
parents:
diff changeset
   704
        TInt limitCount = aQuery->GetCount();
7feec50967db 201003_02
hgs
parents:
diff changeset
   705
        query.AppendNum( limitCount );
7feec50967db 201003_02
hgs
parents:
diff changeset
   706
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   707
7feec50967db 201003_02
hgs
parents:
diff changeset
   708
    aSqlQuery->SetQueryL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   709
    CleanupStack::PopAndDestroy( &query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   710
    CleanupStack::PopAndDestroy( &whereStatement );
7feec50967db 201003_02
hgs
parents:
diff changeset
   711
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   712
7feec50967db 201003_02
hgs
parents:
diff changeset
   713
7feec50967db 201003_02
hgs
parents:
diff changeset
   714
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   715
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   716
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   717
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   718
void CaSqlQueryCreator::CreateCustomSortQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   719
        const RArray<TInt>& aEntryIds,
7feec50967db 201003_02
hgs
parents:
diff changeset
   720
        RPointerArray<CCaSqlQuery>& aSqlQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   721
        RSqlDatabase& aSqlDb )
7feec50967db 201003_02
hgs
parents:
diff changeset
   722
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   723
    for( TInt i = 0; i < aEntryIds.Count(); i++ )
7feec50967db 201003_02
hgs
parents:
diff changeset
   724
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   725
        CCaSqlQuery* query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   726
        query->SetQueryL( KSQLUpdatePositionInGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   727
        aSqlQuery.Append( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   728
        CleanupStack::Pop( query );
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
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   737
void CaSqlQueryCreator::ModifyQueryForSortOrderL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   738
        const CCaInnerQuery::TSortAttribute aSortType, RBuf& aQuery,
7feec50967db 201003_02
hgs
parents:
diff changeset
   739
        TBool aSortByGroup )
7feec50967db 201003_02
hgs
parents:
diff changeset
   740
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   741
    DEBUG(("_CA_:CASqlQueryCreator::ModifyQueryForSortOrderL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   742
    switch ( aSortType )
7feec50967db 201003_02
hgs
parents:
diff changeset
   743
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   744
        case CCaInnerQuery::Name:
7feec50967db 201003_02
hgs
parents:
diff changeset
   745
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   746
            aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   747
                    + KSQLSortOrderNameAsc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   748
            aQuery.Append( KSQLSortOrderNameAsc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   749
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   750
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   751
        case CCaInnerQuery::NameDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   752
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   753
            aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   754
                    + KSQLSortOrderNameDesc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   755
            aQuery.Append( KSQLSortOrderNameDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   756
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   757
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   758
        case CCaInnerQuery::CreatedTimestamp:
7feec50967db 201003_02
hgs
parents:
diff changeset
   759
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   760
            aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   761
                    + KSQLSortOrderCreatedTimestampAsc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   762
            aQuery.Append( KSQLSortOrderCreatedTimestampAsc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   763
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   764
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   765
        case CCaInnerQuery::CreatedTimestampDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   766
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   767
            aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   768
                    + KSQLSortOrderCreatedTimestampDesc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   769
            aQuery.Append( KSQLSortOrderCreatedTimestampDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   770
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   771
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   772
        case CCaInnerQuery::MostUsed:
7feec50967db 201003_02
hgs
parents:
diff changeset
   773
        case CCaInnerQuery::MostUsedDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   774
        case CCaInnerQuery::LastUsed:
7feec50967db 201003_02
hgs
parents:
diff changeset
   775
        case CCaInnerQuery::LastUsedDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   776
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   777
            ModifyQueryForSortOrderLastMostUsedL( aSortType, aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   778
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   779
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   780
        case CCaInnerQuery::DefaultDesc:
7feec50967db 201003_02
hgs
parents:
diff changeset
   781
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   782
            if( aSortByGroup )
7feec50967db 201003_02
hgs
parents:
diff changeset
   783
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   784
                aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   785
                        + KSQLSortOrderDefaultDesc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   786
                aQuery.Append( KSQLSortOrderDefaultDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   787
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   788
            else
7feec50967db 201003_02
hgs
parents:
diff changeset
   789
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   790
                aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   791
                        + KSQLSortOrderIdDesc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   792
                aQuery.Append( KSQLSortOrderIdDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   793
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   794
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   795
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   796
        case CCaInnerQuery::Default:
7feec50967db 201003_02
hgs
parents:
diff changeset
   797
        default:
7feec50967db 201003_02
hgs
parents:
diff changeset
   798
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   799
            if( aSortByGroup )
7feec50967db 201003_02
hgs
parents:
diff changeset
   800
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   801
                aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   802
                        + KSQLSortOrderDefault().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   803
                aQuery.Append( KSQLSortOrderDefault );
7feec50967db 201003_02
hgs
parents:
diff changeset
   804
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   805
            else
7feec50967db 201003_02
hgs
parents:
diff changeset
   806
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   807
                aQuery.ReAllocL( aQuery.Length()
7feec50967db 201003_02
hgs
parents:
diff changeset
   808
                        + KSQLSortOrderIdAsc().Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   809
                aQuery.Append( KSQLSortOrderIdAsc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   810
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   811
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   812
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   813
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   814
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   815
7feec50967db 201003_02
hgs
parents:
diff changeset
   816
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   817
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   818
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   819
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   820
void CaSqlQueryCreator::ModifyQueryForSortOrderLastMostUsedL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   821
        const CCaInnerQuery::TSortAttribute aSortType, RBuf& aQuery )
7feec50967db 201003_02
hgs
parents:
diff changeset
   822
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   823
    DEBUG(("_CA_:CASqlQueryCreator::ModifyQueryForSortOrderLastMostUsedL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   824
7feec50967db 201003_02
hgs
parents:
diff changeset
   825
    RBuf descPart;
7feec50967db 201003_02
hgs
parents:
diff changeset
   826
    descPart.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   827
    if( aSortType == CCaInnerQuery::MostUsedDesc || 
7feec50967db 201003_02
hgs
parents:
diff changeset
   828
         aSortType == CCaInnerQuery::LastUsedDesc )
7feec50967db 201003_02
hgs
parents:
diff changeset
   829
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   830
        descPart.CreateL( KDesc );
7feec50967db 201003_02
hgs
parents:
diff changeset
   831
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   832
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   833
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   834
        descPart.CreateL( KNullDesC );
7feec50967db 201003_02
hgs
parents:
diff changeset
   835
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   836
7feec50967db 201003_02
hgs
parents:
diff changeset
   837
    RBuf usageDataQuery;
7feec50967db 201003_02
hgs
parents:
diff changeset
   838
    usageDataQuery.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   839
    if( aSortType == CCaInnerQuery::MostUsed || 
7feec50967db 201003_02
hgs
parents:
diff changeset
   840
         aSortType == CCaInnerQuery::MostUsedDesc )
7feec50967db 201003_02
hgs
parents:
diff changeset
   841
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   842
        usageDataQuery.CreateL( KSQLGetMostUsed );
7feec50967db 201003_02
hgs
parents:
diff changeset
   843
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   844
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   845
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   846
        usageDataQuery.CreateL( KSQLGetLastUsed );
7feec50967db 201003_02
hgs
parents:
diff changeset
   847
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   848
7feec50967db 201003_02
hgs
parents:
diff changeset
   849
    RBuf newQuery;
7feec50967db 201003_02
hgs
parents:
diff changeset
   850
    newQuery.CleanupClosePushL();
7feec50967db 201003_02
hgs
parents:
diff changeset
   851
    newQuery.CreateL( KSQLGetListByLaunchDataPart1().Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   852
            KSQLGetListByLaunchDataPart1().Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   853
            KSQLGetListByLaunchDataPart3().Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   854
            usageDataQuery.Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   855
            descPart.Length() +
7feec50967db 201003_02
hgs
parents:
diff changeset
   856
            aQuery.Length() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   857
    newQuery.Append( KSQLGetListByLaunchDataPart1 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   858
    newQuery.Append( aQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   859
    newQuery.Append( KSQLGetListByLaunchDataPart2 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   860
    newQuery.Append( usageDataQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   861
    newQuery.Append( KSQLGetListByLaunchDataPart3 );
7feec50967db 201003_02
hgs
parents:
diff changeset
   862
    newQuery.Append( descPart );
7feec50967db 201003_02
hgs
parents:
diff changeset
   863
    aQuery.Close();
7feec50967db 201003_02
hgs
parents:
diff changeset
   864
    aQuery.CreateL( newQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   865
7feec50967db 201003_02
hgs
parents:
diff changeset
   866
    CleanupStack::PopAndDestroy( &newQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   867
    CleanupStack::PopAndDestroy( &usageDataQuery );
7feec50967db 201003_02
hgs
parents:
diff changeset
   868
    CleanupStack::PopAndDestroy( &descPart );
7feec50967db 201003_02
hgs
parents:
diff changeset
   869
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   870
7feec50967db 201003_02
hgs
parents:
diff changeset
   871
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   872
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   873
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   874
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   875
TBool CaSqlQueryCreator::CreateOrganizeQueryL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   876
        const RArray<TInt>& aEntryIds, TCaOperationParams aParams,
7feec50967db 201003_02
hgs
parents:
diff changeset
   877
        RSqlDatabase& aSqlDb, RPointerArray<CCaSqlQuery>& aSqlQueries )
7feec50967db 201003_02
hgs
parents:
diff changeset
   878
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   879
    DEBUG(("_CA_:CASqlQueryCreator::CreateOrganizeQueryL"));
7feec50967db 201003_02
hgs
parents:
diff changeset
   880
    TBool revereseInsertOrder = false;
7feec50967db 201003_02
hgs
parents:
diff changeset
   881
    TInt idCount( aEntryIds.Count() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   882
7feec50967db 201003_02
hgs
parents:
diff changeset
   883
    CCaSqlQuery * query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   884
    PopulateQueryWithIdListL( idCount, query,
7feec50967db 201003_02
hgs
parents:
diff changeset
   885
            KSQLOrganizeRemoveEntriesFromGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   886
    query->SetTableType( CCaSqlQuery::EGroupTableRemove );
7feec50967db 201003_02
hgs
parents:
diff changeset
   887
    aSqlQueries.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   888
    CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   889
7feec50967db 201003_02
hgs
parents:
diff changeset
   890
    switch( aParams.iOperationType )
7feec50967db 201003_02
hgs
parents:
diff changeset
   891
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   892
        case TCaOperationParams::EInsert:
7feec50967db 201003_02
hgs
parents:
diff changeset
   893
7feec50967db 201003_02
hgs
parents:
diff changeset
   894
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   895
            if( aParams.iBeforeEntryId <= 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   896
                {
7feec50967db 201003_02
hgs
parents:
diff changeset
   897
                User::Leave( KErrNotSupported );
7feec50967db 201003_02
hgs
parents:
diff changeset
   898
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   899
7feec50967db 201003_02
hgs
parents:
diff changeset
   900
            query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   901
            query->SetQueryL( KSQLOrganizeInsertToGroupBasic );
7feec50967db 201003_02
hgs
parents:
diff changeset
   902
            query->SetTableType( CCaSqlQuery::EGroupTableInsert );
7feec50967db 201003_02
hgs
parents:
diff changeset
   903
            aSqlQueries.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   904
            CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   905
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   906
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   907
        case TCaOperationParams::EAppend:
7feec50967db 201003_02
hgs
parents:
diff changeset
   908
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   909
            CCaSqlQuery * query = CCaSqlQuery::NewLC( aSqlDb );
7feec50967db 201003_02
hgs
parents:
diff changeset
   910
            query->SetQueryL( KSQLOrganizeAppendToGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   911
            query->SetTableType( CCaSqlQuery::EGroupTableInsert );
7feec50967db 201003_02
hgs
parents:
diff changeset
   912
            aSqlQueries.AppendL( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   913
            CleanupStack::Pop( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   914
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   915
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   916
        case TCaOperationParams::EPrepend:
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( KSQLOrganizeInsertToGroupPrepend );
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
7feec50967db 201003_02
hgs
parents:
diff changeset
   924
            revereseInsertOrder = true;
7feec50967db 201003_02
hgs
parents:
diff changeset
   925
7feec50967db 201003_02
hgs
parents:
diff changeset
   926
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   927
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   928
        case TCaOperationParams::ERemove:
7feec50967db 201003_02
hgs
parents:
diff changeset
   929
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   930
            break;
7feec50967db 201003_02
hgs
parents:
diff changeset
   931
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   932
        default:
7feec50967db 201003_02
hgs
parents:
diff changeset
   933
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   934
            User::Leave( KErrNotSupported );
7feec50967db 201003_02
hgs
parents:
diff changeset
   935
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   936
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   937
    return revereseInsertOrder;
7feec50967db 201003_02
hgs
parents:
diff changeset
   938
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   939
7feec50967db 201003_02
hgs
parents:
diff changeset
   940
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   941
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   942
// ---------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
   943
//
7feec50967db 201003_02
hgs
parents:
diff changeset
   944
CaSqlQueryCreator::TIconType CaSqlQueryCreator::CheckIconType( const CCaInnerEntry* aEntry )
7feec50967db 201003_02
hgs
parents:
diff changeset
   945
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   946
    CaSqlQueryCreator::TIconType iconType;
88
hgs
parents: 85
diff changeset
   947
    if( 
hgs
parents: 85
diff changeset
   948
        aEntry->GetIcon().iApplicationId.Length() == 0 &&
hgs
parents: 85
diff changeset
   949
        aEntry->GetIcon().iSkinId.Length() == 0 &&
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   950
        aEntry->GetIcon().iFileName.Length() == 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   951
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   952
        if( aEntry->GetIconId() > 0 )
7feec50967db 201003_02
hgs
parents:
diff changeset
   953
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   954
            iconType = ENullIconToRemove;
7feec50967db 201003_02
hgs
parents:
diff changeset
   955
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   956
        else
7feec50967db 201003_02
hgs
parents:
diff changeset
   957
            {
7feec50967db 201003_02
hgs
parents:
diff changeset
   958
            iconType = ENullIcon;
7feec50967db 201003_02
hgs
parents:
diff changeset
   959
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   960
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   961
    else
7feec50967db 201003_02
hgs
parents:
diff changeset
   962
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   963
        iconType = EProperIcon;
7feec50967db 201003_02
hgs
parents:
diff changeset
   964
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   965
    return iconType;
7feec50967db 201003_02
hgs
parents:
diff changeset
   966
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   967
7feec50967db 201003_02
hgs
parents:
diff changeset
   968