From: <ric...@us...> - 2009-11-10 13:32:39
|
Revision: 4825 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4825&view=rev Author: ricbrown Date: 2009-11-10 13:32:28 +0000 (Tue, 10 Nov 2009) Log Message: ----------- Tidied QueryOver builder classes inside separate folder/namespace. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs trunk/nhibernate/src/NHibernate/IQueryOver.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Criterion/Lambda/ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs (from rev 4822, trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -0,0 +1,69 @@ + +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +using NHibernate.Impl; +using NHibernate.SqlCommand; + +namespace NHibernate.Criterion +{ + + public class QueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<QueryOver<T>, T> + { + + public QueryOverFetchBuilder(QueryOver<T> root, Expression<Func<T, object>> path) + : base(root, path) { } + + } + + public class IQueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<IQueryOver<T>, T> + { + + public IQueryOverFetchBuilder(IQueryOver<T> root, Expression<Func<T, object>> path) + : base(root, path) { } + + } + + public class QueryOverFetchBuilderBase<R, T> where R : IQueryOver<T> + { + + protected R root; + protected string path; + + protected QueryOverFetchBuilderBase(R root, Expression<Func<T, object>> path) + { + this.root = root; + this.path = ExpressionProcessor.FindMemberExpression(path.Body); + } + + public R Eager + { + get + { + this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Eager); + return this.root; + } + } + + public R Lazy + { + get + { + this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Lazy); + return this.root; + } + } + + public R Default + { + get + { + this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Default); + return this.root; + } + } + + } + +} Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs (from rev 4824, trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -0,0 +1,128 @@ + +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +using NHibernate.Impl; +using NHibernate.SqlCommand; + +namespace NHibernate.Criterion.Lambda +{ + + public class QueryOverJoinBuilder<T> : QueryOverJoinBuilderBase<QueryOver<T>, T> + { + public QueryOverJoinBuilder(QueryOver<T> root, JoinType joinType) : base(root, joinType) { } + + public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path) + { + return root.JoinQueryOver<U>(path, joinType); + } + + public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path) + { + return root.JoinQueryOver<U>(path, joinType); + } + + public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias) + { + return root.JoinQueryOver<U>(path, alias, joinType); + } + + public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) + { + return root.JoinQueryOver<U>(path, alias, joinType); + } + + public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path) + { + return root.JoinQueryOver<U>(path, joinType); + } + + public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path) + { + return root.JoinQueryOver<U>(path, joinType); + } + + public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias) + { + return root.JoinQueryOver<U>(path, alias, joinType); + } + + public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias) + { + return root.JoinQueryOver<U>(path, alias, joinType); + } + + } + + public class IQueryOverJoinBuilder<T> : QueryOverJoinBuilderBase<IQueryOver<T>, T> + { + public IQueryOverJoinBuilder(IQueryOver<T> root, JoinType joinType) : base(root, joinType) { } + + public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path) + { + return root.JoinQueryOver<U>(path, joinType); + } + + public IQueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path) + { + return root.JoinQueryOver<U>(path, joinType); + } + + public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias) + { + return root.JoinQueryOver<U>(path, alias, joinType); + } + + public IQueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) + { + return root.JoinQueryOver<U>(path, alias, joinType); + } + + public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path) + { + return root.JoinQueryOver<U>(path, joinType); + } + + public IQueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path) + { + return root.JoinQueryOver<U>(path, joinType); + } + + public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias) + { + return root.JoinQueryOver<U>(path, alias, joinType); + } + + public IQueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias) + { + return root.JoinQueryOver<U>(path, alias, joinType); + } + + } + + public class QueryOverJoinBuilderBase<R, T> where R : IQueryOver<T> + { + + protected R root; + protected JoinType joinType; + + public QueryOverJoinBuilderBase(R root, JoinType joinType) + { + this.root = root; + this.joinType = joinType; + } + + public R JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias) + { + return (R)root.JoinAlias(path, alias, joinType); + } + + public R JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias) + { + return (R)root.JoinAlias(path, alias, joinType); + } + + } + +} Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs (from rev 4822, trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -0,0 +1,106 @@ + +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +using NHibernate.Impl; +using NHibernate.SqlCommand; + +namespace NHibernate.Criterion.Lambda +{ + + public class QueryOverLockBuilder<T> : QueryOverLockBuilderBase<QueryOver<T>, T> + { + + public QueryOverLockBuilder(QueryOver<T> root, Expression<Func<object>> alias) + : base(root, alias) { } + + } + + public class IQueryOverLockBuilder<T> : QueryOverLockBuilderBase<IQueryOver<T>, T> + { + + public IQueryOverLockBuilder(IQueryOver<T> root, Expression<Func<object>> alias) + : base(root, alias) { } + + } + + public class QueryOverLockBuilderBase<R, T> where R : IQueryOver<T> + { + + protected R root; + protected string alias; + + protected QueryOverLockBuilderBase(R root, Expression<Func<object>> alias) + { + this.root = root; + + if (alias != null) + this.alias = ExpressionProcessor.FindMemberExpression(alias.Body); + } + + private void SetLockMode(LockMode lockMode) + { + if (alias != null) + root.UnderlyingCriteria.SetLockMode(alias, lockMode); + else + root.UnderlyingCriteria.SetLockMode(lockMode); + } + + public R Force + { + get + { + SetLockMode(LockMode.Force); + return this.root; + } + } + + public R None + { + get + { + SetLockMode(LockMode.None); + return this.root; + } + } + + public R Read + { + get + { + SetLockMode(LockMode.Read); + return this.root; + } + } + + public R Upgrade + { + get + { + SetLockMode(LockMode.Upgrade); + return this.root; + } + } + + public R UpgradeNoWait + { + get + { + SetLockMode(LockMode.UpgradeNoWait); + return this.root; + } + } + + public R Write + { + get + { + SetLockMode(LockMode.Write); + return this.root; + } + } + + } + +} Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs (from rev 4822, trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -0,0 +1,72 @@ + +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +using NHibernate.Impl; +using NHibernate.SqlCommand; + +namespace NHibernate.Criterion.Lambda +{ + + public class QueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<QueryOver<T>, T> + { + + public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<T, object>> path) : base(root, path) + {} + + public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<object>> path) : base(root, path) + {} + + } + + public class IQueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<IQueryOver<T>, T> + { + + public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<T, object>> path) : base(root, path) + {} + + public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<object>> path) : base(root, path) + {} + + } + + public class QueryOverOrderBuilderBase<R, T> where R : IQueryOver<T> + { + + protected R root; + protected LambdaExpression path; + + protected QueryOverOrderBuilderBase(R root, Expression<Func<T, object>> path) + { + this.root = root; + this.path = path; + } + + protected QueryOverOrderBuilderBase(R root, Expression<Func<object>> path) + { + this.root = root; + this.path = path; + } + + public R Asc + { + get + { + this.root.UnderlyingCriteria.AddOrder(ExpressionProcessor.ProcessOrder(path, Order.Asc)); + return this.root; + } + } + + public R Desc + { + get + { + this.root.UnderlyingCriteria.AddOrder(ExpressionProcessor.ProcessOrder(path, Order.Desc)); + return this.root; + } + } + + } + +} Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs (from rev 4823, trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -0,0 +1,64 @@ + +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +using NHibernate.Impl; +using NHibernate.SqlCommand; + +namespace NHibernate.Criterion.Lambda +{ + + public class QueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<QueryOver<T>, T, QueryOverSubqueryPropertyBuilder<T>> + { + + public QueryOverSubqueryBuilder(QueryOver<T> root) + : base(root) { } + + } + + public class IQueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<IQueryOver<T>, T, IQueryOverSubqueryPropertyBuilder<T>> + { + + public IQueryOverSubqueryBuilder(IQueryOver<T> root) + : base(root) { } + + } + + public class QueryOverSubqueryBuilderBase<R, T, S> + where R : IQueryOver<T> + where S : QueryOverSubqueryPropertyBuilderBase, new() + { + + protected R root; + + protected QueryOverSubqueryBuilderBase(R root) + { + this.root = root; + } + + /// <summary> + /// Subquery expression in the format + /// .Where(t => t.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>()) + /// </summary> + public R Where(Expression<Func<T, bool>> expression) + { + AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<T>(LambdaSubqueryType.Exact, expression); + root.And(criterion); + return root; + } + + public S WhereProperty(Expression<Func<T, object>> expression) + { + string property = ExpressionProcessor.FindMemberExpression(expression.Body); + return (S)new S().Set(root, property, null); + } + + public S WhereValue(object value) + { + return (S)new S().Set(root, null, value); + } + + } + +} Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs (from rev 4823, trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -0,0 +1,152 @@ + +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +using NHibernate.Impl; +using NHibernate.SqlCommand; + +namespace NHibernate.Criterion.Lambda +{ + + public class QueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<QueryOver<T>, T> + { + + public QueryOverSubqueryPropertyBuilder() + : base() { } + + } + + public class IQueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<IQueryOver<T>, T> + { + + public IQueryOverSubqueryPropertyBuilder() + : base() { } + + } + + public abstract class QueryOverSubqueryPropertyBuilderBase + { + protected QueryOverSubqueryPropertyBuilderBase() { } + + internal abstract QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value); + } + + public class QueryOverSubqueryPropertyBuilderBase<R, T> : QueryOverSubqueryPropertyBuilderBase + where R : IQueryOver<T> + { + + protected R root; + protected string path; + protected object value; + + protected QueryOverSubqueryPropertyBuilderBase() + { + } + + internal override QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value) + { + this.root = (R)root; + this.path = path; + this.value = value; + return this; + } + + private void AddSubquery<U>( + Func<string, DetachedCriteria, AbstractCriterion> propertyMethod, + Func<object, DetachedCriteria, AbstractCriterion> valueMethod, + QueryOver<U> detachedCriteria) + { + if (path != null) + { + root.And(propertyMethod(path, detachedCriteria.DetachedCriteria)); + } + else + { + root.And(valueMethod(value, detachedCriteria.DetachedCriteria)); + } + } + + /// <summary> + /// Add a property equal subquery criterion + /// </summary> + /// <param name="detachedCriteria">detached subquery</param> + public R Eq<U>(QueryOver<U> detachedCriteria) + { + AddSubquery(Subqueries.PropertyEq, Subqueries.Eq, detachedCriteria); + return root; + } + + /// <summary> + /// Create a property greater than or equal subquery criterion + /// </summary> + /// <param name="detachedCriteria">detached subquery</param> + public R Ge<U>(QueryOver<U> detachedCriteria) + { + AddSubquery(Subqueries.PropertyGe, Subqueries.Ge, detachedCriteria); + return root; + } + + /// <summary> + /// Create a property greater than subquery criterion + /// </summary> + /// <param name="detachedCriteria">detached subquery</param> + public R Gt<U>(QueryOver<U> detachedCriteria) + { + AddSubquery(Subqueries.PropertyGt, Subqueries.Gt, detachedCriteria); + return root; + } + + /// <summary> + /// Create a property in subquery criterion + /// </summary> + /// <param name="detachedCriteria">detached subquery</param> + public R In<U>(QueryOver<U> detachedCriteria) + { + AddSubquery(Subqueries.PropertyIn, Subqueries.In, detachedCriteria); + return root; + } + + /// <summary> + /// Create a property less than or equal subquery criterion + /// </summary> + /// <param name="detachedCriteria">detached subquery</param> + public R Le<U>(QueryOver<U> detachedCriteria) + { + AddSubquery(Subqueries.PropertyLe, Subqueries.Le, detachedCriteria); + return root; + } + + /// <summary> + /// Create a property less than subquery criterion + /// </summary> + /// <param name="detachedCriteria">detached subquery</param> + public R Lt<U>(QueryOver<U> detachedCriteria) + { + AddSubquery(Subqueries.PropertyLt, Subqueries.Lt, detachedCriteria); + return root; + } + + /// <summary> + /// Create a property not equal subquery criterion + /// </summary> + /// <param name="detachedCriteria">detached subquery</param> + public R Ne<U>(QueryOver<U> detachedCriteria) + { + AddSubquery(Subqueries.PropertyNe, Subqueries.Ne, detachedCriteria); + return root; + } + + /// <summary> + /// Create a property not in subquery criterion + /// </summary> + /// <param name="detachedCriteria">detached subquery</param> + public R NotIn<U>(QueryOver<U> detachedCriteria) + { + AddSubquery(Subqueries.PropertyNotIn, Subqueries.NotIn, detachedCriteria); + return root; + } + + } + +} Modified: trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-11-08 10:58:42 UTC (rev 4824) +++ trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq.Expressions; +using NHibernate.Criterion.Lambda; using NHibernate.Impl; using NHibernate.SqlCommand; Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824) +++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -1,69 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.Linq.Expressions; - -using NHibernate.Impl; -using NHibernate.SqlCommand; - -namespace NHibernate.Criterion -{ - - public class QueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<QueryOver<T>, T> - { - - public QueryOverFetchBuilder(QueryOver<T> root, Expression<Func<T, object>> path) - : base(root, path) { } - - } - - public class IQueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<IQueryOver<T>, T> - { - - public IQueryOverFetchBuilder(IQueryOver<T> root, Expression<Func<T, object>> path) - : base(root, path) { } - - } - - public class QueryOverFetchBuilderBase<R, T> where R : IQueryOver<T> - { - - protected R root; - protected string path; - - protected QueryOverFetchBuilderBase(R root, Expression<Func<T, object>> path) - { - this.root = root; - this.path = ExpressionProcessor.FindMemberExpression(path.Body); - } - - public R Eager - { - get - { - this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Eager); - return this.root; - } - } - - public R Lazy - { - get - { - this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Lazy); - return this.root; - } - } - - public R Default - { - get - { - this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Default); - return this.root; - } - } - - } - -} Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824) +++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -1,128 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.Linq.Expressions; - -using NHibernate.Impl; -using NHibernate.SqlCommand; - -namespace NHibernate.Criterion -{ - - public class QueryOverJoinBuilder<T> : QueryOverJoinBuilderBase<QueryOver<T>, T> - { - public QueryOverJoinBuilder(QueryOver<T> root, JoinType joinType) : base(root, joinType) { } - - public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path) - { - return root.JoinQueryOver<U>(path, joinType); - } - - public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path) - { - return root.JoinQueryOver<U>(path, joinType); - } - - public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias) - { - return root.JoinQueryOver<U>(path, alias, joinType); - } - - public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) - { - return root.JoinQueryOver<U>(path, alias, joinType); - } - - public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path) - { - return root.JoinQueryOver<U>(path, joinType); - } - - public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path) - { - return root.JoinQueryOver<U>(path, joinType); - } - - public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias) - { - return root.JoinQueryOver<U>(path, alias, joinType); - } - - public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias) - { - return root.JoinQueryOver<U>(path, alias, joinType); - } - - } - - public class IQueryOverJoinBuilder<T> : QueryOverJoinBuilderBase<IQueryOver<T>, T> - { - public IQueryOverJoinBuilder(IQueryOver<T> root, JoinType joinType) : base(root, joinType) { } - - public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path) - { - return root.JoinQueryOver<U>(path, joinType); - } - - public IQueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path) - { - return root.JoinQueryOver<U>(path, joinType); - } - - public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias) - { - return root.JoinQueryOver<U>(path, alias, joinType); - } - - public IQueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) - { - return root.JoinQueryOver<U>(path, alias, joinType); - } - - public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path) - { - return root.JoinQueryOver<U>(path, joinType); - } - - public IQueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path) - { - return root.JoinQueryOver<U>(path, joinType); - } - - public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias) - { - return root.JoinQueryOver<U>(path, alias, joinType); - } - - public IQueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias) - { - return root.JoinQueryOver<U>(path, alias, joinType); - } - - } - - public class QueryOverJoinBuilderBase<R, T> where R : IQueryOver<T> - { - - protected R root; - protected JoinType joinType; - - public QueryOverJoinBuilderBase(R root, JoinType joinType) - { - this.root = root; - this.joinType = joinType; - } - - public R JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias) - { - return (R)root.JoinAlias(path, alias, joinType); - } - - public R JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias) - { - return (R)root.JoinAlias(path, alias, joinType); - } - - } - -} Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824) +++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -1,106 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.Linq.Expressions; - -using NHibernate.Impl; -using NHibernate.SqlCommand; - -namespace NHibernate.Criterion -{ - - public class QueryOverLockBuilder<T> : QueryOverLockBuilderBase<QueryOver<T>, T> - { - - public QueryOverLockBuilder(QueryOver<T> root, Expression<Func<object>> alias) - : base(root, alias) { } - - } - - public class IQueryOverLockBuilder<T> : QueryOverLockBuilderBase<IQueryOver<T>, T> - { - - public IQueryOverLockBuilder(IQueryOver<T> root, Expression<Func<object>> alias) - : base(root, alias) { } - - } - - public class QueryOverLockBuilderBase<R, T> where R : IQueryOver<T> - { - - protected R root; - protected string alias; - - protected QueryOverLockBuilderBase(R root, Expression<Func<object>> alias) - { - this.root = root; - - if (alias != null) - this.alias = ExpressionProcessor.FindMemberExpression(alias.Body); - } - - private void SetLockMode(LockMode lockMode) - { - if (alias != null) - root.UnderlyingCriteria.SetLockMode(alias, lockMode); - else - root.UnderlyingCriteria.SetLockMode(lockMode); - } - - public R Force - { - get - { - SetLockMode(LockMode.Force); - return this.root; - } - } - - public R None - { - get - { - SetLockMode(LockMode.None); - return this.root; - } - } - - public R Read - { - get - { - SetLockMode(LockMode.Read); - return this.root; - } - } - - public R Upgrade - { - get - { - SetLockMode(LockMode.Upgrade); - return this.root; - } - } - - public R UpgradeNoWait - { - get - { - SetLockMode(LockMode.UpgradeNoWait); - return this.root; - } - } - - public R Write - { - get - { - SetLockMode(LockMode.Write); - return this.root; - } - } - - } - -} Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824) +++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -1,72 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.Linq.Expressions; - -using NHibernate.Impl; -using NHibernate.SqlCommand; - -namespace NHibernate.Criterion -{ - - public class QueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<QueryOver<T>, T> - { - - public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<T, object>> path) : base(root, path) - {} - - public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<object>> path) : base(root, path) - {} - - } - - public class IQueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<IQueryOver<T>, T> - { - - public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<T, object>> path) : base(root, path) - {} - - public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<object>> path) : base(root, path) - {} - - } - - public class QueryOverOrderBuilderBase<R, T> where R : IQueryOver<T> - { - - protected R root; - protected LambdaExpression path; - - protected QueryOverOrderBuilderBase(R root, Expression<Func<T, object>> path) - { - this.root = root; - this.path = path; - } - - protected QueryOverOrderBuilderBase(R root, Expression<Func<object>> path) - { - this.root = root; - this.path = path; - } - - public R Asc - { - get - { - this.root.UnderlyingCriteria.AddOrder(ExpressionProcessor.ProcessOrder(path, Order.Asc)); - return this.root; - } - } - - public R Desc - { - get - { - this.root.UnderlyingCriteria.AddOrder(ExpressionProcessor.ProcessOrder(path, Order.Desc)); - return this.root; - } - } - - } - -} Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824) +++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -1,64 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.Linq.Expressions; - -using NHibernate.Impl; -using NHibernate.SqlCommand; - -namespace NHibernate.Criterion -{ - - public class QueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<QueryOver<T>, T, QueryOverSubqueryPropertyBuilder<T>> - { - - public QueryOverSubqueryBuilder(QueryOver<T> root) - : base(root) { } - - } - - public class IQueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<IQueryOver<T>, T, IQueryOverSubqueryPropertyBuilder<T>> - { - - public IQueryOverSubqueryBuilder(IQueryOver<T> root) - : base(root) { } - - } - - public class QueryOverSubqueryBuilderBase<R, T, S> - where R : IQueryOver<T> - where S : QueryOverSubqueryPropertyBuilderBase, new() - { - - protected R root; - - protected QueryOverSubqueryBuilderBase(R root) - { - this.root = root; - } - - /// <summary> - /// Subquery expression in the format - /// .Where(t => t.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>()) - /// </summary> - public R Where(Expression<Func<T, bool>> expression) - { - AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<T>(LambdaSubqueryType.Exact, expression); - root.And(criterion); - return root; - } - - public S WhereProperty(Expression<Func<T, object>> expression) - { - string property = ExpressionProcessor.FindMemberExpression(expression.Body); - return (S)new S().Set(root, property, null); - } - - public S WhereValue(object value) - { - return (S)new S().Set(root, null, value); - } - - } - -} Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824) +++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -1,152 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.Linq.Expressions; - -using NHibernate.Impl; -using NHibernate.SqlCommand; - -namespace NHibernate.Criterion -{ - - public class QueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<QueryOver<T>, T> - { - - public QueryOverSubqueryPropertyBuilder() - : base() { } - - } - - public class IQueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<IQueryOver<T>, T> - { - - public IQueryOverSubqueryPropertyBuilder() - : base() { } - - } - - public abstract class QueryOverSubqueryPropertyBuilderBase - { - protected QueryOverSubqueryPropertyBuilderBase() { } - - internal abstract QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value); - } - - public class QueryOverSubqueryPropertyBuilderBase<R, T> : QueryOverSubqueryPropertyBuilderBase - where R : IQueryOver<T> - { - - protected R root; - protected string path; - protected object value; - - protected QueryOverSubqueryPropertyBuilderBase() - { - } - - internal override QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value) - { - this.root = (R)root; - this.path = path; - this.value = value; - return this; - } - - private void AddSubquery<U>( - Func<string, DetachedCriteria, AbstractCriterion> propertyMethod, - Func<object, DetachedCriteria, AbstractCriterion> valueMethod, - QueryOver<U> detachedCriteria) - { - if (path != null) - { - root.And(propertyMethod(path, detachedCriteria.DetachedCriteria)); - } - else - { - root.And(valueMethod(value, detachedCriteria.DetachedCriteria)); - } - } - - /// <summary> - /// Add a property equal subquery criterion - /// </summary> - /// <param name="detachedCriteria">detached subquery</param> - public R Eq<U>(QueryOver<U> detachedCriteria) - { - AddSubquery(Subqueries.PropertyEq, Subqueries.Eq, detachedCriteria); - return root; - } - - /// <summary> - /// Create a property greater than or equal subquery criterion - /// </summary> - /// <param name="detachedCriteria">detached subquery</param> - public R Ge<U>(QueryOver<U> detachedCriteria) - { - AddSubquery(Subqueries.PropertyGe, Subqueries.Ge, detachedCriteria); - return root; - } - - /// <summary> - /// Create a property greater than subquery criterion - /// </summary> - /// <param name="detachedCriteria">detached subquery</param> - public R Gt<U>(QueryOver<U> detachedCriteria) - { - AddSubquery(Subqueries.PropertyGt, Subqueries.Gt, detachedCriteria); - return root; - } - - /// <summary> - /// Create a property in subquery criterion - /// </summary> - /// <param name="detachedCriteria">detached subquery</param> - public R In<U>(QueryOver<U> detachedCriteria) - { - AddSubquery(Subqueries.PropertyIn, Subqueries.In, detachedCriteria); - return root; - } - - /// <summary> - /// Create a property less than or equal subquery criterion - /// </summary> - /// <param name="detachedCriteria">detached subquery</param> - public R Le<U>(QueryOver<U> detachedCriteria) - { - AddSubquery(Subqueries.PropertyLe, Subqueries.Le, detachedCriteria); - return root; - } - - /// <summary> - /// Create a property less than subquery criterion - /// </summary> - /// <param name="detachedCriteria">detached subquery</param> - public R Lt<U>(QueryOver<U> detachedCriteria) - { - AddSubquery(Subqueries.PropertyLt, Subqueries.Lt, detachedCriteria); - return root; - } - - /// <summary> - /// Create a property not equal subquery criterion - /// </summary> - /// <param name="detachedCriteria">detached subquery</param> - public R Ne<U>(QueryOver<U> detachedCriteria) - { - AddSubquery(Subqueries.PropertyNe, Subqueries.Ne, detachedCriteria); - return root; - } - - /// <summary> - /// Create a property not in subquery criterion - /// </summary> - /// <param name="detachedCriteria">detached subquery</param> - public R NotIn<U>(QueryOver<U> detachedCriteria) - { - AddSubquery(Subqueries.PropertyNotIn, Subqueries.NotIn, detachedCriteria); - return root; - } - - } - -} Modified: trunk/nhibernate/src/NHibernate/IQueryOver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/IQueryOver.cs 2009-11-08 10:58:42 UTC (rev 4824) +++ trunk/nhibernate/src/NHibernate/IQueryOver.cs 2009-11-10 13:32:28 UTC (rev 4825) @@ -4,6 +4,7 @@ using System.Linq.Expressions; using NHibernate.Criterion; +using NHibernate.Criterion.Lambda; using NHibernate.SqlCommand; namespace NHibernate Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-11-08 10:58:42 UTC (rev 4824) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-11-10 13:32:28 UTC (rev 4825) @@ -505,12 +505,12 @@ <Compile Include="Context\WcfOperationSessionContext.cs" /> <Compile Include="Criterion\GroupedProjection.cs" /> <Compile Include="Criterion\IPropertyProjection.cs" /> - <Compile Include="Criterion\QueryOverFetchBuilder.cs" /> - <Compile Include="Criterion\QueryOverJoinBuilder.cs" /> - <Compile Include="Criterion\QueryOverLockBuilder.cs" /> - <Compile Include="Criterion\QueryOverOrderBuilder.cs" /> - <Compile Include="Criterion\QueryOverSubqueryBuilder.cs" /> - <Compile Include="Criterion\QueryOverSubqueryPropertyBuilder.cs" /> + <Compile Include="Criterion\Lambda\QueryOverFetchBuilder.cs" /> + <Compile Include="Criterion\Lambda\QueryOverJoinBuilder.cs" /> + <Compile Include="Criterion\Lambda\QueryOverLockBuilder.cs" /> + <Compile Include="Criterion\Lambda\QueryOverOrderBuilder.cs" /> + <Compile Include="Criterion\Lambda\QueryOverSubqueryBuilder.cs" /> + <Compile Include="Criterion\Lambda\QueryOverSubqueryPropertyBuilder.cs" /> <Compile Include="Dialect\MsSql2008Dialect.cs" /> <Compile Include="Dialect\InformixDialect0940.cs" /> <Compile Include="Dialect\InformixDialect1000.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |