From: <te...@us...> - 2008-08-16 23:15:07
|
Revision: 3712 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3712&view=rev Author: tehlike Date: 2008-08-16 23:15:16 +0000 (Sat, 16 Aug 2008) Log Message: ----------- Initial SqlExpression tree hierarchy. Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Linq/Expressions/ trunk/nhibernate/src/NHibernate.Linq/Expressions/EntityExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/LimitFragment.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/MemberAccessExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/OrderByDirection.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/OrderByFragment.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/ProjectionExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/SelectExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/SelectFragment.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/SqlExpression.cs trunk/nhibernate/src/NHibernate.Linq/Expressions/SqlExpressionType.cs Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/EntityExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/EntityExpression.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/EntityExpression.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using NHibernate.Metadata; + +namespace NHibernate.Linq.Expressions +{ + /// <summary> + /// An entity is where we want to execute our query on, in RDBMS case it is a Table. + /// May also be used as from clause of a select expression + /// </summary> + public class EntityExpression:SqlExpression + { + public EntityExpression(System.Type type, string alias) + : base(SqlExpressionType.Entity, type) + { + this.Alias = alias; + } + + public string Alias { get; protected set; } + + public override string ToString() + { + return string.Format("(({0}) as {1}", Type.ToString(), this.Alias); + } + } +} Property changes on: trunk/nhibernate/src/NHibernate.Linq/Expressions/EntityExpression.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/LimitFragment.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/LimitFragment.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/LimitFragment.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NHibernate.Linq.Expressions +{ + public class LimitFragment + { + public int? Skip { get; set; } + public int? Take { get; set; } + } +} Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/MemberAccessExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/MemberAccessExpression.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/MemberAccessExpression.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; + +namespace NHibernate.Linq.Expressions +{ + /// <summary> + /// A member access expression is produced where a member of an object is accessed(can be field or Property) + /// </summary> + public class MemberAccessExpression:SqlExpression + { + public MemberAccessExpression(System.Type type, SqlExpression expression, string name) + : base(SqlExpressionType.MemberAccess, type) + { + this.Name = name; + this.Expression = expression; + } + + public string Name { get; protected set; } + public SqlExpression Expression { get; protected set; } + public override string ToString() + { + return string.Format("({0}.{1})", this.Expression, ".", this.Name); + } + } +} Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/OrderByDirection.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/OrderByDirection.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/OrderByDirection.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NHibernate.Linq.Expressions +{ + /// <summary> + /// The direction of the ordering, default is Ascending. + /// </summary> + public enum OrderByDirection + { + Ascending, + Descending + } +} Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/OrderByFragment.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/OrderByFragment.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/OrderByFragment.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; + +namespace NHibernate.Linq.Expressions +{ + /// <summary> + /// An order by expression is an expression that the result is ordered. + /// This class holds reference to the actual expression(can be a projection, property, or an aggregate) + /// </summary> + public class OrderByFragment + { + public OrderByFragment(Expression orderBy,OrderByDirection direction) + { + this.OrderBy = orderBy; + this.Direction = direction; + } + + public Expression OrderBy { get; protected set; } + public OrderByDirection Direction { get;protected set; } + } +} Property changes on: trunk/nhibernate/src/NHibernate.Linq/Expressions/OrderByFragment.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/ProjectionExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/ProjectionExpression.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/ProjectionExpression.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; + +namespace NHibernate.Linq.Expressions +{ + /// <summary> + /// Projection expression + /// </summary> + public class ProjectionExpression:SqlExpression + { + public ProjectionExpression(System.Type type,LambdaExpression lambda):base(SqlExpressionType.Projection,type) + { + this.Projector = lambda; + } + + public LambdaExpression Projector { get; protected set; } + public override string ToString() + { + return string.Format("({0})", this.Projector.ToString()); + } + } +} Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/SelectExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/SelectExpression.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/SelectExpression.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Linq.Expressions; + +namespace NHibernate.Linq.Expressions +{ + /// <summary> + /// A select expression is executed against the database to retrieve data. + /// </summary> + public class SelectExpression : SqlExpression + { + public SelectExpression(System.Type type, SqlExpression from, SqlExpression where, IList<OrderByFragment> orderBys) + : base(SqlExpressionType.Select, type) + { + this.Where = where; + this.OrderBys = orderBys; + this.From = from; + } + + public SqlExpression Where { get; protected set; } + public SqlExpression From { get; protected set; } + public IList<OrderByFragment> OrderBys { get; protected set; } + public LimitFragment Limit { get; set; } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/SelectFragment.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/SelectFragment.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/SelectFragment.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NHibernate.Linq.Expressions +{ + public class SelectFragment + { + public SelectFragment(string alias,SqlExpression expression) + { + this.Alias = alias; + this.Expression = expression; + } + + public string Alias { get; protected set; } + public SqlExpression Expression { get; protected set; } + public override string ToString() + { + return string.Format("({0} as {1})", Expression.ToString(),Alias); + } + } +} Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/SqlExpression.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/SqlExpression.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/SqlExpression.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; + +namespace NHibernate.Linq.Expressions +{ + /// <summary> + /// Base expression for transformed nodes. + /// </summary> + public abstract class SqlExpression:Expression + { + /// <summary> + /// Base class for the modified nodes. + /// </summary> + /// <param name="nodeType"></param> + /// <param name="type"></param> + protected SqlExpression(SqlExpressionType nodeType, System.Type type) + : base((ExpressionType)nodeType, type) + { + + } + } +} Added: trunk/nhibernate/src/NHibernate.Linq/Expressions/SqlExpressionType.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/Expressions/SqlExpressionType.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Linq/Expressions/SqlExpressionType.cs 2008-08-16 23:15:16 UTC (rev 3712) @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NHibernate.Linq.Expressions +{ + public enum SqlExpressionType + { + Entity=100, + Select, + MemberAccess, + Projection, + } +} Modified: trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj 2008-08-16 19:11:04 UTC (rev 3711) +++ trunk/nhibernate/src/NHibernate.Linq/NHibernate.Linq.csproj 2008-08-16 23:15:16 UTC (rev 3712) @@ -46,6 +46,16 @@ </ProjectReference> </ItemGroup> <ItemGroup> + <Compile Include="Expressions\LimitFragment.cs" /> + <Compile Include="Expressions\MemberAccessExpression.cs" /> + <Compile Include="Expressions\OrderByDirection.cs" /> + <Compile Include="Expressions\OrderByFragment.cs" /> + <Compile Include="Expressions\ProjectionExpression.cs" /> + <Compile Include="Expressions\SelectExpression.cs" /> + <Compile Include="Expressions\SelectFragment.cs" /> + <Compile Include="Expressions\SqlExpression.cs" /> + <Compile Include="Expressions\SqlExpressionType.cs" /> + <Compile Include="Expressions\EntityExpression.cs" /> <Compile Include="Util\Guard.cs" /> <Compile Include="Visitors\LogicalExpressionReducer.cs" /> <Compile Include="ExpressionVisitor.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |