diff -r 6752808b2036 -r 646a02f170b9 metadataengine/server/src/mdsmanipulationengine.cpp --- a/metadataengine/server/src/mdsmanipulationengine.cpp Fri Feb 19 23:14:48 2010 +0200 +++ b/metadataengine/server/src/mdsmanipulationengine.cpp Fri Mar 12 15:44:28 2010 +0200 @@ -34,14 +34,6 @@ __USES_LOGGER -// ======== LOCAL FUNCTIONS ======== - -static void TransactionCleanupL(void* aConn) - { - CMdSSqLiteConnection* conn = (CMdSSqLiteConnection*)aConn; - conn->TransactionRollbackL(); - } - // --------------------------------------------------------------------------- // NewL // --------------------------------------------------------------------------- @@ -156,63 +148,39 @@ RMdsStatement objStmt; CleanupClosePushL(objStmt); - if( KObjectCount > 1 ) - { - RMdSTransaction transaction( connection ); - CleanupClosePushL(transaction); - const TInt beginError( transaction.Error() ); - if( beginError != KErrNone ) - { - CleanupStack::PopAndDestroy( &transaction ); - } - - for ( TInt i = 0; i < KObjectCount; ++i ) - { - aBuffer.PositionL( items.iObjects.iPtr.iOffset + i * sizeof(TMdCObject) ); - TItemId id = KNoId; - TRAPD( err, id = iManipulate->AddObjectL( connection, aBuffer, - baseObjStmt, objStmt, aServerSession ) ); - if (err == KErrNone) - { - aResultBuffer.InsertL( id ); - } - else - { - aResultBuffer.InsertL( KNoId ); - if(resultIds.iErrorCode == KErrNone) - { - resultIds.iErrorCode = err; - } - } - } - if( beginError == KErrNone ) - { - transaction.CommitL(); - CleanupStack::PopAndDestroy( &transaction ); - } - } - else - { - for ( TInt i = 0; i < KObjectCount; ++i ) + RMdSTransaction transaction( connection ); + CleanupClosePushL(transaction); + const TInt beginError( transaction.Error() ); + if( beginError != KErrNone ) + { + CleanupStack::PopAndDestroy( &transaction ); + } + + for ( TInt i = 0; i < KObjectCount; ++i ) + { + aBuffer.PositionL( items.iObjects.iPtr.iOffset + i * sizeof(TMdCObject) ); + TItemId id = KNoId; + TRAPD( err, id = iManipulate->AddObjectL( connection, aBuffer, + baseObjStmt, objStmt, aServerSession ) ); + if (err == KErrNone) { - aBuffer.PositionL( items.iObjects.iPtr.iOffset + i * sizeof(TMdCObject) ); - TItemId id = KNoId; - TRAPD( err, id = iManipulate->AddObjectL( connection, aBuffer, - baseObjStmt, objStmt, aServerSession ) ); - if (err == KErrNone) + aResultBuffer.InsertL( id ); + } + else + { + aResultBuffer.InsertL( KNoId ); + if(resultIds.iErrorCode == KErrNone) { - aResultBuffer.InsertL( id ); - } - else - { - aResultBuffer.InsertL( KNoId ); - if(resultIds.iErrorCode == KErrNone) - { - resultIds.iErrorCode = err; - } + resultIds.iErrorCode = err; } } - } + } + if( beginError == KErrNone ) + { + transaction.CommitL(); + CleanupStack::PopAndDestroy( &transaction ); + } + CleanupStack::PopAndDestroy(&objStmt); CleanupStack::PopAndDestroy(&baseObjStmt); } @@ -229,12 +197,13 @@ resultIds.iEventIds.iPtr.iOffset = aResultBuffer.Position(); resultIds.iEventIds.iPtr.iCount = KEventCount; - if( KEventCount > 1 ) - { - //More than 1 event, transaction will be used. - connection.TransactionBeginL(); - CleanupStack::PushL(TCleanupItem(&TransactionCleanupL, &connection)); - } + RMdSTransaction transaction( connection ); + CleanupClosePushL(transaction); + const TInt beginError( transaction.Error() ); + if( beginError != KErrNone ) + { + CleanupStack::PopAndDestroy( &transaction ); + } for ( TInt i = 0; i < KEventCount; ++i ) { @@ -257,11 +226,11 @@ } } - if( KEventCount > 1 ) - { - connection.TransactionCommitL(); - CleanupStack::Pop(); //TransactionCleanup() - } + if( beginError == KErrNone ) + { + transaction.CommitL(); + CleanupStack::PopAndDestroy( &transaction ); + } } else { @@ -276,12 +245,13 @@ resultIds.iRelationIds.iPtr.iOffset = aResultBuffer.Position(); resultIds.iRelationIds.iPtr.iCount = KRelationCount; - if( KRelationCount > 1 ) - { - //More than 1 relation, transaction will be used. - connection.TransactionBeginL(); - CleanupStack::PushL(TCleanupItem(&TransactionCleanupL, &connection)); - } + RMdSTransaction transaction( connection ); + CleanupClosePushL(transaction); + const TInt beginError( transaction.Error() ); + if( beginError != KErrNone ) + { + CleanupStack::PopAndDestroy( &transaction ); + } for ( TInt i = 0; i < KRelationCount; ++i ) { @@ -304,11 +274,11 @@ } } - if( KRelationCount > 1 ) - { - connection.TransactionCommitL(); - CleanupStack::Pop(); //TransactionCleanup() - } + if( beginError == KErrNone ) + { + transaction.CommitL(); + CleanupStack::PopAndDestroy( &transaction ); + } } else { @@ -596,6 +566,14 @@ resultIds.iObjectIds.iPtr.iOffset = aResultBuffer.Position(); resultIds.iObjectIds.iPtr.iCount = items.iObjects.iPtr.iCount; + RMdSTransaction transaction( connection ); + CleanupClosePushL(transaction); + const TInt beginError( transaction.Error() ); + if( beginError != KErrNone ) + { + CleanupStack::PopAndDestroy( &transaction ); + } + for ( TInt i = 0; i < items.iObjects.iPtr.iCount; ++i ) { aBuffer.PositionL( items.iObjects.iPtr.iOffset + i * sizeof(TMdCObject) ); @@ -615,6 +593,11 @@ } } } + if( beginError == KErrNone ) + { + transaction.CommitL(); + CleanupStack::PopAndDestroy( &transaction ); + } } else {