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. |