Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Data/Generic
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv12636
Modified Files:
AdoTemplate.cs IAdoOperations.cs
Added Files:
DataAdapterDelegate.cs IDataAdapterCallback.cs
Log Message:
SPRNET-793 - Add Execute methods missing in Generic.AdoTemplate but present in non-generic version.
Index: IAdoOperations.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Data/Generic/IAdoOperations.cs,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** IAdoOperations.cs 25 Jul 2007 08:26:15 -0000 1.8
--- IAdoOperations.cs 4 Dec 2007 06:48:21 -0000 1.9
***************
*** 52,56 ****
/// </summary>
/// <typeparam name="T">The type of object returned from the callback.</typeparam>
! /// <param name="action">the callback to execute based on IDbCommand</param>
/// <returns>An object returned from callback</returns>
T Execute<T>(IDbCommandCallback<T> action);
--- 52,56 ----
/// </summary>
/// <typeparam name="T">The type of object returned from the callback.</typeparam>
! /// <param name="action">The callback to execute based on IDbCommand</param>
/// <returns>An object returned from callback</returns>
T Execute<T>(IDbCommandCallback<T> action);
***************
*** 75,83 ****
/// <returns>A result object returned by the action or null</returns>
T Execute<T>(IDbCommandDelegate<T> del);
-
-
- //T Execute<T>(IDbCommandCreator commandCreator, ICommandCallback commandCallback);
! //T Execute<T>(IDataAdapterCallback dataAdapterCallback);
#endregion
--- 75,110 ----
/// <returns>A result object returned by the action or null</returns>
T Execute<T>(IDbCommandDelegate<T> del);
! /// <summary>
! /// Executes ADO.NET operations on a command object, created by the provided IDbCommandCreator,
! /// using the interface based callback IDbCommandCallback.
! /// </summary>
! /// <typeparam name="T">The type of object returned from the callback.</typeparam>
! /// <param name="commandCreator">The command creator.</param>
! /// <param name="action">The callback to execute based on IDbCommand</param>
! /// <returns>A result object returned by the action or null</returns>
! T Execute<T>(IDbCommandCreator commandCreator, IDbCommandCallback<T> action);
!
! /// <summary>
! /// Execute ADO.NET operations on a IDbDataAdapter object using an interface based callback.
! /// </summary>
! /// <remarks>This allows for implementing abritrary data access operations
! /// on a single DataAdapter within Spring's managed ADO.NET environment.
! /// </remarks>
! /// <typeparam name="T">The type of object returned from the callback.</typeparam>
! /// <param name="dataAdapterCallback">The data adapter callback.</param>
! /// <returns>A result object returned by the callback or null</returns>
! T Execute<T>(IDataAdapterCallback<T> dataAdapterCallback);
!
! /// <summary>
! /// Execute ADO.NET operations on a IDbDataAdapter object using an delgate based callback.
! /// </summary>
! /// <remarks>This allows for implementing abritrary data access operations
! /// on a single DataAdapter within Spring's managed ADO.NET environment.
! /// </remarks>
! /// <typeparam name="T">The type of object returned from the callback.</typeparam>
! /// <param name="del">The delegate called with a IDbDataAdapter object.</param>
! /// <returns>A result object returned by the callback or null</returns>
! T Execute<T>(DataAdapterDelegate<T> del);
#endregion
--- NEW FILE: IDataAdapterCallback.cs ---
(This appears to be a binary file; contents omitted.)
Index: AdoTemplate.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Data/Generic/AdoTemplate.cs,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** AdoTemplate.cs 30 Oct 2007 15:24:44 -0000 1.17
--- AdoTemplate.cs 4 Dec 2007 06:48:21 -0000 1.18
***************
*** 385,388 ****
--- 385,398 ----
+ /// <summary>
+ /// Executes ADO.NET operations on a command object, created by the provided IDbCommandCreator,
+ /// using the interface based callback IDbCommandCallback.
+ /// </summary>
+ /// <typeparam name="T">The type of object returned from the callback.</typeparam>
+ /// <param name="commandCreator">The command creator.</param>
+ /// <param name="action">The callback to execute based on IDbCommand</param>
+ /// <returns>
+ /// A result object returned by the action or null
+ /// </returns>
public T Execute<T>(IDbCommandCreator commandCreator, IDbCommandCallback<T> action)
{
***************
*** 429,432 ****
--- 439,530 ----
}
+
+ /// <summary>
+ /// Execute ADO.NET operations on a IDbDataAdapter object using an interface based callback.
+ /// </summary>
+ /// <typeparam name="T">The type of object returned from the callback.</typeparam>
+ /// <param name="dataAdapterCallback">The data adapter callback.</param>
+ /// <returns>
+ /// A result object returned by the callback or null
+ /// </returns>
+ /// <remarks>This allows for implementing abritrary data access operations
+ /// on a single DataAdapter within Spring's managed ADO.NET environment.
+ /// </remarks>
+ public T Execute<T>(IDataAdapterCallback<T> dataAdapterCallback)
+ {
+ ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider);
+ IDbDataAdapter dataAdapter = null;
+ try
+ {
+ dataAdapter = DbProvider.CreateDataAdapter();
+ //TODO row updated event handling...
+ dataAdapter.SelectCommand = DbProvider.CreateCommand();
+ dataAdapter.SelectCommand.Connection = connectionTxPairToUse.Connection;
+ //TODO register for warnings on connection.
+ dataAdapter.SelectCommand.Transaction = connectionTxPairToUse.Transaction;
+ ApplyCommandSettings(dataAdapter.SelectCommand);
+ T result = dataAdapterCallback.DoInDataAdapter(dataAdapter);
+ return result;
+ }
+ catch (Exception)
+ {
+ AdoUtils.DisposeDataAdapterCommands(dataAdapter);
+ //TODO set dataAdapter command's = null; ?
+ //TODO exception translation? different hierarchy for data set operations.
+ ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider);
+ connectionTxPairToUse.Connection = null;
+ throw;
+ }
+ finally
+ {
+ AdoUtils.DisposeDataAdapterCommands(dataAdapter);
+ ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider);
+ }
+
+
+ }
+
+ /// <summary>
+ /// Execute ADO.NET operations on a IDbDataAdapter object using an delgate based callback.
+ /// </summary>
+ /// <remarks>This allows for implementing abritrary data access operations
+ /// on a single DataAdapter within Spring's managed ADO.NET environment.
+ /// </remarks>
+ /// <typeparam name="T">The type of object returned from the callback.</typeparam>
+ /// <param name="dataAdapterCallback">The delegate called with a IDbDataAdapter object.</param>
+ /// <returns>A result object returned by the callback or null</returns>
+ public T Execute<T>(DataAdapterDelegate<T> dataAdapterCallback)
+ {
+ ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider);
+ IDbDataAdapter dataAdapter = null;
+ try
+ {
+ dataAdapter = DbProvider.CreateDataAdapter();
+ //TODO row updated event handling...
+ dataAdapter.SelectCommand = DbProvider.CreateCommand();
+ dataAdapter.SelectCommand.Connection = connectionTxPairToUse.Connection;
+ //TODO register for warnings on connection.
+ dataAdapter.SelectCommand.Transaction = connectionTxPairToUse.Transaction;
+ ApplyCommandSettings(dataAdapter.SelectCommand);
+ T result = dataAdapterCallback(dataAdapter);
+ return result;
+
+ }
+ catch (Exception)
+ {
+ AdoUtils.DisposeDataAdapterCommands(dataAdapter);
+ //TODO set dataAdapter command's = null; ?
+ //TODO exception translation? different hierarchy for data set operations.
+ ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider);
+ connectionTxPairToUse.Connection = null;
+ throw;
+ }
+ finally
+ {
+ AdoUtils.DisposeDataAdapterCommands(dataAdapter);
+ ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider);
+ }
+ }
+
#endregion
--- NEW FILE: DataAdapterDelegate.cs ---
(This appears to be a binary file; contents omitted.)
|