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