|
From: <fab...@us...> - 2011-06-05 21:24:36
|
Revision: 5910
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5910&view=rev
Author: fabiomaulo
Date: 2011-06-05 21:24:29 +0000 (Sun, 05 Jun 2011)
Log Message:
-----------
Refactoring: IResultSetsCommand using Loader instances instead static methods
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Driver/BasicResultSetsCommand.cs
trunk/nhibernate/src/NHibernate/Driver/IResultSetsCommand.cs
trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs
trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs
trunk/nhibernate/src/NHibernate/Loader/Loader.cs
Modified: trunk/nhibernate/src/NHibernate/Driver/BasicResultSetsCommand.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Driver/BasicResultSetsCommand.cs 2011-06-05 20:34:11 UTC (rev 5909)
+++ trunk/nhibernate/src/NHibernate/Driver/BasicResultSetsCommand.cs 2011-06-05 21:24:29 UTC (rev 5910)
@@ -47,7 +47,7 @@
get { return sqlString; }
}
- public virtual IDataReader GetReader(QueryParameters[] queryParameters, int? commandTimeout)
+ public virtual IDataReader GetReader(Loader.Loader[] queryLoaders, QueryParameters[] queryParameters, int? commandTimeout)
{
SqlType[] sqlTypes = types.ToArray();
var command= batcher.PrepareQueryCommand(CommandType.Text, sqlString, sqlTypes);
@@ -57,45 +57,45 @@
}
log.Info(command.CommandText);
- BindParameters(command, queryParameters);
+ BindParameters(command, queryLoaders, queryParameters);
return new BatcherDataReaderWrapper(batcher, command);
}
- protected virtual void BindParameters(IDbCommand command, QueryParameters[] queryParameters)
+ protected virtual void BindParameters(IDbCommand command, Loader.Loader[] queryLoaders, QueryParameters[] queryParameters)
{
int colIndex = 0;
for (int queryIndex = 0; queryIndex < resultSetsCount; queryIndex++)
{
- int limitParameterSpan = BindLimitParametersFirstIfNeccesary(command, queryParameters[queryIndex], colIndex);
- colIndex = BindQueryParameters(command, queryParameters[queryIndex], colIndex + limitParameterSpan);
- colIndex += BindLimitParametersLastIfNeccesary(command, queryParameters[queryIndex], colIndex);
+ int limitParameterSpan = BindLimitParametersFirstIfNeccesary(command, queryLoaders[queryIndex], queryParameters[queryIndex], colIndex);
+ colIndex = BindQueryParameters(command, queryLoaders[queryIndex], queryParameters[queryIndex], colIndex + limitParameterSpan);
+ colIndex += BindLimitParametersLastIfNeccesary(command, queryLoaders[queryIndex], queryParameters[queryIndex], colIndex);
}
}
- protected virtual int BindLimitParametersLastIfNeccesary(IDbCommand command, QueryParameters parameter, int colIndex)
+ protected virtual int BindLimitParametersLastIfNeccesary(IDbCommand command, Loader.Loader queryLoader, QueryParameters parameter, int colIndex)
{
RowSelection selection = parameter.RowSelection;
- if (Loader.Loader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst)
+ if (queryLoader.UseLimit(selection, dialect) && !dialect.BindLimitParametersFirst)
{
- return Loader.Loader.BindLimitParameters(command, colIndex, selection, session);
+ return queryLoader.BindLimitParameters(command, colIndex, selection, session);
}
return 0;
}
- protected virtual int BindQueryParameters(IDbCommand command, QueryParameters parameter, int colIndex)
+ protected virtual int BindQueryParameters(IDbCommand command, Loader.Loader queryLoader, QueryParameters parameter, int colIndex)
{
colIndex += parameter.BindParameters(command, colIndex, session);
return colIndex;
}
- protected virtual int BindLimitParametersFirstIfNeccesary(IDbCommand command, QueryParameters parameter, int colIndex)
+ protected virtual int BindLimitParametersFirstIfNeccesary(IDbCommand command, Loader.Loader queryLoader, QueryParameters parameter, int colIndex)
{
int limitParameterSpan = 0;
RowSelection selection = parameter.RowSelection;
- if (Loader.Loader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst)
+ if (queryLoader.UseLimit(selection, dialect) && dialect.BindLimitParametersFirst)
{
- limitParameterSpan += Loader.Loader.BindLimitParameters(command, colIndex, selection, session);
+ limitParameterSpan += queryLoader.BindLimitParameters(command, colIndex, selection, session);
}
return limitParameterSpan;
}
Modified: trunk/nhibernate/src/NHibernate/Driver/IResultSetsCommand.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Driver/IResultSetsCommand.cs 2011-06-05 20:34:11 UTC (rev 5909)
+++ trunk/nhibernate/src/NHibernate/Driver/IResultSetsCommand.cs 2011-06-05 21:24:29 UTC (rev 5910)
@@ -10,6 +10,6 @@
int ParametersCount { get; }
bool HasQueries { get; }
SqlString Sql { get; }
- IDataReader GetReader(QueryParameters[] queryParameters, int? commandTimeout);
+ IDataReader GetReader(Loader.Loader[] queryLoaders, QueryParameters[] queryParameters, int? commandTimeout);
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2011-06-05 20:34:11 UTC (rev 5909)
+++ trunk/nhibernate/src/NHibernate/Impl/MultiCriteriaImpl.cs 2011-06-05 21:24:29 UTC (rev 5910)
@@ -200,7 +200,7 @@
try
{
- using (var reader = resultSetsCommand.GetReader(parameters.ToArray(), null))
+ using (var reader = resultSetsCommand.GetReader(loaders.ToArray(), parameters.ToArray(), null))
{
ArrayList[] hydratedObjects = new ArrayList[loaders.Count];
List<EntityKey[]>[] subselectResultKeys = new List<EntityKey[]>[loaders.Count];
@@ -218,7 +218,7 @@
createSubselects[i] = loader.IsSubselectLoadingEnabled;
subselectResultKeys[i] = createSubselects[i] ? new List<EntityKey[]>() : null;
int maxRows = Loader.Loader.HasMaxRows(selection) ? selection.MaxRows : int.MaxValue;
- if (!dialect.SupportsLimitOffset || !Loader.Loader.UseLimit(selection, dialect))
+ if (!dialect.SupportsLimitOffset || !loader.UseLimit(selection, dialect))
{
Loader.Loader.Advance(reader, selection);
}
Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2011-06-05 20:34:11 UTC (rev 5909)
+++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2011-06-05 21:24:29 UTC (rev 5910)
@@ -504,7 +504,7 @@
try
{
- using (var reader = resultSetsCommand.GetReader(Parameters.ToArray(), commandTimeout != RowSelection.NoValue ? commandTimeout : (int?)null))
+ using (var reader = resultSetsCommand.GetReader(translators.Select(t=> t.Loader).ToArray(), Parameters.ToArray(), commandTimeout != RowSelection.NoValue ? commandTimeout : (int?)null))
{
if (log.IsDebugEnabled)
{
@@ -527,7 +527,7 @@
hydratedObjects[i] = entitySpan > 0 ? new ArrayList() : null;
RowSelection selection = parameter.RowSelection;
int maxRows = Loader.Loader.HasMaxRows(selection) ? selection.MaxRows : int.MaxValue;
- if (!dialect.SupportsLimitOffset || !Loader.Loader.UseLimit(selection, dialect))
+ if (!dialect.SupportsLimitOffset || !translator.Loader.UseLimit(selection, dialect))
{
Loader.Loader.Advance(reader, selection);
}
Modified: trunk/nhibernate/src/NHibernate/Loader/Loader.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Loader/Loader.cs 2011-06-05 20:34:11 UTC (rev 5909)
+++ trunk/nhibernate/src/NHibernate/Loader/Loader.cs 2011-06-05 21:24:29 UTC (rev 5910)
@@ -1093,7 +1093,7 @@
/// <param name="selection"></param>
/// <param name="dialect"></param>
/// <returns></returns>
- internal static bool UseLimit(RowSelection selection, Dialect.Dialect dialect)
+ internal bool UseLimit(RowSelection selection, Dialect.Dialect dialect)
{
return dialect.SupportsLimit && (HasMaxRows(selection) || HasOffset(selection));
}
@@ -1263,7 +1263,7 @@
/// Bind parameters needed by the dialect-specific LIMIT clause
/// </summary>
/// <returns>The number of parameters bound</returns>
- internal static int BindLimitParameters(IDbCommand st, int index, RowSelection selection, ISessionImplementor session)
+ internal int BindLimitParameters(IDbCommand st, int index, RowSelection selection, ISessionImplementor session)
{
Dialect.Dialect dialect = session.Factory.Dialect;
if (!dialect.SupportsVariableLimit)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|