// --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- // void CaSqlQueryCreator::CreateFindIconQueryL( CCaInnerEntry* aEntry, CCaSqlQuery* aQuery) { RBuf iconQuery; iconQuery.CleanupClosePushL(); iconQuery.CreateL( KSQLGetIconIdWhere ); if( aEntry->Icon()->FileName().Compare( KNullDesC ) ) { iconQuery.ReAllocL( iconQuery.Length() + KSQLUpdateIconFileName().Length() + KAnd().Length() ); iconQuery.Append( KSQLUpdateIconFileName ); iconQuery.Append( KAnd ); } else { iconQuery.ReAllocL( iconQuery.Length() + KSQLEmptyIconFileName().Length() + KAnd().Length() ); iconQuery.Append( KSQLEmptyIconFileName ); iconQuery.Append( KAnd ); } if( aEntry->Icon()->SkinId().Compare( KNullDesC ) ) { iconQuery.ReAllocL( iconQuery.Length() + KSQLUpdateIconSkinId().Length() + KAnd().Length() ); iconQuery.Append( KSQLUpdateIconSkinId ); iconQuery.Append( KAnd ); } else { iconQuery.ReAllocL( iconQuery.Length() + KSQLEmptyIconSkinId().Length() + KAnd().Length() ); iconQuery.Append( KSQLEmptyIconSkinId ); iconQuery.Append( KAnd ); } if( aEntry->Icon()->ApplicationId().Compare( KNullDesC ) ) { iconQuery.ReAllocL( iconQuery.Length() + KSQLUpdateIconAppId().Length() + KAnd().Length() ); iconQuery.Append( KSQLUpdateIconAppId ); iconQuery.Append( KAnd ); } else { iconQuery.ReAllocL( iconQuery.Length() + KSQLEmptyIconAppId().Length() + KAnd().Length() ); iconQuery.Append( KSQLEmptyIconAppId ); iconQuery.Append( KAnd ); } if (!iconQuery.Right(KAnd().Length()).Compare(KAnd)) { iconQuery.Delete( iconQuery.Length() - KAnd().Length(), KAnd().Length() ); } aQuery->SetQueryL( iconQuery ); CleanupStack::PopAndDestroy( &iconQuery ); }
// --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- // void CaSqlQueryCreator::CreateUpdateIconQueryL( const CCaInnerEntry* aEntry, CCaSqlQuery* aQuery ) { DEBUG(("_CA_:CASqlQueryCreator::CreateUpdateIconQueryL")); RBuf query; query.CleanupClosePushL(); query.CreateL( KSQLUpdateIcon().Length() ); query.Append( KSQLUpdateIcon ); if( aEntry->Icon()->FileName().Compare( KNullDesC ) ) { query.ReAllocL( query.Length() + KSQLUpdateIconFileName().Length() + KComma().Length() ); query.Append( KSQLUpdateIconFileName ); query.Append( KComma ); } if( aEntry->Icon()->SkinId().Compare( KNullDesC ) ) { query.ReAllocL( query.Length() + KSQLUpdateIconSkinId().Length() + KComma().Length() ); query.Append( KSQLUpdateIconSkinId ); query.Append( KComma ); } if( aEntry->Icon()->ApplicationId().Compare(KNullDesC) ) { query.ReAllocL( query.Length() + KSQLUpdateIconAppId().Length() + KComma().Length() ); query.Append( KSQLUpdateIconAppId ); } if( !query.Right( KComma().Length() ).Compare( KComma ) ) { query.Delete( query.Length() - KComma().Length(), KComma().Length() ); } // add WHERE expr query.ReAllocL( query.Length() + KSQLUpdateIconWhere().Length() ); query.Append( KSQLUpdateIconWhere ); aQuery->SetQueryL( query ); aQuery->SetTableType( CCaSqlQuery::EIconTable ); CleanupStack::PopAndDestroy( &query ); }
// --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- // void CaSqlQueryCreator::CreateGetEntriesQueryByQueryL( const CCaInnerQuery* aQuery, CCaSqlQuery* aSqlQuery ) { DEBUG(("_CA_:CASqlQueryCreator::CreateGetEntriesQueryByQueryL")); RBuf whereStatement; whereStatement.CleanupClosePushL(); TUint flagsOn = aQuery->GetFlagsOn(); if( flagsOn != 0 ) { whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length() + KSQLGetEntryFlagsOn().Length() ); whereStatement.Append( KAnd ); whereStatement.Append( KSQLGetEntryFlagsOn ); } TUint flagsOff = aQuery->GetFlagsOff(); if( flagsOff != 0 ) { whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length() + KSQLGetEntryFlagsOff().Length() ); whereStatement.Append( KAnd ); whereStatement.Append( KSQLGetEntryFlagsOff ); } TInt role = aQuery->GetRole(); if( role != 0 ) { whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length() + KSQLGetEntryRole().Length() ); whereStatement.Append( KAnd ); whereStatement.Append( KSQLGetEntryRole ); } TUint uid = aQuery->GetUid(); if( uid != 0 ) { whereStatement.ReAllocL( KAnd().Length() + whereStatement.Length() + KSQLGetEntryUid().Length() ); whereStatement.Append( KAnd ); whereStatement.Append( KSQLGetEntryUid ); } const CDesC16ArrayFlat* typeNames = aQuery->GetEntryTypeNames(); if( typeNames && typeNames->MdcaCount() > 0 ) { RBuf typeNameWhereStatement; typeNameWhereStatement.CleanupClosePushL(); for( TInt i = 0; i < typeNames->MdcaCount(); i++ ) { typeNameWhereStatement.ReAllocL( typeNameWhereStatement.Length() + typeNames->MdcaPoint( i ).Length() + KSingleQuotes().Length() * 2 + KComma().Length() ); typeNameWhereStatement.Append( KSingleQuotes ); typeNameWhereStatement.Append( typeNames->MdcaPoint( i ) ); typeNameWhereStatement.Append( KSingleQuotes ); if( i != typeNames->MdcaCount() - 1 ) { typeNameWhereStatement.Append( KComma ); } } whereStatement.ReAllocL( KAnd().Length() + KSQLGetEntryTypeNames().Length() + typeNameWhereStatement.Length() + whereStatement.Length() ); whereStatement.Append( KAnd ); whereStatement.AppendFormat( KSQLGetEntryTypeNames, &typeNameWhereStatement ); CleanupStack::PopAndDestroy( &typeNameWhereStatement ); } if( aQuery->GetAttributes().Count() ) { RBuf whereAttributes; whereAttributes.CleanupClosePushL(); whereAttributes.CreateL( KEmpty ); for( TInt j=1; j <= aQuery->GetAttributes().Count(); j++ ) { // at1.AT_NAME = 'Attribute_Name_1' AND at1.AT_VALUE = 'Attribute_VALUE_1' TPtrC atrName( aQuery->GetAttributes().operator [](j-1)->Name() ); TPtrC atrValue( aQuery->GetAttributes().operator [](j-1)->Value() ); whereAttributes.ReAllocL( whereAttributes.Length() + 2 * KAnd().Length() + 4 * KSingleQuotes().Length() + 2 * KMaxIntNumLength + 2 * KAt().Length() + 2 * KDot().Length() + 2 * KEqual().Length() + KColumnAttrName().Length() + KColumnAttrValue().Length() + atrName.Length() + atrValue.Length() ); whereAttributes.Append( KAnd ); whereAttributes.Append( KAt ); whereAttributes.AppendNum( j ); whereAttributes.Append( KDot ); whereAttributes.Append( KColumnAttrName ); whereAttributes.Append( KEqual ); whereAttributes.Append( KSingleQuotes ); whereAttributes.Append( atrName ); whereAttributes.Append( KSingleQuotes ); whereAttributes.Append( KAnd ); whereAttributes.Append( KAt ); whereAttributes.AppendNum( j ); whereAttributes.Append( KDot ); whereAttributes.Append( KColumnAttrValue ); whereAttributes.Append( KEqual ); whereAttributes.Append( KSingleQuotes ); whereAttributes.Append( atrValue ); whereAttributes.Append( KSingleQuotes ); } whereStatement.ReAllocL( whereStatement.Length() + whereAttributes.Length() ); whereStatement.Append( whereAttributes ); CleanupStack::PopAndDestroy( &whereAttributes ); } RBuf leftJoins; leftJoins.CleanupClosePushL(); leftJoins.CreateL( KEmpty ); if( aQuery->GetAttributes().Count() ) { for( TInt j=1; j <= aQuery->GetAttributes().Count(); j++ ) { // LEFT JOIN CA_ATTRIBUTE as at1 ON ENTRY_ID = at1.AT_ENTRY_ID leftJoins.ReAllocL( leftJoins.Length() + KLeftJoinCaAttrubute1().Length() + KMaxIntNumLength + KLeftJoinCaAttrubute2().Length() + KMaxIntNumLength + KLeftJoinCaAttrubute3().Length() ); leftJoins.Append( KLeftJoinCaAttrubute1 ); leftJoins.AppendNum( j ); leftJoins.Append( KLeftJoinCaAttrubute2 ); leftJoins.AppendNum( j ); leftJoins.Append( KLeftJoinCaAttrubute3 ); } } whereStatement.ReAllocL( whereStatement.Length() + KGroupBy().Length() + KColumnEntryId().Length() ); whereStatement.Append( KGroupBy ); whereStatement.Append( KColumnEntryId ); TInt groupId = aQuery->GetParentId(); RBuf query; query.CleanupClosePushL(); if( groupId > 0 ) { RBuf getListByParentId2withWhere; getListByParentId2withWhere.CleanupClosePushL(); getListByParentId2withWhere.CreateL( KSQLGetListByParentId2().Length() + whereStatement.Length() ); getListByParentId2withWhere.AppendFormat( KSQLGetListByParentId2, &whereStatement ); query.ReAllocL( KSQLGetListByParentId1().Length() + leftJoins.Length() + getListByParentId2withWhere.Length() ); query.Append( KSQLGetListByParentId1 ); query.Append( leftJoins ); query.Append( getListByParentId2withWhere ); CleanupStack::PopAndDestroy( &getListByParentId2withWhere ); } else if ( aQuery->GetChildId() > 0 ) { RBuf getListByCildIdwithWhere; getListByCildIdwithWhere.CleanupClosePushL(); getListByCildIdwithWhere.CreateL( KSQLGetListByChildId().Length() + whereStatement.Length() ); getListByCildIdwithWhere.AppendFormat( KSQLGetListByChildId, &whereStatement ); query.ReAllocL( KSQLGetListByParentId1().Length() + leftJoins.Length() + getListByCildIdwithWhere.Length() ); query.Append( KSQLGetListByParentId1 ); query.Append( leftJoins ); query.Append( getListByCildIdwithWhere ); CleanupStack::PopAndDestroy( &getListByCildIdwithWhere ); } else { query.CreateL( KSQLGetList1().Length() ); query.Append( KSQLGetList1 ); query.ReAllocL( query.Length() + leftJoins.Length() + KSQLGetList2().Length() ); query.Append( leftJoins ); query.Append( KSQLGetList2 ); if( whereStatement.Length() >= KAnd().Length() ) { TPtrC ptrWhereStatement( whereStatement.Right( whereStatement.Length() - KAnd().Length() ) ); query.ReAllocL( query.Length() + KWhere().Length() + ptrWhereStatement.Length() ); query.Append( KWhere ); query.Append( ptrWhereStatement ); } } CCaInnerQuery::TSortAttribute sort = aQuery->GetSort(); ModifyQueryForSortOrderL( sort, query, groupId > 0 ); if( aQuery->GetCount() > 0 ) { query.ReAllocL( query.Length() + KLimit().Length() + KMaxIntNumLength ); query.Append( KLimit ); TInt limitCount = aQuery->GetCount(); query.AppendNum( limitCount ); } aSqlQuery->SetQueryL( query ); CleanupStack::PopAndDestroy( &query ); CleanupStack::PopAndDestroy( &leftJoins ); CleanupStack::PopAndDestroy( &whereStatement ); }