From: Michael D. <mik...@us...> - 2004-08-16 05:19:02
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31933/SqlCommand Modified Files: ANSICaseFragment.cs DecodeCaseFragment.cs SelectFragment.cs SqlSelectBuilder.cs SqlString.cs SqlStringBuilder.cs Added Files: Alias.cs ANSIJoinFragment.cs InFragment.cs JoinFragment.cs OracleJoinFragment.cs QueryJoinFragment.cs Log Message: Began refactoring to SqlString. --- NEW FILE: QueryJoinFragment.cs --- using System; using NHibernate.Dialect; using NHibernate.Util; namespace NHibernate.SqlCommand { /// <summary> /// Summary description for QueryJoinFragment. /// </summary> public class QueryJoinFragment : JoinFragment { private SqlStringBuilder afterFrom = new SqlStringBuilder(); private SqlStringBuilder afterWhere = new SqlStringBuilder(); private Dialect.Dialect dialect; private bool useThetaStyleInnerJoins; [Obsolete("Use the ctor with Dialect and bool as the parameters. This will be removed.")] public QueryJoinFragment(Dialect.Dialect dialect) : this (dialect, false) { } public QueryJoinFragment(Dialect.Dialect dialect, bool useThetaStyleInnerJoins) { this.dialect = dialect; this.useThetaStyleInnerJoins = useThetaStyleInnerJoins; } public override void AddJoin(string tableName, string alias, string[] fkColumns, string[] pkColumns, JoinType joinType) { AddJoin(tableName, alias, alias, fkColumns, pkColumns, joinType); } public void AddJoin(string tableName, string alias, string concreteAlias, string[] fkColumns, string[] pkColumns, JoinType joinType) { if (!useThetaStyleInnerJoins || joinType!=JoinType.InnerJoin) { JoinFragment jf = dialect.CreateOuterJoinFragment(); jf.AddJoin(tableName, alias, fkColumns, pkColumns, joinType); AddFragment(jf); } else { AddCrossJoin(tableName, alias); AddCondition(concreteAlias, fkColumns, pkColumns); } } public override SqlString ToFromFragmentString { get { return afterFrom.ToSqlString(); } } public override SqlString ToWhereFragmentString { get { return afterWhere.ToSqlString(); } } public override void AddJoins(SqlString fromFragment, SqlString whereFragment) { afterFrom.Add(fromFragment); afterWhere.Add(whereFragment); } public override JoinFragment Copy() { QueryJoinFragment copy = new QueryJoinFragment(dialect, useThetaStyleInnerJoins); copy.afterFrom = new SqlStringBuilder( afterFrom.ToSqlString() ); copy.afterWhere = new SqlStringBuilder( afterWhere.ToSqlString() ); return copy; } public override void AddCondition(string alias, string[] columns, string condition) { for ( int i=0; i<columns.Length; i++ ) { afterWhere.Add(" and " + alias + StringHelper.Dot + columns[i] + condition); } } public override void AddCrossJoin(string tableName, string alias) { afterFrom.Add(StringHelper.CommaSpace + tableName + ' ' + alias); } public override void AddCondition(string alias, string[] fkColumns, string[] pkColumns) { for ( int j=0; j<fkColumns.Length; j++) { afterWhere.Add( " and " + fkColumns[j] + '=' + alias + StringHelper.Dot + pkColumns[j] ); } } public override void AddCondition(string condition) { //TODO: this seems hackish if ( afterFrom.ToSqlString().ToString().IndexOf( condition.Trim() ) < 0 && afterWhere.ToSqlString().ToString().IndexOf( condition.Trim() ) < 0 ) { if ( !condition.StartsWith(" and ") ) { afterWhere.Add(" and "); } afterWhere.Add(condition); } } } } --- NEW FILE: ANSIJoinFragment.cs --- using System; using NHibernate.Util; namespace NHibernate.SqlCommand { /// <summary> /// An ANSI-style Join. /// </summary> public class ANSIJoinFragment : JoinFragment { private SqlStringBuilder buffer = new SqlStringBuilder(); private SqlStringBuilder conditions = new SqlStringBuilder(); public override void AddJoin(string tableName, string alias, string[] fkColumns, string[] pkColumns, JoinType joinType) { string joinString = null; switch (joinType) { case JoinType.InnerJoin: joinString = " inner join "; break; case JoinType.LeftOuterJoin: joinString = " left outer join "; break; case JoinType.RightOuterJoin: joinString = " right outer join "; break; case JoinType.FullJoin: joinString = " full outer join "; break; default: throw new AssertionFailure("undefind join type"); } buffer.Add( joinString + tableName + ' ' + alias + " on " ); for (int j=0; j<fkColumns.Length; j++) { if (fkColumns[j].IndexOf('.')<1) throw new AssertionFailure("missing alias"); buffer.Add( fkColumns[j] + "=" + alias + StringHelper.Dot + pkColumns[j] ); if (j<fkColumns.Length-1) buffer.Add(" and "); } } public override SqlString ToFromFragmentString { get { return buffer.ToSqlString(); } } public override SqlString ToWhereFragmentString { get { return conditions.ToSqlString(); } } public override void AddJoins(SqlString fromFragment, SqlString whereFragment) { buffer.Add(fromFragment); //where fragment must be empty! } public override JoinFragment Copy() { ANSIJoinFragment copy = new ANSIJoinFragment(); copy.buffer = new SqlStringBuilder( buffer.ToSqlString() ); return copy; } public override void AddCondition(string alias, string[] columns, string condition) { for (int i=0; i<columns.Length; i++) { conditions.Add( " and " + alias + StringHelper.Dot + columns[i] + condition ); } } public override void AddCrossJoin(string tableName, string alias) { buffer.Add( StringHelper.CommaSpace + tableName + " " + alias); } public override void AddCondition(string alias, string[] fkColumns, string[] pkColumns) { throw new NotSupportedException(); } public override void AddCondition(string condition) { throw new NotSupportedException(); } } } --- NEW FILE: Alias.cs --- using System; using NHibernate.Dialect; namespace NHibernate.SqlCommand { /// <summary> /// Aliases tables and fields for Sql Statements. /// </summary> public class Alias { private readonly int length; private readonly string suffix; public Alias(int length, string suffix) { this.length = (suffix==null) ? length : length - suffix.Length; this.suffix = suffix; } public Alias(string suffix) { this.length = int.MaxValue; this.suffix = suffix; } public string ToAliasString(string sqlIdentifier, Dialect.Dialect dialect) { bool isQuoted = dialect.IsQuoted(sqlIdentifier); string unquoted; if(isQuoted) { unquoted = dialect.UnQuote(sqlIdentifier); } else { unquoted = sqlIdentifier; } if ( unquoted.Length > length ) { unquoted = unquoted.Substring(0, length); } if (suffix!=null) unquoted += suffix; if ( isQuoted ) { return dialect.QuoteForAliasName(unquoted); } else { return unquoted; } } public string ToUnquotedAliasString(string sqlIdentifier, Dialect.Dialect dialect) { string unquoted = dialect.UnQuote(sqlIdentifier); if(unquoted.Length > length) { unquoted = unquoted.Substring(0, length); } if(suffix!=null) unquoted += suffix; return unquoted; } public string[] ToUnquotedAliasStrings(string[] sqlIdentifiers, Dialect.Dialect dialect) { string[] aliases = new string[sqlIdentifiers.Length]; for(int i = 0; i < sqlIdentifiers.Length; i++) { aliases[i] = ToUnquotedAliasString(sqlIdentifiers[i], dialect); } return aliases; } public string[] ToAliasStrings(string[] sqlIdentifiers, Dialect.Dialect dialect) { string[] aliases = new string[ sqlIdentifiers.Length ]; for ( int i=0; i<sqlIdentifiers.Length; i++ ) { aliases[i] = ToAliasString(sqlIdentifiers[i], dialect); } return aliases; } } } Index: SelectFragment.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/SelectFragment.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SelectFragment.cs 23 Jun 2004 21:08:58 -0000 1.4 --- SelectFragment.cs 16 Aug 2004 05:18:52 -0000 1.5 *************** *** 3,7 **** using System.Text; - using NHibernate.Sql; using NHibernate.Util; --- 3,6 ---- *************** *** 15,19 **** private string suffix; private IList columns = new ArrayList(); - //private IList aliases = new ArrayList(); private IList columnAliases = new ArrayList(); private Dialect.Dialect dialect; --- 14,17 ---- *************** *** 112,118 **** if(i > 0 || includeLeadingComma) buf.Append(StringHelper.CommaSpace); - // string alias = aliases[i] as string; - // if (alias!=null) buf.Append(alias).Append(StringHelper.Dot); - string columnAlias = columnAliases[i] as string; buf.Append(col) --- 110,113 ---- --- NEW FILE: JoinFragment.cs --- using System; namespace NHibernate.SqlCommand { public enum JoinType { None = -666, InnerJoin = 0, FullJoin = -1, LeftOuterJoin = 1, RightOuterJoin = 2 } /// <summary> /// Represents a SQL <c>JOIN</c> /// </summary> public abstract class JoinFragment { public abstract void AddJoin(string tableName, string alias, string[] fkColumns, string[] pkColumns, JoinType joinType); public abstract void AddCrossJoin(string tableName, string alias); public abstract void AddJoins(SqlString fromFragment, SqlString whereFragment); public abstract SqlString ToFromFragmentString { get; } 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(); public virtual void AddFragment(JoinFragment ojf) { AddJoins( ojf.ToFromFragmentString, ojf.ToWhereFragmentString ); } [Obsolete("should use SqlString instead")] public virtual void AddJoins(string fromFragment, string whereFragment) { this.AddJoins( new SqlString(fromFragment), new SqlString(whereFragment) ); } } } Index: ANSICaseFragment.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/ANSICaseFragment.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ANSICaseFragment.cs 15 Apr 2004 11:36:36 -0000 1.2 --- ANSICaseFragment.cs 16 Aug 2004 05:18:52 -0000 1.3 *************** *** 3,7 **** using System.Text; - using NHibernate.Sql; using NHibernate.Util; --- 3,6 ---- --- NEW FILE: InFragment.cs --- using System; using System.Collections; using NHibernate.Util; namespace NHibernate.SqlCommand { /// <summary> /// Represents an <c>... in (...)</c> expression /// </summary> public class InFragment { private string columnName; private ArrayList values = new ArrayList(); public InFragment AddValue(string value) { values.Add(value); return this; } public InFragment SetColumn(string columnName) { this.columnName = columnName; return this; } public InFragment SetColumn(string alias, string columnName) { this.columnName = alias + StringHelper.Dot + columnName; return SetColumn( this.columnName ); } public SqlString ToFragmentString() { SqlStringBuilder buf = new SqlStringBuilder(values.Count + 5); buf.Add(columnName); if (values.Count > 1) { bool allowNull = false; buf.Add(" in ("); for(int i=0; i<values.Count; i++) { if("null".Equals(values[i])) { allowNull = true; } else { buf.Add( (string)values[i] ); if ( i<values.Count-1) buf.Add(StringHelper.CommaSpace); } } buf.Add(StringHelper.ClosedParen); if(allowNull) { buf.Insert(0, " is null or ") .Insert(0, columnName) .Insert(0, StringHelper.OpenParen) .Add(StringHelper.ClosedParen); } } else { string value = values[0] as string; if ( "null".Equals(value) ) { buf.Add(" is null"); } else { buf.Add( "=" + values[0] ); } } return buf.ToSqlString(); } } } Index: SqlString.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/SqlString.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** SqlString.cs 9 Aug 2004 03:13:18 -0000 1.9 --- SqlString.cs 16 Aug 2004 05:18:52 -0000 1.10 *************** *** 43,47 **** public SqlString Append(SqlString rhs) { ! object[] temp = new object[rhs.SqlParts.Length + sqlParts.Length]; Array.Copy(sqlParts, 0, temp, 0, sqlParts.Length); Array.Copy(rhs.SqlParts, 0, temp, sqlParts.Length, rhs.SqlParts.Length); --- 43,47 ---- public SqlString Append(SqlString rhs) { ! object[] temp = new object[rhs.SqlParts.Length + sqlParts.Length]; Array.Copy(sqlParts, 0, temp, 0, sqlParts.Length); Array.Copy(rhs.SqlParts, 0, temp, sqlParts.Length, rhs.SqlParts.Length); *************** *** 50,53 **** --- 50,72 ---- } + /// <summary> + /// Appends the string parameter to the end of the current SqlString to create a + /// new SqlString object. + /// </summary> + /// <param name="rhs">The string to append.</param> + /// <returns>A new SqlString object.</returns> + /// <remarks> + /// A SqlString object is immutable so this returns a new SqlString. If multiple Appends + /// are called it is better to use the SqlStringBuilder. + /// </remarks> + public SqlString Append(string rhs) + { + object[] temp = new object[ sqlParts.Length + 1]; + Array.Copy(sqlParts, 0, temp, 0, sqlParts.Length); + temp[sqlParts.Length] = rhs; + + return new SqlString(temp); + } + #region System.Object Members Index: SqlStringBuilder.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SqlStringBuilder.cs 20 Mar 2004 22:28:22 -0000 1.2 --- SqlStringBuilder.cs 16 Aug 2004 05:18:52 -0000 1.3 *************** *** 209,212 **** --- 209,236 ---- } + /// <summary> + /// Insert a string containing sql into the SqlStringBuilder at the specified index. + /// </summary> + /// <param name="index">The zero-based index at which the sql should be inserted.</param> + /// <param name="sql">The string containing sql to insert.</param> + /// <returns>This SqlStringBuilder</returns> + public SqlStringBuilder Insert(int index, string sql) + { + sqlParts.Insert(index, sql); + return this; + } + + /// <summary> + /// Insert a Parameter into the SqlStringBuilder at the specified index. + /// </summary> + /// <param name="index">The zero-based index at which the Parameter should be inserted.</param> + /// <param name="param">The Parameter to insert.</param> + /// <returns>This SqlStringBuilder</returns> + public SqlStringBuilder Insert(int index, Parameter param) + { + sqlParts.Insert(index, param); + return this; + } + /// <summary> --- NEW FILE: OracleJoinFragment.cs --- using System; using NHibernate.Util; namespace NHibernate.SqlCommand { /// <summary> /// An Oracle-style (theta) Join /// </summary> public class OracleJoinFragment : JoinFragment { private SqlStringBuilder afterFrom = new SqlStringBuilder(); private SqlStringBuilder afterWhere = new SqlStringBuilder(); public override void AddJoin(string tableName, string alias, string[] fkColumns, string[] pkColumns, JoinType joinType) { AddCrossJoin(tableName, alias); for (int j=0; j<fkColumns.Length; j++) { afterWhere.Add( " and " + fkColumns[j] ); if (joinType == JoinType.RightOuterJoin || joinType == JoinType.FullJoin) afterWhere.Add("(+)"); afterWhere.Add( "=" + alias + StringHelper.Dot + pkColumns[j] ); if (joinType == JoinType.LeftOuterJoin || joinType == JoinType.FullJoin) afterWhere.Add("(+)"); } } public override SqlString ToFromFragmentString { get { return afterFrom.ToSqlString(); } } public override SqlString ToWhereFragmentString { get { return afterWhere.ToSqlString(); } } public override void AddJoins(SqlString fromFragment, SqlString whereFragment) { afterFrom.Add(fromFragment); afterWhere.Add(whereFragment); } public override JoinFragment Copy() { OracleJoinFragment copy = new OracleJoinFragment(); copy.afterFrom = new SqlStringBuilder( afterFrom.ToSqlString() ); copy.afterWhere = new SqlStringBuilder( afterWhere.ToSqlString() ); return copy; } public override void AddCondition(string alias, string[] columns, string condition) { for (int i=0; i<columns.Length; i++) { afterWhere.Add(" and " + alias + StringHelper.Dot + columns[i] + condition ); } } public override void AddCrossJoin(string tableName, string alias) { afterFrom.Add(StringHelper.CommaSpace + tableName + " " + alias); } public override void AddCondition(string alias, string[] fkColumns, string[] pkColumns) { throw new NotSupportedException(); } public override void AddCondition(string condition) { throw new NotSupportedException(); } } } Index: SqlSelectBuilder.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/SqlSelectBuilder.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SqlSelectBuilder.cs 10 Feb 2004 18:38:55 -0000 1.1 --- SqlSelectBuilder.cs 16 Aug 2004 05:18:52 -0000 1.2 *************** *** 10,34 **** using NHibernate.Util; ! namespace NHibernate.SqlCommand { /// <summary> /// A class that builds an <c>INSERT</c> sql statement. /// </summary> ! public class SqlSelectBuilder: SqlBaseBuilder, ISqlStringBuilder { ! private string selectClause; private string fromClause; ! private string outerJoinsAfterFrom; ! private string outerJoinsAfterWhere; private string orderByClause; - // IList whereColumnNames = new ArrayList(); // name of the column - // IList whereColumnValues = new ArrayList(); // string or a Parameter - - // TODO: remove this once it is all converted to SqlStrings - IList whereFragments = new ArrayList(); // might change this to a list of fragements - maybe not - IList whereSqlStrings = new ArrayList(); ! public SqlSelectBuilder(ISessionFactoryImplementor factory): base(factory){ } --- 10,30 ---- using NHibernate.Util; ! namespace NHibernate.SqlCommand ! { /// <summary> /// A class that builds an <c>INSERT</c> sql statement. /// </summary> ! public class SqlSelectBuilder: SqlBaseBuilder, ISqlStringBuilder ! { private string selectClause; private string fromClause; ! private SqlString outerJoinsAfterFrom; ! private SqlString outerJoinsAfterWhere; private string orderByClause; IList whereSqlStrings = new ArrayList(); ! public SqlSelectBuilder(ISessionFactoryImplementor factory): base(factory) ! { } *************** *** 39,43 **** /// <param name="fromClause">The fromClause to set</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetFromClause(string fromClause) { this.fromClause = fromClause; return this; --- 35,40 ---- /// <param name="fromClause">The fromClause to set</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetFromClause(string fromClause) ! { this.fromClause = fromClause; return this; *************** *** 50,54 **** /// <param name="alias">The Alias to use for the table name.</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetFromClause(string tableName, string alias) { this.fromClause = tableName + " " + alias; return this; --- 47,52 ---- /// <param name="alias">The Alias to use for the table name.</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetFromClause(string tableName, string alias) ! { this.fromClause = tableName + " " + alias; return this; *************** *** 60,64 **** /// <param name="orderByClause">The orderByClause to set</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetOrderByClause(string orderByClause) { this.orderByClause = orderByClause; return this; --- 58,63 ---- /// <param name="orderByClause">The orderByClause to set</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetOrderByClause(string orderByClause) ! { this.orderByClause = orderByClause; return this; *************** *** 77,81 **** /// <param name="outerJoinsAfterWhere">The outerJoinsAfterWhere to set</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetOuterJoins(string outerJoinsAfterFrom, string outerJoinsAfterWhere) { this.outerJoinsAfterFrom = outerJoinsAfterFrom; this.outerJoinsAfterWhere = outerJoinsAfterWhere; --- 76,109 ---- /// <param name="outerJoinsAfterWhere">The outerJoinsAfterWhere to set</param> /// <returns>The SqlSelectBuilder</returns> ! [Obsolete("Should use SqlString version instead")] ! public SqlSelectBuilder SetOuterJoins(string outerJoinsAfterFrom, string outerJoinsAfterWhere) ! { ! return this.SetOuterJoins( new SqlString(outerJoinsAfterFrom), new SqlString(outerJoinsAfterWhere) ); ! } ! ! [Obsolete("Should use SqlString version instead")] ! public SqlSelectBuilder SetOuterJoins(SqlString outerJoinsAfterFrom, string outerJoinsAfterWhere) ! { ! return this.SetOuterJoins( outerJoinsAfterFrom, new SqlString(outerJoinsAfterWhere) ); ! } ! ! [Obsolete("Should use SqlString version instead")] ! public SqlSelectBuilder SetOuterJoins(string outerJoinsAfterFrom, SqlString outerJoinsAfterWhere) ! { ! return this.SetOuterJoins( new SqlString(outerJoinsAfterFrom), outerJoinsAfterWhere ); ! } ! ! /// <summary> ! /// Sets the SqlString for the OUTER JOINs. ! /// </summary> ! /// <remarks> ! /// All of the Sql needs to be included in the SELECT. No OUTER JOINS will automatically be ! /// added. ! /// </remarks> ! /// <param name="outerJoinsAfterFrom">The outerJoinsAfterFrom to set</param> ! /// <param name="outerJoinsAfterWhere">The outerJoinsAfterWhere to set</param> ! /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetOuterJoins(SqlString outerJoinsAfterFrom, SqlString outerJoinsAfterWhere) ! { this.outerJoinsAfterFrom = outerJoinsAfterFrom; this.outerJoinsAfterWhere = outerJoinsAfterWhere; *************** *** 88,92 **** /// <param name="selectClause">The selectClause to set</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetSelectClause(string selectClause) { this.selectClause = selectClause; return this; --- 116,121 ---- /// <param name="selectClause">The selectClause to set</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetSelectClause(string selectClause) ! { this.selectClause = selectClause; return this; *************** *** 100,104 **** /// <param name="whereType">The Hibernate Type</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetWhereClause(string tableAlias, string[] columnNames, IType whereType) { Parameter[] parameters = Parameter.GenerateParameters(factory, tableAlias, columnNames, whereType); --- 129,134 ---- /// <param name="whereType">The Hibernate Type</param> /// <returns>The SqlSelectBuilder</returns> ! public SqlSelectBuilder SetWhereClause(string tableAlias, string[] columnNames, IType whereType) ! { Parameter[] parameters = Parameter.GenerateParameters(factory, tableAlias, columnNames, whereType); *************** *** 114,118 **** /// <param name="whereSqlString">The SqlString that contains the sql and parameters to add to the WHERE</param> /// <returns>This SqlSelectBuilder</returns> ! public SqlSelectBuilder AddWhereClause(SqlString whereSqlString) { whereSqlStrings.Add(whereSqlString); return this; --- 144,149 ---- /// <param name="whereSqlString">The SqlString that contains the sql and parameters to add to the WHERE</param> /// <returns>This SqlSelectBuilder</returns> ! public SqlSelectBuilder AddWhereClause(SqlString whereSqlString) ! { whereSqlStrings.Add(whereSqlString); return this; *************** *** 122,142 **** #region ISqlStringBuilder Members ! public SqlString ToSqlString(){ //TODO: set a default capacity SqlStringBuilder sqlBuilder = new SqlStringBuilder(); ! sqlBuilder.Add("SELECT ").Add(selectClause) ! .Add(" FROM ").Add(fromClause) .Add(outerJoinsAfterFrom); sqlBuilder.Add(" WHERE "); ! if(whereSqlStrings.Count > 1) { sqlBuilder.Add( (SqlString[])((ArrayList)whereSqlStrings).ToArray(typeof(SqlString)), null, "AND", null, false); } ! else { sqlBuilder.Add((SqlString)whereSqlStrings[0], null, null, null, false); } --- 153,178 ---- #region ISqlStringBuilder Members ! public SqlString ToSqlString() ! { //TODO: set a default capacity SqlStringBuilder sqlBuilder = new SqlStringBuilder(); ! sqlBuilder.Add("SELECT ") ! .Add(selectClause) ! .Add(" FROM ") ! .Add(fromClause) .Add(outerJoinsAfterFrom); sqlBuilder.Add(" WHERE "); ! if(whereSqlStrings.Count > 1) ! { sqlBuilder.Add( (SqlString[])((ArrayList)whereSqlStrings).ToArray(typeof(SqlString)), null, "AND", null, false); } ! else ! { sqlBuilder.Add((SqlString)whereSqlStrings[0], null, null, null, false); } *************** *** 144,151 **** sqlBuilder.Add(outerJoinsAfterWhere); ! if (orderByClause != null && orderByClause.Trim().Length > 0) sqlBuilder.Add(" ORDER BY ") .Add(orderByClause); ! return sqlBuilder.ToSqlString(); --- 180,188 ---- sqlBuilder.Add(outerJoinsAfterWhere); ! if (orderByClause != null && orderByClause.Trim().Length > 0) ! { sqlBuilder.Add(" ORDER BY ") .Add(orderByClause); ! } return sqlBuilder.ToSqlString(); Index: DecodeCaseFragment.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/DecodeCaseFragment.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** DecodeCaseFragment.cs 15 Apr 2004 11:36:36 -0000 1.2 --- DecodeCaseFragment.cs 16 Aug 2004 05:18:52 -0000 1.3 *************** *** 3,7 **** using System.Text; - using NHibernate.Sql; using NHibernate.Util; --- 3,6 ---- |