void CTransactionsStep::MultipleCommitL(const TBool aTrans) { RPointerArray<CContactItem> itemarray( 500, 512 ); TCleanupItem tclean(ArrayCleanup,&itemarray); CleanupStack::PushL( tclean ); TInt k = 0; iIterate->Reset(); for(; k < iContacts; ++k) { itemarray.Append( iContactsDatabase->OpenContactLX( iIterate->NextL(), *iViewAll ) ); iFields = &( itemarray[k]->CardFields() ); SetAllFieldsL( GetNextFieldL(KStringFields, KField, 0 == k ) ); } iIterate->Reset(); if(aTrans) { for( k = iContacts - 1; k >=0 ; --k ) { iContactsDatabase->doCommitContactL(*itemarray[k], ETrue, ETrue ); CleanupStack::Pop(); } } else { for( k = iContacts - 1; k >=0 ; --k ) { iContactsDatabase->CommitContactL(*itemarray[k]); CleanupStack::Pop(); } } CleanupStack::PopAndDestroy();//tclean }
void CTransactionsStep::UpdateCommitTransactionTestL(const TBool aRevert) { CPerformanceFunctionalityBase::InitializeL(); const TContactItemId cid = iIterate->NextL(); const TContactItemId cid2 = iIterate->NextL(); iContactsDatabase->DatabaseBeginLC(EFalse); OpenL( cid ); SetAllFieldsL( GetNextFieldL(KStringFields, KField, ETrue) ); CommitL(ETrue); EndTransactionL(aRevert); iContactsDatabase->DatabaseBeginLC(EFalse); ReadL( cid2 ); SetAllFieldsL( GetNextFieldL(KStringFields, KField, EFalse) ); iContactsDatabase->UpdateContactLC(cid2, iContactItem); CleanupStack::PopAndDestroy(); CloseL( ETrue ); EndTransactionL(aRevert); if(aRevert) { iIterate->Reset(); TInt i = 0; for(; i < iContacts; ++i) { ReadL( iIterate->NextL() ); TESTPRINTI( CheckAllFieldsL(KNullDesC), i ); CloseL( ETrue ); } } else { ReadL( cid ); TESTPRINT( CheckAllFieldsL( GetNextFieldL(KStringFields, KField, ETrue) ) ); CloseL( ETrue ); ReadL( cid2 ); TESTPRINT( CheckAllFieldsL( GetNextFieldL(KStringFields, KField, EFalse) ) ); CloseL( ETrue ); } }
/** populates all contacts either moderately, fully, or not at all */ void CTransactionsStep::ModifyContactsL(const FieldFullness aField) { if(aField == EEmpty) { return; } iIterate->Reset(); TInt j = 0; for(; j < iContacts; ++j) { OpenL(iIterate->NextL()); if(aField == EFull) { SetAllFieldsL( GetFieldL(KStringFields, KField, 2) ); } else { SetManyFieldsL(GetFieldL(KStringFields, KField, 4) , KMediumFields); } CommitL(EFalse); } }
void CTransactionsStep::ManyUpdateCommitTransactionTestL( const TBool aRevert ) { iContacts = 1000; CPerformanceFunctionalityBase::InitializeL(); RCntList backuplist; backuplist.CopyL( *iIterate ); iContactsDatabase->DatabaseBeginLC(EFalse); TInt added = 0; TInt deleted = 0; TInt updated = 0; TInt k = 0; for(; k < iContacts; k++) { switch( k % KNumCUDOperations ) { case ( EOpen ): { OpenL( iIterate->NextL() ); //if setting first contact read first field from stringfields section //otherwise read next field in list of fields stored in ini file secion SetAllFieldsL( GetNextFieldL(KStringFields, KField, 0 == k ) ); CommitL(ETrue); ++updated; } break; case ( EUpdate ): { TContactItemId cid = iIterate->NextL(); ReadL( cid ); //if setting first contact read first field from stringfields section //otherwise read next field in list of fields stored in ini file secion SetAllFieldsL( GetNextFieldL(KStringFields, KField, 0 == k ) ); iContactsDatabase->UpdateContactLC(cid, iContactItem); CleanupStack::PopAndDestroy(); CloseL( ETrue ); ++updated; } break; case ( EAddDelete ): { DeleteContactL( iIterate->NextL(), ETrue ); //iterator position is shifted back, so that next nextL call is correct iIterate->PreviousL(); ++deleted; //Empty contact is appended to the database, //Contact id is stored at the end of iterator list not at current iterator position AddEmptyContactsL( 1, ETrue ); ++added; } break; default: { _LIT(KInvalidTest, "Invalid Case"); User::Panic(KInvalidTest, 555); } break; } } EndTransactionL(aRevert); TESTPRINT( iContactsDatabase->CountL() == iContacts ); CContactItemFieldSet& templateFields = iTemplate->CardFields(); TInt fieldsCount = templateFields.Count() - 1; if(aRevert) { //if transaction is reverted / rolledback, all contacts should be //unchanged, i.e. they should all contain empty fields only backuplist.Reset(); TInt err = KErrNone; for(k = 0; k < iContacts; ++k) { TRAP(err, ReadL( backuplist.NextL() ) ); TESTPRINTI( KErrNone == err, k ); TESTPRINTI( CheckAllFieldsL( KNullDesC ), k ); CloseL( ETrue ); } } else { iIterate->Reset(); //all updated contact should contain the appropriated updated field value for(k = 0; k < updated; ++k) { ReadL( iIterate->NextL() ); TESTPRINTI(iFields->Count() == fieldsCount, k); //if reading first contact read first field from stringfields section //otherwise read next field in list of fields stored in ini file secion TESTPRINTI( CheckAllFieldsL( GetNextFieldL(KStringFields, KField, 0 == k ) ), k ); CloseL( ETrue ); } //all newly added contacts, should contain empty fields only. for(k = 0; k < added; ++k) { ReadL( iIterate->NextL() ); TESTPRINTI( iFields->Count() == fieldsCount, k); TESTPRINTI( CheckAllFieldsL( KNullDesC ), k); CloseL( ETrue ); } } }
// --------------------------------------------------------------------------- // CAppMngr2InfoIterator::BaseConstructL() // --------------------------------------------------------------------------- // EXPORT_C void CAppMngr2InfoIterator::BaseConstructL() { iKeys = new ( ELeave ) CDesCArrayFlat( KGranularity ); iValues = new ( ELeave ) CDesCArrayFlat( KGranularity ); SetAllFieldsL(); }