From: Michael D. <mik...@us...> - 2004-08-18 20:44:09
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6243/NHibernate/SqlCommand Modified Files: ANSIJoinFragment.cs JoinFragment.cs OracleJoinFragment.cs QueryJoinFragment.cs Log Message: Added some methods to help with converting Hql to SqlString. Index: QueryJoinFragment.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/QueryJoinFragment.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** QueryJoinFragment.cs 16 Aug 2004 05:18:52 -0000 1.1 --- QueryJoinFragment.cs 18 Aug 2004 20:43:58 -0000 1.2 *************** *** 2,5 **** --- 2,7 ---- using NHibernate.Dialect; + using NHibernate.Engine; + using NHibernate.Type; using NHibernate.Util; *************** *** 79,82 **** --- 81,94 ---- } + public override void AddCondition(string alias, string[] columns, string condition, IType conditionType, ISessionFactoryImplementor factory) + { + Parameter[] parameters = Parameter.GenerateParameters(factory, alias, columns, conditionType); + + for( int i=0; i<columns.Length; i++ ) + { + afterWhere.Add( " and " + alias + StringHelper.Dot + columns[i] + condition ); + afterWhere.Add( parameters[i] ); + } + } public override void AddCrossJoin(string tableName, string alias) *************** *** 111,114 **** --- 123,145 ---- + public override void AddCondition(SqlString condition) + { + //TODO: this seems hackish + if( + afterFrom.ToSqlString().ToString().IndexOf( condition.Trim().ToString() ) < 0 && + afterWhere.ToSqlString().ToString().IndexOf( condition.Trim().ToString() ) < 0 ) + { + if( !condition.StartsWith(" and ") ) + { + afterWhere.Add(" and "); + } + + afterWhere.Add(condition); + } + + } + + + } } Index: ANSIJoinFragment.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/ANSIJoinFragment.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ANSIJoinFragment.cs 16 Aug 2004 05:18:52 -0000 1.1 --- ANSIJoinFragment.cs 18 Aug 2004 20:43:58 -0000 1.2 *************** *** 1,4 **** --- 1,6 ---- using System; + using NHibernate.Engine; + using NHibernate.Type; using NHibernate.Util; *************** *** 75,78 **** --- 77,91 ---- } + public override void AddCondition(string alias, string[] columns, string condition, IType conditionType, ISessionFactoryImplementor factory) + { + Parameter[] parameters = Parameter.GenerateParameters(factory, alias, columns, conditionType); + for( int i=0; i<columns.Length; i++) + { + conditions.Add( " and " + alias + StringHelper.Dot + columns[i] + condition ); + conditions.Add( parameters[i] ); + } + } + + public override void AddCrossJoin(string tableName, string alias) { *************** *** 90,93 **** --- 103,112 ---- } + public override void AddCondition(SqlString condition) + { + throw new NotSupportedException(); + } + + } } Index: JoinFragment.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/JoinFragment.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** JoinFragment.cs 16 Aug 2004 05:18:52 -0000 1.1 --- JoinFragment.cs 18 Aug 2004 20:43:58 -0000 1.2 *************** *** 1,4 **** --- 1,7 ---- using System; + using NHibernate.Engine; + using NHibernate.Type; + namespace NHibernate.SqlCommand { *************** *** 23,34 **** public abstract SqlString ToWhereFragmentString { get; } public abstract void AddCondition(string alias, string[] columns, string condition); public abstract void AddCondition(string alias, string[] fkColumns, string[] pkColumns); public abstract void AddCondition(string condition); ! ! public virtual void AddCondition(SqlString condition) ! { ! //TODO: hack with ToString() ! AddCondition( condition.ToString() ); ! } public abstract JoinFragment Copy(); --- 26,33 ---- public abstract SqlString ToWhereFragmentString { get; } public abstract void AddCondition(string alias, string[] columns, string condition); + public abstract void AddCondition(string alias, string[] columns, string condition, IType conditionType, ISessionFactoryImplementor factory); public abstract void AddCondition(string alias, string[] fkColumns, string[] pkColumns); public abstract void AddCondition(string condition); ! public abstract void AddCondition(SqlString condition); public abstract JoinFragment Copy(); Index: OracleJoinFragment.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/OracleJoinFragment.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** OracleJoinFragment.cs 16 Aug 2004 05:18:52 -0000 1.1 --- OracleJoinFragment.cs 18 Aug 2004 20:43:58 -0000 1.2 *************** *** 1,4 **** --- 1,6 ---- using System; + using NHibernate.Engine; + using NHibernate.Type; using NHibernate.Util; *************** *** 60,63 **** --- 62,75 ---- } + public override void AddCondition(string alias, string[] columns, string condition, IType conditionType, ISessionFactoryImplementor factory) + { + Parameter[] parameters = Parameter.GenerateParameters(factory, alias, columns, conditionType); + for( int i=0; i<columns.Length; i++) + { + afterWhere.Add( " and " + alias + StringHelper.Dot + columns[i] + condition ); + afterWhere.Add( parameters[i] ); + } + } + public override void AddCrossJoin(string tableName, string alias) { *************** *** 70,77 **** --- 82,98 ---- } + + + public override void AddCondition(string condition) { throw new NotSupportedException(); } + + public override void AddCondition(SqlString condition) + { + throw new NotSupportedException(); + } + } } |