|
From: <fab...@us...> - 2009-05-09 03:04:34
|
Revision: 4272
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4272&view=rev
Author: fabiomaulo
Date: 2009-05-09 03:04:15 +0000 (Sat, 09 May 2009)
Log Message:
-----------
- Minor (QueryLoader checked)
- added transformer
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs
trunk/nhibernate/src/NHibernate/Hql/HolderInstantiator.cs
trunk/nhibernate/src/NHibernate/NHibernate.csproj
trunk/nhibernate/src/NHibernate/Transform/Transformers.cs
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Transform/ToListResultTransformer.cs
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs 2009-05-09 02:27:10 UTC (rev 4271)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs 2009-05-09 03:04:15 UTC (rev 4272)
@@ -234,11 +234,7 @@
//sqlResultTypes = selectClause.getSqlResultTypes();
_queryReturnTypes = selectClause.QueryReturnTypes;
- _selectNewTransformer = HolderInstantiator.CreateSelectNewTransformer(selectClause.Constructor, selectClause.IsMap);
-
- // TODO - Java implementation passes IsList into CreateSelectNewTransformer...,
- // selectClause.IsList);
-
+ _selectNewTransformer = HolderInstantiator.CreateSelectNewTransformer(selectClause.Constructor, selectClause.IsMap, selectClause.IsList);
_queryReturnAliases = selectClause.QueryReturnAliases;
IList<FromElement> collectionFromElements = selectClause.CollectionFromElements;
@@ -426,6 +422,7 @@
internal IEnumerable GetEnumerable(QueryParameters queryParameters, ISessionImplementor session)
{
+ CheckQuery(queryParameters);
bool statsEnabled = session.Factory.Statistics.IsStatisticsEnabled;
var stopWath = new Stopwatch();
Modified: trunk/nhibernate/src/NHibernate/Hql/HolderInstantiator.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/HolderInstantiator.cs 2009-05-09 02:27:10 UTC (rev 4271)
+++ trunk/nhibernate/src/NHibernate/Hql/HolderInstantiator.cs 2009-05-09 03:04:15 UTC (rev 4272)
@@ -1,4 +1,3 @@
-using System;
using System.Reflection;
using NHibernate.Transform;
@@ -8,8 +7,8 @@
{
public static readonly HolderInstantiator NoopInstantiator = new HolderInstantiator(null, null);
- private IResultTransformer transformer;
- private string[] queryReturnAliases;
+ private readonly IResultTransformer transformer;
+ private readonly string[] queryReturnAliases;
public static HolderInstantiator GetHolderInstantiator(IResultTransformer selectNewTransformer,
IResultTransformer customTransformer,
@@ -25,7 +24,8 @@
}
}
- public static IResultTransformer CreateSelectNewTransformer(ConstructorInfo constructor, bool returnMaps)
+ public static IResultTransformer CreateSelectNewTransformer(ConstructorInfo constructor, bool returnMaps,
+ bool returnLists)
{
if (constructor != null)
{
@@ -35,6 +35,10 @@
{
return Transformers.AliasToEntityMap;
}
+ else if (returnLists)
+ {
+ return Transformers.ToList;
+ }
else
{
return null;
@@ -54,10 +58,7 @@
}
}
- public HolderInstantiator(
- IResultTransformer transformer,
- string[] queryReturnAliases
- )
+ public HolderInstantiator(IResultTransformer transformer, string[] queryReturnAliases)
{
this.transformer = transformer;
this.queryReturnAliases = queryReturnAliases;
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-05-09 02:27:10 UTC (rev 4271)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-05-09 03:04:15 UTC (rev 4272)
@@ -593,6 +593,7 @@
<Compile Include="Hql\Ast\ANTLR\Util\NodeTraverser.cs" />
<Compile Include="Param\VersionTypeSeedParameterSpecification.cs" />
<Compile Include="SqlCommand\InsertSelect.cs" />
+ <Compile Include="Transform\ToListResultTransformer.cs" />
<Compile Include="Util\NullableDictionary.cs" />
<Compile Include="Hql\Ast\ANTLR\Util\PathHelper.cs" />
<Compile Include="Hql\Ast\ANTLR\Util\SyntheticAndFactory.cs" />
Added: trunk/nhibernate/src/NHibernate/Transform/ToListResultTransformer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Transform/ToListResultTransformer.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Transform/ToListResultTransformer.cs 2009-05-09 03:04:15 UTC (rev 4272)
@@ -0,0 +1,23 @@
+using System;
+using System.Collections;
+
+namespace NHibernate.Transform
+{
+ /// <summary>
+ /// Tranforms each result row from a tuple into a <see cref="IList"/>, such that what
+ /// you end up with is a <see cref="IList"/> of <see cref="IList"/>.
+ /// </summary>
+ [Serializable]
+ public class ToListResultTransformer : IResultTransformer
+ {
+ public object TransformTuple(object[] tuple, string[] aliases)
+ {
+ return new ArrayList(tuple);
+ }
+
+ public IList TransformList(IList list)
+ {
+ return list;
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/Transform/Transformers.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Transform/Transformers.cs 2009-05-09 02:27:10 UTC (rev 4271)
+++ trunk/nhibernate/src/NHibernate/Transform/Transformers.cs 2009-05-09 03:04:15 UTC (rev 4272)
@@ -13,6 +13,9 @@
/// </summary>
public static readonly IResultTransformer AliasToEntityMap = new AliasToEntityMapResultTransformer();
+ /// <summary> Each row of results is a <see cref="IList"/></summary>
+ public static readonly ToListResultTransformer ToList = new ToListResultTransformer();
+
/// <summary>
/// Creates a resulttransformer that will inject aliased values into instances
/// of <paramref name="target"/> via property methods or fields.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|