From: <te...@us...> - 2008-10-05 13:10:11
|
Revision: 3815 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3815&view=rev Author: tehlike Date: 2008-10-05 13:07:29 +0000 (Sun, 05 Oct 2008) Log Message: ----------- -Making some more visit methods virtual. -Initials for SelectJoinGatherer. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Linq/Expressions/AssociationPropertyExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/NHExpressionType.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/OneToManyPropertyExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/OneToOnePropertyExpression.cs trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj trunk/nhibernate/src/NHibernate.Linq/Visitors/AssociationRewriteVisitor.cs trunk/nhibernate/src/NHibernate.Linq/Visitors/NHibernateExpressionVisitor.cs trunk/nhibernate/src/NHibernate.Linq.Test/NHibernate.Linq.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Linq/Expressions/QueryParameterExpression.cs trunk/nhibernate/src/NHibernate.Linq/Visitors/SelectJoinGatherer.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate.Linq/Visitors/JoinGatherer.cs Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/AssociationPropertyExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/AssociationPropertyExpression.cs 2008-10-04 19:27:55 UTC (rev 3814) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/AssociationPropertyExpression.cs 2008-10-05 13:07:29 UTC (rev 3815) @@ -7,14 +7,16 @@ namespace NHibernate.Linq.Expressions { - public abstract class AssociationPropertyExpression:PropertyExpression + public abstract class AssociationPropertyExpression : PropertyExpression { - public AssociationPropertyExpression(string name,NHExpressionType nodeType,System.Type type, - Expression source,IType nhType):base(name,nodeType,type,source,nhType) + public AssociationPropertyExpression(string name, string alias, NHExpressionType nodeType, + System.Type type, Expression source, IType nhType) + : base(name, nodeType, type, source, nhType) { - + } public IAssociationType AssociationType { get { return base.NHibernateType as IAssociationType; } } + public string Alias { get; protected set; } } -} +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/NHExpressionType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/NHExpressionType.cs 2008-10-04 19:27:55 UTC (rev 3814) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/NHExpressionType.cs 2008-10-05 13:07:29 UTC (rev 3815) @@ -9,6 +9,7 @@ ComponentProperty, OneToManyProperty, OneToOneProperty, + Parameter, Order, } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/OneToManyPropertyExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/OneToManyPropertyExpression.cs 2008-10-04 19:27:55 UTC (rev 3814) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/OneToManyPropertyExpression.cs 2008-10-05 13:07:29 UTC (rev 3815) @@ -9,8 +9,8 @@ { public class OneToManyPropertyExpression : AssociationPropertyExpression { - public OneToManyPropertyExpression(string name, System.Type type, Expression source, IType nhibernateType) - : base(name,NHExpressionType.OneToManyProperty, type, source, nhibernateType) + public OneToManyPropertyExpression(string name, string alias, System.Type type, Expression source, IType nhibernateType) + : base(name,alias,NHExpressionType.OneToManyProperty, type, source, nhibernateType) { } Modified: trunk/nhibernate/src/NHibernate.Linq/Expressions/OneToOnePropertyExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/OneToOnePropertyExpression.cs 2008-10-04 19:27:55 UTC (rev 3814) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/OneToOnePropertyExpression.cs 2008-10-05 13:07:29 UTC (rev 3815) @@ -9,8 +9,8 @@ { public class OneToOnePropertyExpression:AssociationPropertyExpression { - public OneToOnePropertyExpression(string name, System.Type type, Expression source, IType nhType) - : base(name, NHExpressionType.OneToOneProperty, type, source, nhType) + public OneToOnePropertyExpression(string name,string alias, System.Type type, Expression source, IType nhType) + : base(name,alias, NHExpressionType.OneToOneProperty, type, source, nhType) { } Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/QueryParameterExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/QueryParameterExpression.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/QueryParameterExpression.cs 2008-10-05 13:07:29 UTC (rev 3815) @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; + +namespace NHibernate.Linq.Expressions +{ + public class QueryParameterExpression:NHExpression + { + public QueryParameterExpression(object value, int ordinal, System.Type type) + : base(NHExpressionType.Parameter, type) + { + this.Value = value; + this.Ordinal = ordinal; + } + + public object Value { get; protected set; } + public int Ordinal { get; protected set; } + } +} Property changes on: trunk/nhibernate/src/NHibernate.Linq/Expressions/QueryParameterExpression.cs ___________________________________________________________________ Added: svn:mergeinfo + Modified: trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj 2008-10-04 19:27:55 UTC (rev 3814) +++ trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj 2008-10-05 13:07:29 UTC (rev 3815) @@ -44,7 +44,7 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> - <ProjectReference Include="..\NHibernate\NHibernate-3.5.csproj"> + <ProjectReference Include="..\NHibernate\NHibernate.csproj"> <Project>{5909BFE7-93CF-4E5F-BE22-6293368AF01D}</Project> <Name>NHibernate-3.5</Name> </ProjectReference> @@ -56,6 +56,7 @@ <Compile Include="Expressions\OneToOnePropertyExpression.cs" /> <Compile Include="Expressions\OrderExpression.cs" /> <Compile Include="Expressions\OrderType.cs" /> + <Compile Include="Expressions\QueryParameterExpression.cs" /> <Compile Include="Expressions\ProjectionExpression.cs" /> <Compile Include="Expressions\PropertyExpression.cs" /> <Compile Include="Expressions\SelectExpression.cs" /> @@ -67,7 +68,6 @@ <Compile Include="Util\Guard.cs" /> <Compile Include="Util\LinqUtil.cs" /> <Compile Include="Visitors\AssociationRewriteVisitor.cs" /> - <Compile Include="Visitors\JoinGatherer.cs" /> <Compile Include="Visitors\LogicalExpressionReducer.cs" /> <Compile Include="ExpressionVisitor.cs" /> <Compile Include="NHibernateExtensions.cs" /> @@ -80,6 +80,7 @@ <Compile Include="Visitors\OrderByTransformer.cs" /> <Compile Include="Visitors\Replacer.cs" /> <Compile Include="Visitors\QuerySpacesFinderVisitor.cs" /> + <Compile Include="Visitors\SelectJoinGatherer.cs" /> <Compile Include="Visitors\SqlExpressionTranslator.cs" /> <Compile Include="Visitors\NHExpressionToSqlExpressionTransformer.cs" /> <Compile Include="Visitors\WhereExpressionCombiner.cs" /> Modified: trunk/nhibernate/src/NHibernate.Linq/Visitors/AssociationRewriteVisitor.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Visitors/AssociationRewriteVisitor.cs 2008-10-04 19:27:55 UTC (rev 3814) +++ trunk/nhibernate/src/NHibernate.Linq/Visitors/AssociationRewriteVisitor.cs 2008-10-05 13:07:29 UTC (rev 3815) @@ -14,12 +14,13 @@ public class AssociationRewriteVisitor : NHibernateExpressionVisitor { private readonly ISessionFactoryImplementor sessionFactory; + private int parameterOrder; private int aliasOrder; - public AssociationRewriteVisitor(ISessionFactoryImplementor factory) { - sessionFactory = factory; - aliasOrder = 0; + this.sessionFactory = factory; + this.aliasOrder = 0; + this.parameterOrder = 0; } public static Expression Rewrite(Expression expr, ISessionFactoryImplementor factory) @@ -62,7 +63,7 @@ else if (propertyType is OneToOneType) { Expression source = base.Visit(expr.Expression); - return new OneToOnePropertyExpression(propertyName, expr.Type, source, propertyType); + return new OneToOnePropertyExpression(propertyName,GenerateAliasString(), expr.Type, source, propertyType); } else if(!propertyType.IsAssociationType)//assume simple property { @@ -82,8 +83,12 @@ var loadable = sessionFactory.GetEntityPersister(elementType.FullName) as IOuterJoinLoadable; return new QuerySourceExpression(type, loadable); } - - return c; + else + return new QueryParameterExpression(c.Type, parameterOrder++, c.Type); } + private string GenerateAliasString() + { + return string.Format("a_{0}", aliasOrder++); + } } } \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate.Linq/Visitors/JoinGatherer.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Visitors/JoinGatherer.cs 2008-10-04 19:27:55 UTC (rev 3814) +++ trunk/nhibernate/src/NHibernate.Linq/Visitors/JoinGatherer.cs 2008-10-05 13:07:29 UTC (rev 3815) @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using NHibernate.Engine; -using NHibernate.Mapping; -using NHibernate.Type; - -namespace NHibernate.Linq.Visitors -{ - public class SelectWhereJoinGatherer:NHibernateExpressionVisitor - { - public override System.Linq.Expressions.Expression Visit(System.Linq.Expressions.Expression exp) - { - return base.Visit(exp); - } - } -} Modified: trunk/nhibernate/src/NHibernate.Linq/Visitors/NHibernateExpressionVisitor.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Visitors/NHibernateExpressionVisitor.cs 2008-10-04 19:27:55 UTC (rev 3814) +++ trunk/nhibernate/src/NHibernate.Linq/Visitors/NHibernateExpressionVisitor.cs 2008-10-05 13:07:29 UTC (rev 3815) @@ -61,7 +61,7 @@ return new SimplePropertyExpression(property.Name, property.Column, property.Type, source, property.NHibernateType); return property; } - private Expression VisitComponentProperty(ComponentPropertyExpression property) + protected virtual Expression VisitComponentProperty(ComponentPropertyExpression property) { Expression source = Visit(property.Source); if (source != property.Source) @@ -69,18 +69,19 @@ return property; } - private Expression VisitOneToManyProperty(OneToManyPropertyExpression propertyExpression) + protected virtual Expression VisitOneToManyProperty(OneToManyPropertyExpression propertyExpression) { Expression source = Visit(propertyExpression.Source); + if (source != propertyExpression.Source) - return new OneToManyPropertyExpression(propertyExpression.Name, propertyExpression.Type, source, propertyExpression.NHibernateType); + return new OneToManyPropertyExpression(propertyExpression.Name, propertyExpression.Alias, propertyExpression.Type, source, propertyExpression.NHibernateType); return propertyExpression; } - private Expression VisitOneToOneProperty(OneToOnePropertyExpression propertyExpression) + protected virtual Expression VisitOneToOneProperty(OneToOnePropertyExpression propertyExpression) { Expression source = Visit(propertyExpression.Source); if (source != propertyExpression.Source) - return new OneToOnePropertyExpression(propertyExpression.Name, propertyExpression.Type, source, propertyExpression.NHibernateType); + return new OneToOnePropertyExpression(propertyExpression.Name, propertyExpression.Alias, propertyExpression.Type, source, propertyExpression.NHibernateType); return propertyExpression; } //TODO: modify Added: trunk/nhibernate/src/NHibernate.Linq/Visitors/SelectJoinGatherer.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Visitors/SelectJoinGatherer.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Visitors/SelectJoinGatherer.cs 2008-10-05 13:07:29 UTC (rev 3815) @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using NHibernate.Engine; + +namespace NHibernate.Linq.Visitors +{ + public class SelectJoinGatherer:NHibernateExpressionVisitor + { + public SelectJoinGatherer(ISessionFactoryImplementor sessionFactory) + { + this.SessionFactory = sessionFactory; + this.JoinSequence=new JoinSequence(sessionFactory); + } + + public ISessionFactoryImplementor SessionFactory { get; protected set; } + public JoinSequence JoinSequence { get; protected set; } + } +} Modified: trunk/nhibernate/src/NHibernate.Linq.Test/NHibernate.Linq.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Linq.Test/NHibernate.Linq.Test.csproj 2008-10-04 19:27:55 UTC (rev 3814) +++ trunk/nhibernate/src/NHibernate.Linq.Test/NHibernate.Linq.Test.csproj 2008-10-05 13:07:29 UTC (rev 3815) @@ -60,7 +60,7 @@ <Project>{3073F5DA-5D57-4E12-9F95-8516ED346E67}</Project> <Name>NHibernate.Linq</Name> </ProjectReference> - <ProjectReference Include="..\NHibernate\NHibernate-3.5.csproj"> + <ProjectReference Include="..\NHibernate\NHibernate.csproj"> <Project>{5909BFE7-93CF-4E5F-BE22-6293368AF01D}</Project> <Name>NHibernate-3.5</Name> </ProjectReference> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |