From: <ste...@us...> - 2009-12-16 21:52:16
|
Revision: 4896 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4896&view=rev Author: steverstrong Date: 2009-12-16 21:52:08 +0000 (Wed, 16 Dec 2009) Log Message: ----------- Two files that should have been deleted on the last commit. Added Paths: ----------- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/output/ Removed Paths: ------------- trunk/nhibernate/src/NHibernate/Linq/CommandData.cs trunk/nhibernate/src/NHibernate/Linq/Visitors/ProjectionEvaluator.cs Property changes on: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/output ___________________________________________________________________ Added: bugtraq:url + http://jira.nhibernate.org/browse/%BUGID% Added: bugtraq:logregex + NH-\d+ Deleted: trunk/nhibernate/src/NHibernate/Linq/CommandData.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Linq/CommandData.cs 2009-12-16 21:36:34 UTC (rev 4895) +++ trunk/nhibernate/src/NHibernate/Linq/CommandData.cs 2009-12-16 21:52:08 UTC (rev 4896) @@ -1,64 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using NHibernate.Hql.Ast; - -namespace NHibernate.Linq -{ - public class CommandData - { - private readonly List<LambdaExpression> _itemTransformers; - private readonly List<LambdaExpression> _listTransformers; - private readonly List<Action<IQuery>> _additionalCriteria; - - public CommandData(HqlQuery statement, List<LambdaExpression> itemTransformers, List<LambdaExpression> listTransformers, List<Action<IQuery>> additionalCriteria) - { - _itemTransformers = itemTransformers; - _listTransformers = listTransformers; - - Statement = statement; - _additionalCriteria = additionalCriteria; - } - - public HqlQuery Statement { get; private set; } - - public void AddAdditionalCriteria(IQuery query) - { - foreach (var criteria in _additionalCriteria) - { - criteria(query); - } - } - - public void SetResultTransformer(IQuery query) - { - var itemTransformer = MergeLambdas(_itemTransformers); - var listTransformer = MergeLambdas(_listTransformers); - - if (itemTransformer != null || listTransformer != null) - { - query.SetResultTransformer(new ResultTransformer(itemTransformer, listTransformer)); - } - } - - private static LambdaExpression MergeLambdas(IList<LambdaExpression> transformations) - { - if (transformations == null || transformations.Count == 0) - { - return null; - } - - var listTransformLambda = transformations[0]; - - for (int i = 1; i < transformations.Count; i++) - { - var invoked = Expression.Invoke(transformations[i], listTransformLambda.Body); - - listTransformLambda = Expression.Lambda(invoked, listTransformLambda.Parameters.ToArray()); - } - - return listTransformLambda; - } - } -} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate/Linq/Visitors/ProjectionEvaluator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Linq/Visitors/ProjectionEvaluator.cs 2009-12-16 21:36:34 UTC (rev 4895) +++ trunk/nhibernate/src/NHibernate/Linq/Visitors/ProjectionEvaluator.cs 2009-12-16 21:52:08 UTC (rev 4896) @@ -1,71 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq.Expressions; -using NHibernate.Engine.Query; -using NHibernate.Hql.Ast; -using Remotion.Data.Linq.Parsing; - -namespace NHibernate.Linq.Visitors -{ - public class ProjectionEvaluator : ExpressionTreeVisitor - { - private HashSet<Expression> _hqlNodes; - private readonly ParameterExpression _inputParameter; - private readonly Func<Expression, bool> _predicate; - private readonly IDictionary<ConstantExpression, NamedParameter> _parameters; - private readonly IList<NamedParameterDescriptor> _requiredHqlParameters; - private int _iColumn; - private readonly List<HqlExpression> _hqlTreeNodes = new List<HqlExpression>(); - - public ProjectionEvaluator(System.Type inputType, Func<Expression, bool> predicate, IDictionary<ConstantExpression, NamedParameter> parameters, IList<NamedParameterDescriptor> requiredHqlParameters) - { - _inputParameter = Expression.Parameter(inputType, "input"); - _predicate = predicate; - _parameters = parameters; - _requiredHqlParameters = requiredHqlParameters; - } - - public LambdaExpression ProjectionExpression { get; private set; } - - public IEnumerable<HqlExpression> GetHqlNodes() - { - return _hqlTreeNodes; - } - - public void Visit(Expression expression) - { - // First, find the sub trees that can be expressed purely in HQL - _hqlNodes = new Nominator(_predicate).Nominate(expression); - - // Now visit the tree - Expression projection = VisitExpression(expression); - - if ((projection != expression) && !_hqlNodes.Contains(expression)) - { - ProjectionExpression = Expression.Lambda(projection, _inputParameter); - } - } - - protected override Expression VisitExpression(Expression expression) - { - if (expression == null) - { - return null; - } - - if (_hqlNodes.Contains(expression)) - { - // Pure HQL evaluation - TODO - cache the Visitor? - var hqlVisitor = new HqlGeneratorExpressionTreeVisitor(_parameters, _requiredHqlParameters); - - _hqlTreeNodes.Add(hqlVisitor.Visit(expression).AsExpression()); - - return Expression.Convert(Expression.ArrayIndex(_inputParameter, Expression.Constant(_iColumn++)), - expression.Type); - } - - // Can't handle this node with HQL. Just recurse down, and emit the expression - return base.VisitExpression(expression); - } - } -} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |