Author: gbayon
Date: Mon Jul 17 11:31:36 2006
New Revision: 422779

URL: http://svn.apache.org/viewvc?rev=422779&view=rev
Log:
- Updated DataTable process
Did you liked Ron ?

Modified:
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs
    ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/SqlMapper.cs

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs?rev=422779&r1=422778&r2=422779&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs
 Mon Jul 17 11:31:36 2006
@@ -820,13 +820,13 @@
 
                #endregion
 
-               public DataTable ExecuteQueryForDataTable(IDalSession session, 
object parameterObject)
+               public DataTable ExecuteQueryForDataTable(IDalSession session, 
object parameterObject, DataTable resultObject)
                {
                        RequestScope request = 
_statement.Sql.GetRequestScope(this, parameterObject, session);
 
                        _preparedCommand.Create(request, session, 
this.Statement, parameterObject);
 
-                       return RunQueryForDataTable(request, session, 
parameterObject);
+                       return RunQueryForDataTable(request, session, 
resultObject);
                }
 
                #region ExecuteQueryForMap
@@ -916,19 +916,13 @@
 
                }
 
-               public DataTable RunQueryForDataTable(RequestScope request, 
IDalSession session, object parameterObject)
+               public DataTable RunQueryForDataTable(RequestScope request, 
IDalSession session, DataTable resultObject)
                {
                        DataTable dataTable = null;
 
                        using (IDbCommand command = request.IDbCommand)
                        {
-                               using (IDataReader reader = 
command.ExecuteReader())
-                               {
-                                       while (reader.Read() )
-                                       {
-                                               dataTable = 
(DataTable)_resultStrategy.Process(request, reader, dataTable);
-                                       }
-                               }
+                               dataTable = 
(DataTable)_resultStrategy.Process(request, null, resultObject);
                        }
 
                        return dataTable;

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs?rev=422779&r1=422778&r2=422779&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs
 Mon Jul 17 11:31:36 2006
@@ -40,43 +40,22 @@
                #region IResultStrategy Members
 
                /// <summary>
-               /// Processes the specified <see cref="IDataReader"/> 
-               /// when a 'resultClass' attribute is specified on the 
statement and
-               /// the 'resultClass' attribute is a <see cref="DataTable"/>.
+               /// To Do
                /// </summary>
                /// <param name="request">The request.</param>
                /// <param name="reader">The reader.</param>
                /// <param name="resultObject">The result object.</param>
                public object Process(RequestScope request, IDataReader reader, 
object resultObject)
                {
-                       object outObject = resultObject; 
+                       DataTable dataTable = resultObject as DataTable; 
 
-                       if (outObject == null) 
-                       {
-                               outObject = new DataTable(request.Statement.Id);
+                       DataAdapter dataAdapter = 
request.Session.DataSource.DbProvider.CreateDataAdapter() as DataAdapter;
+                       dataAdapter.SelectCommand = request.IDbCommand;
 
-                               DataTable dataColumn = reader.GetSchemaTable();
-                               for (int i = 0; i < dataColumn.Rows.Count; i++)
-                               {
-                                       ((DataTable) 
outObject).Columns.Add(dataColumn.Rows[i][0].ToString());
-                               }
-                       }
-
-                       DataRow dataRow = ((DataTable) outObject).NewRow();
-                       int count = reader.FieldCount;
-                       for (int i = 0; i < count; i++) 
-                       {
-                               ResultProperty property = new ResultProperty();
-                               property.PropertyName = "value";
-                               property.ColumnIndex = i;
-                               property.TypeHandler = 
request.DataExchangeFactory.TypeHandlerFactory.GetTypeHandler(reader.GetFieldType(i));
-                               dataRow[i] = property.GetDataBaseValue(reader);
-                       }   
-                       ((DataTable) outObject).Rows.Add(dataRow);
-     
-                       return outObject;
+                       // The Fill operation then adds the rows to the 
specified destination DataTable object in the DataSet, 
+                       // creating the DataTable object if it does not already 
exist. 
+                       dataAdapter.Fill(dataTable);
+                       return dataTable;
                }
 
-               #endregion
-       }
 }

Modified: ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/SqlMapper.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/SqlMapper.cs?rev=422779&r1=422778&r2=422779&view=diff
==============================================================================
--- ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/SqlMapper.cs 
(original)
+++ ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/SqlMapper.cs Mon Jul 
17 11:31:36 2006
@@ -613,7 +613,8 @@
 
                #endregion
 
-               public DataTable QueryForDataTable(string statementName, object 
parameterObject)
+
+               public DataTable QueryForDataTable(string statementName, object 
parameterObject, DataTable resultObject)
                {
                        bool isSessionLocal = false;
                        IDalSession session = _sessionHolder.LocalSession;
@@ -629,7 +630,7 @@
                        try 
                        {
                                IMappedStatement statement = 
GetMappedStatement(statementName);
-                               dataTable = 
statement.ExecuteQueryForDataTable(session, parameterObject);
+                               dataTable = 
statement.ExecuteQueryForDataTable(session, parameterObject, resultObject);
                        } 
                        catch
                        {


Reply via email to