You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
(248) |
May
(82) |
Jun
(90) |
Jul
(177) |
Aug
(253) |
Sep
(157) |
Oct
(151) |
Nov
(143) |
Dec
(278) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(152) |
Feb
(107) |
Mar
(177) |
Apr
(133) |
May
(259) |
Jun
(81) |
Jul
(119) |
Aug
(306) |
Sep
(416) |
Oct
(240) |
Nov
(329) |
Dec
(206) |
2006 |
Jan
(466) |
Feb
(382) |
Mar
(153) |
Apr
(162) |
May
(133) |
Jun
(21) |
Jul
(18) |
Aug
(37) |
Sep
(97) |
Oct
(114) |
Nov
(110) |
Dec
(28) |
2007 |
Jan
(74) |
Feb
(65) |
Mar
(49) |
Apr
(76) |
May
(43) |
Jun
(15) |
Jul
(68) |
Aug
(55) |
Sep
(63) |
Oct
(59) |
Nov
(70) |
Dec
(66) |
2008 |
Jan
(71) |
Feb
(60) |
Mar
(120) |
Apr
(31) |
May
(48) |
Jun
(81) |
Jul
(107) |
Aug
(51) |
Sep
(80) |
Oct
(83) |
Nov
(83) |
Dec
(79) |
2009 |
Jan
(83) |
Feb
(110) |
Mar
(97) |
Apr
(91) |
May
(291) |
Jun
(250) |
Jul
(197) |
Aug
(58) |
Sep
(54) |
Oct
(122) |
Nov
(68) |
Dec
(34) |
2010 |
Jan
(50) |
Feb
(17) |
Mar
(63) |
Apr
(61) |
May
(84) |
Jun
(81) |
Jul
(138) |
Aug
(144) |
Sep
(78) |
Oct
(26) |
Nov
(30) |
Dec
(61) |
2011 |
Jan
(33) |
Feb
(35) |
Mar
(166) |
Apr
(221) |
May
(109) |
Jun
(76) |
Jul
(27) |
Aug
(37) |
Sep
(1) |
Oct
(4) |
Nov
(2) |
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
(2) |
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2013 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(3) |
Oct
(2) |
Nov
|
Dec
(1) |
2014 |
Jan
(1) |
Feb
(1) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Michael D. <mik...@us...> - 2004-08-18 20:48:42
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.Test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7098/NHibernate.Test Modified Files: SimpleTest.cs Log Message: Changed a Load to Find to help with debugging of hql with a simple query. Index: SimpleTest.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/SimpleTest.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SimpleTest.cs 9 Jun 2004 01:05:46 -0000 1.4 --- SimpleTest.cs 18 Aug 2004 20:48:33 -0000 1.5 *************** *** 79,83 **** ITransaction t3 = s3.BeginTransaction(); ! Simple simple3 = (Simple)s3.Load(typeof(Simple), key); Simple otherSimple3; --- 79,84 ---- ITransaction t3 = s3.BeginTransaction(); ! // Simple simple3 = (Simple)s3.Load(typeof(Simple), key); ! Simple simple3 = (Simple)s3.Find( "from Simple as s where s.id = ? and '?'='?'", key, NHibernate.Int64 )[0]; Simple otherSimple3; |
From: Michael D. <mik...@us...> - 2004-08-18 20:48:00
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Sql In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6953/NHibernate/Sql Modified Files: QuerySelect.cs Log Message: Refactoring of converting Hql to SqlString. Index: QuerySelect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Sql/QuerySelect.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** QuerySelect.cs 16 Aug 2004 05:18:52 -0000 1.7 --- QuerySelect.cs 18 Aug 2004 20:47:52 -0000 1.8 *************** *** 16,19 **** --- 16,20 ---- private StringBuilder select = new StringBuilder(); private StringBuilder where = new StringBuilder(); + private SqlCommand.SqlStringBuilder whereBuilder = new SqlCommand.SqlStringBuilder(); private StringBuilder groupBy = new StringBuilder(); private StringBuilder orderBy = new StringBuilder(); *************** *** 86,90 **** { //if ( conjunctiveWhere.length()>0 ) conjunctiveWhere.append(" and "); ! AppendTokens(where, tokens); } --- 87,92 ---- { //if ( conjunctiveWhere.length()>0 ) conjunctiveWhere.append(" and "); ! AppendTokens(whereBuilder, tokens); ! //AppendTokens(where, tokens); } *************** *** 113,116 **** --- 115,119 ---- } + [Obsolete("Should be using ToQuerySqlString instead")] public string ToQueryString() { *************** *** 155,158 **** --- 158,202 ---- } + public SqlCommand.SqlString ToQuerySqlString() + { + SqlCommand.SqlStringBuilder builder = new SqlCommand.SqlStringBuilder(); + + builder.Add("select "); + + if (distinct) builder.Add("distinct "); + + SqlCommand.SqlString from = joins.ToFromFragmentString; + if ( from.StartsWith(",") ) + { + from = from.Substring(1); + } + else if ( from.StartsWith(" inner join") ) + { + from = from.Substring(11); + } + + builder.Add(select.ToString()) + .Add(" from") + .Add( from ); + + SqlCommand.SqlString part1 = joins.ToWhereFragmentString.Trim(); + SqlCommand.SqlString part2 = whereBuilder.ToSqlString().Trim(); + bool hasPart1 = part1.SqlParts.Length > 0; + bool hasPart2 = part2.SqlParts.Length > 0; + + if (hasPart1 || hasPart2) builder.Add(" where "); + if (hasPart1) builder.Add( part1.Substring(4) ); + if (hasPart2) + { + if (hasPart1) builder.Add(" and ("); + builder.Add(part2); + if (hasPart1) builder.Add(")"); + } + if ( groupBy.Length > 0 ) builder.Add(" group by ").Add( groupBy.ToString() ); + if ( having.Length > 0 ) builder.Add(" having ").Add( having.ToString() ); + if ( orderBy.Length > 0 ) builder.Add(" order by ").Add( orderBy.ToString() ); + return builder.ToSqlString(); + } + private void AppendTokens(StringBuilder buf, ICollection iter) { *************** *** 160,163 **** --- 204,208 ---- bool lastQuoted = false; + int debugIndex = 0; foreach(string token in iter) { *************** *** 173,176 **** --- 218,279 ---- buf.Append(token); lastQuoted = token.EndsWith("'"); + debugIndex++; + } + } + + private void AppendTokens(SqlCommand.SqlStringBuilder builder, ICollection iter) + { + bool lastSpaceable = true; + bool lastQuoted = false; + + int debugIndex = 0; + foreach(object token in iter) + { + string tokenString = token as string; + SqlCommand.SqlString tokenSqlString = token as SqlCommand.SqlString; + + bool spaceable = !dontSpace.Contains(token); + bool quoted = false; + + //TODO: seems HACKish to cast between String and SqlString + if(tokenString!=null) + { + quoted = tokenString.StartsWith("'"); + } + else + { + quoted = tokenSqlString.StartsWith("'"); + } + + if (spaceable && lastSpaceable) + { + if (!quoted || !lastQuoted) builder.Add(" "); + } + + lastSpaceable = spaceable; + + if( token.Equals(StringHelper.SqlParameter) ) + { + SqlCommand.Parameter param = new SqlCommand.Parameter(); + param.Name = "placholder"; + builder.Add(param); + } + else + { + // not sure if we have a string or a SqlString here and token is a + // reference to an object - so let the builder figure out what the + // actual object is + builder.AddObject(token); + } + debugIndex++; + + if( tokenString!=null) + { + lastQuoted = tokenString.EndsWith("'"); + } + else + { + tokenSqlString.EndsWith("'"); + } } } |
From: Michael D. <mik...@us...> - 2004-08-18 20:48:00
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6953/NHibernate/Hql Modified Files: PathExpressionParser.cs QueryTranslator.cs WhereParser.cs Log Message: Refactoring of converting Hql to SqlString. Index: WhereParser.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql/WhereParser.cs,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** WhereParser.cs 16 Aug 2004 05:28:22 -0000 1.17 --- WhereParser.cs 18 Aug 2004 20:47:51 -0000 1.18 *************** *** 168,174 **** // in the list of nested subexpressions we are currently processing. ! private ArrayList nots = new ArrayList(); //were an odd or even number of NOTs encountered ! private ArrayList joins = new ArrayList(); //the join string built up by compound paths inside this expression ! private ArrayList booleanTests = new ArrayList();//a flag indicating if the subexpression is known to be boolean private string GetElementName(PathExpressionParser.CollectionElement element, QueryTranslator q) --- 168,182 ---- // in the list of nested subexpressions we are currently processing. ! //were an odd or even number of NOTs encountered ! // each item in the list is a System.Boolean ! private ArrayList nots = new ArrayList(); ! ! //the join string built up by compound paths inside this expression ! // each item in the list is a StringBuilder. ! private ArrayList joins = new ArrayList(); ! ! //a flag indicating if the subexpression is known to be boolean ! // each item in the list is a System.Boolean ! private ArrayList booleanTests = new ArrayList(); private string GetElementName(PathExpressionParser.CollectionElement element, QueryTranslator q) *************** *** 272,276 **** throw new QueryException("MappingException occurred compiling subquery", me); } ! AppendToken(q, subq.SQLString); inSubselect = false; bracketsSinceSelect = 0; --- 280,285 ---- throw new QueryException("MappingException occurred compiling subquery", me); } ! // AppendToken( q, subq.SQLString); ! AppendToken(q, subq.SqlString); inSubselect = false; bracketsSinceSelect = 0; *************** *** 458,463 **** { q.AddNamedParameter(token.Substring(1)); ! AppendToken(q, StringHelper.SqlParameter); ! } else { --- 467,480 ---- { q.AddNamedParameter(token.Substring(1)); ! // AppendToken(q, StringHelper.SqlParameter); ! AppendToken(q, new SqlCommand.SqlString( new object[] { new SqlCommand.Parameter() } ) ); ! } ! else if ( token.Equals(StringHelper.SqlParameter) ) ! { ! //TODO: this is all new code - I'm just looking for a way to find out when ! // we are adding a parameter ! // q.AppendWhereToken(token); ! q.AppendWhereToken(new SqlCommand.SqlString( new object[] { new SqlCommand.Parameter() } ) ); ! } else { *************** *** 539,542 **** --- 556,560 ---- protected virtual void AppendToken(QueryTranslator q, string token) { + if (expectingIndex > 0) { *************** *** 545,548 **** --- 563,578 ---- else { + q.AppendWhereToken( new SqlCommand.SqlString(token) ); + } + } + + protected virtual void AppendToken(QueryTranslator q, SqlCommand.SqlString token) + { + if (expectingIndex > 0) + { + pathExpressionParser.LastCollectionElementIndexValue = token.ToString(); + } + else + { q.AppendWhereToken(token); } Index: QueryTranslator.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql/QueryTranslator.cs,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** QueryTranslator.cs 16 Aug 2004 05:28:22 -0000 1.37 --- QueryTranslator.cs 18 Aug 2004 20:47:51 -0000 1.38 *************** *** 19,23 **** using NHibernate.Type; using NHibernate.Util; - using BaseLoader = NHibernate.Loader.Loader; namespace NHibernate.Hql --- 19,22 ---- *************** *** 26,30 **** /// An instance of <c>QueryTranslator</c> translates a Hibernate query string to SQL. /// </summary> ! public class QueryTranslator : BaseLoader { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(QueryTranslator)); --- 25,29 ---- /// An instance of <c>QueryTranslator</c> translates a Hibernate query string to SQL. /// </summary> ! public class QueryTranslator : Loader.Loader { private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(QueryTranslator)); *************** *** 40,44 **** --- 39,46 ---- private ArrayList crossJoins = new ArrayList(); + // contains a List of strings private IList scalarSelectTokens = new ArrayList(); + + // contains a List of strings containing Sql or SqlStrings private IList whereTokens = new ArrayList(); private IList havingTokens = new ArrayList(); *************** *** 70,73 **** --- 72,76 ---- protected bool compiled; private string sqlString; + private SqlCommand.SqlString realSqlString; private System.Type holderClass; private ConstructorInfo holderConstructor; *************** *** 253,256 **** --- 256,260 ---- } + [Obsolete("Should use Hql.QueryTranslator.SqlString property instead")] public override string SQLString { *************** *** 267,271 **** get { ! throw new InvalidOperationException("SqlString not yet implemented in HQL.QueryTranslator"); } } --- 271,276 ---- get { ! LogQuery( queryString, realSqlString.ToString() ); ! return realSqlString; } } *************** *** 415,418 **** --- 420,428 ---- } + internal void AppendWhereToken(SqlCommand.SqlString token) + { + whereTokens.Add(token); + } + internal void AppendHavingToken(string token) { *************** *** 611,615 **** } ! sqlString = sql.ToQueryString(); System.Type[] classes = new System.Type[types.Length]; --- 621,627 ---- } ! // sqlString = sql.ToQueryString(); ! realSqlString = sql.ToQuerySqlString(); ! System.Type[] classes = new System.Type[types.Length]; *************** *** 852,855 **** --- 864,868 ---- CollectionPersister persister = GetCollectionPersister(collectionRole); string[] keyColumnNames = persister.KeyColumnNames; + IType keyType = persister.KeyType; //if (keyColumnNames.Length!=1) throw new QueryException("composite-key collecion in filter: " + collectionRole); *************** *** 873,877 **** SqlCommand.JoinType.InnerJoin); } ! join.AddCondition( collectionName, keyColumnNames, " = ?"); if (persister.HasWhere) join.AddCondition(persister.GetSQLWhereString(collectionName)); AddFrom(elementName, elemType.PersistentClass, join); --- 886,890 ---- SqlCommand.JoinType.InnerJoin); } ! join.AddCondition( collectionName, keyColumnNames, " = ", keyType, Factory); if (persister.HasWhere) join.AddCondition(persister.GetSQLWhereString(collectionName)); AddFrom(elementName, elemType.PersistentClass, join); *************** *** 934,938 **** // ApplyLocks(SqlString, lockModes, session.Factory.Dialect).ToString(), // this works because it is just appending strings and not doing any ! string sqlWithLock = ApplyLocks(new SqlString(SQLString), lockModes, session.Factory.Dialect).ToString(); --- 947,952 ---- // ApplyLocks(SqlString, lockModes, session.Factory.Dialect).ToString(), // this works because it is just appending strings and not doing any ! // string sqlWithLock = ApplyLocks(new SqlString(SQLString), lockModes, session.Factory.Dialect).ToString(); ! SqlString sqlWithLock = ApplyLocks(SqlString, lockModes, session.Factory.Dialect); *************** *** 1289,1293 **** protected override IDbCommand PrepareQueryStatement(string sql, object[] values, IType[] types, IDictionary namedParams, RowSelection selection, bool scroll, ISessionImplementor session) { ! IType[] paramTypes = null; object[] paramValues = null; --- 1303,1312 ---- protected override IDbCommand PrepareQueryStatement(string sql, object[] values, IType[] types, IDictionary namedParams, RowSelection selection, bool scroll, ISessionImplementor session) { ! return PrepareQueryStatement( new SqlString(sql), values, types, namedParams, selection, scroll, session); ! } ! ! protected override IDbCommand PrepareQueryStatement(SqlString sql, object[] values, IType[] types, IDictionary namedParams, RowSelection selection, bool scroll, ISessionImplementor session) ! { ! IType[] paramTypes = null; object[] paramValues = null; *************** *** 1339,1373 **** ! StringTokenizer tokenizer = new StringTokenizer(sql, StringHelper.SqlParameter, true); ! string[] tokens = sql.Split(StringHelper.SqlParameter[0]); ! ! SqlStringBuilder hqlToSqlBuilder = new SqlStringBuilder(types.Length * 2); ! ! IEnumerator tokenEnum = tokenizer.GetEnumerator(); ! string previousToken = String.Empty; ! string token = String.Empty; int paramIndex = 0; ! ! while(tokenEnum.MoveNext()) { ! token = (string)tokenEnum.Current; ! ! if(token.Equals(StringHelper.SqlParameter) ! && ( EndsWithBoolOperator( previousToken ) ) ) //.EndsWith("=") || previousToken.EndsWith("= ") ) ) { ! Parameter param = Parameter.GenerateParameters(session.Factory, new string[]{paramIndex.ToString()}, paramTypes[paramIndex])[0]; ! hqlToSqlBuilder.Add(param); paramIndex++; } ! else ! { ! hqlToSqlBuilder.Add(token); ! } ! ! previousToken = token; } ! return PrepareCommand(hqlToSqlBuilder.ToSqlString(), paramValues, paramTypes, null, selection, scroll, session); ! } --- 1358,1399 ---- ! // StringTokenizer tokenizer = new StringTokenizer(sql, StringHelper.SqlParameter, true); ! // string[] tokens = sql.Split(StringHelper.SqlParameter[0]); ! // ! // SqlStringBuilder hqlToSqlBuilder = new SqlStringBuilder(types.Length * 2); ! SqlStringBuilder hqlBuilder = new SqlStringBuilder(sql); //this.SqlString ! // IEnumerator tokenEnum = tokenizer.GetEnumerator(); ! // string previousToken = String.Empty; ! // string token = String.Empty; int paramIndex = 0; ! // ! // while(tokenEnum.MoveNext()) ! for( int i=0; i<hqlBuilder.Count; i++ ) { ! // token = (string)tokenEnum.Current; ! Parameter partParam = hqlBuilder[i] as Parameter; ! if(partParam!=null) { ! Parameter param = Parameter.GenerateParameters(session.Factory, new string[] {paramIndex.ToString()}, paramTypes[paramIndex])[0]; ! hqlBuilder[i] = param; paramIndex++; } ! // if(token.Equals(StringHelper.SqlParameter) ! // && ( EndsWithBoolOperator( previousToken ) ) ) //.EndsWith("=") || previousToken.EndsWith("= ") ) ) ! // { ! // Parameter param = Parameter.GenerateParameters(session.Factory, new string[]{paramIndex.ToString()}, paramTypes[paramIndex])[0]; ! // hqlToSqlBuilder.Add(param); ! // paramIndex++; ! // } ! // else ! // { ! // hqlToSqlBuilder.Add(token); ! // } ! // ! // previousToken = token; } ! // return PrepareCommand(hqlToSqlBuilder.ToSqlString(), paramValues, paramTypes, null, selection, scroll, session); ! return PrepareCommand(hqlBuilder.ToSqlString(), paramValues, paramTypes, null, selection, scroll, session); } Index: PathExpressionParser.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql/PathExpressionParser.cs,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** PathExpressionParser.cs 16 Aug 2004 05:28:22 -0000 1.14 --- PathExpressionParser.cs 18 Aug 2004 20:47:51 -0000 1.15 *************** *** 317,320 **** --- 317,321 ---- public virtual void End(QueryTranslator q) { + ignoreInitialJoin = false; if ( IsCollectionValued ) |
From: Michael D. <mik...@us...> - 2004-08-18 20:48:00
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6953/NHibernate/Loader Modified Files: Loader.cs Log Message: Refactoring of converting Hql to SqlString. Index: Loader.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/Loader.cs,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** Loader.cs 16 Aug 2004 05:26:39 -0000 1.26 --- Loader.cs 18 Aug 2004 20:47:51 -0000 1.27 *************** *** 190,194 **** // a string passed to it is a string. st = PrepareQueryStatement( ! ApplyLocks(new SqlString(SQLString), lockModes, session.Factory.Dialect).ToString() , values, types, namedParams, selection, false, session ); } --- 190,194 ---- // a string passed to it is a string. st = PrepareQueryStatement( ! ApplyLocks(SqlString, lockModes, session.Factory.Dialect) , values, types, namedParams, selection, false, session ); } *************** *** 591,594 **** --- 591,601 ---- } + protected virtual IDbCommand PrepareQueryStatement(SqlString sql, object[] values, IType[] types, IDictionary namedParams, RowSelection selection, bool scroll, ISessionImplementor session) + { + // TODO: this is just a hack because I moved it to Hql.QueryTranslator. It will be removed + // once everything is converted to SqlString instead of strings holding sql... + return null; + } + /// <summary> /// Creates an IDbCommand object and populates it with the values necessary to execute it against the |
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(); + } + } } |
From: Michael D. <mik...@us...> - 2004-08-18 20:15:13
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32373/NHibernate/SqlCommand Modified Files: SqlString.cs SqlStringBuilder.cs Log Message: Added some methods to make SqlString and SqlStringBuilder more compatible with String and IList to help with Hql parsing. Index: SqlString.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/SqlString.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** SqlString.cs 16 Aug 2004 05:18:52 -0000 1.10 --- SqlString.cs 18 Aug 2004 20:15:04 -0000 1.11 *************** *** 69,72 **** --- 69,262 ---- } + /// <summary> + /// Compacts the SqlString into the fewest parts possible. + /// </summary> + /// <returns>A new SqlString.</returns> + /// <remarks> + /// Combines all SqlParts that are strings and next to each other into + /// one SqlPart. + /// </remarks> + public SqlString Compact() + { + StringBuilder builder = new StringBuilder(); + SqlStringBuilder sqlBuilder = new SqlStringBuilder(); + string builderString = String.Empty; + + foreach(object part in SqlParts) + { + string stringPart = part as string; + + if(stringPart!=null) + { + builder.Append(stringPart); + } + else + { + builderString = builder.ToString(); + + // don't add an empty string into the new compacted SqlString + if(builderString!=String.Empty) + { + sqlBuilder.Add(builderString); + } + + builder = new StringBuilder(); + + sqlBuilder.Add((Parameter)part); + } + + } + + // make sure the contents of the builder have been added to the sqlBuilder + builderString = builder.ToString(); + + if(builderString!=String.Empty) + { + sqlBuilder.Add(builderString); + } + + return sqlBuilder.ToSqlString(); + } + + /// <summary> + /// Determines whether the end of this instance matches the specified String. + /// </summary> + /// <param name="value">A string to seek at the end.</param> + /// <returns><c>true</c> if the end of this instance matches value; otherwise, <c>false</c></returns> + public bool EndsWith(string value) + { + SqlString tempSql = Compact(); + + int endIndex = tempSql.SqlParts.Length - 1; + + if( tempSql.SqlParts.Length==0 ) + { + return false; + } + + + string lastPart = tempSql.SqlParts[endIndex] as string; + if(lastPart!=null) + { + return lastPart.EndsWith(value); + } + + return false; + } + + /// <summary> + /// Determines whether the beginning of this SqlString matches the specified System.String + /// </summary> + /// <param name="value">The System.String to seek</param> + /// <returns>true if the SqlString starts with the value.</returns> + public bool StartsWith(string value) + { + + SqlString tempSql = this.Compact(); + + foreach(object sqlPart in tempSql.SqlParts) + { + string partText = sqlPart as string; + + // if this part is not a string then we know we did not start with the string + // value + if(partText==null) + { + return false; + } + + // if for some reason we had an empty string in here then just + // move on to the next SqlPart, otherwise lets make sure that + // it does in fact start with the value + if(partText!=String.Empty) + { + return partText.StartsWith(value); + } + } + + // if we get down to here that means there were no sql parts in the SqlString + // so obviously it doesn't start with the value + return false; + } + + /// <summary> + /// Retrieves a substring from this instance. The substring starts at a specified character position. + /// </summary> + /// <param name="startIndex">The starting character position of a substring in this instance.</param> + /// <returns> + /// A new SqlString to the substring that begins at startIndex in this instance. + /// </returns> + /// <remarks> + /// If the first SqlPart is a Parameter then no action is taken and a copy of the SqlString is + /// returned. + /// + /// If the startIndex is greater than the length of the strings before the first SqlPart that + /// is a Parameter then all of the strings will be removed and the first SqlPart returned + /// will be the Parameter. + /// </remarks> + public SqlString Substring(int startIndex) + { + SqlStringBuilder builder = new SqlStringBuilder( Compact() ); + + string part = builder[0] as string; + + // if the first part is null then it is not a string so just + // return them the compacted version + if( part!=null ) + { + if(part.Length < startIndex) + { + builder.RemoveAt(0); + } + else + { + builder[0] = part.Substring(startIndex); + } + } + + return builder.ToSqlString(); + } + + /// <summary> + /// Removes all occurrences of white space characters from the beginning and end of this instance. + /// </summary> + /// <returns> + /// A new SqlString equivalent to this instance after white space characters + /// are removed from the beginning and end. + /// </returns> + public SqlString Trim() + { + SqlStringBuilder builder = new SqlStringBuilder( Compact() ); + + // there is nothing in the builder to Trim + if( builder.Count==0 ) + { + return builder.ToSqlString(); + } + + string begin = builder[0] as string; + int endIndex = builder.Count - 1; + string end = builder[endIndex] as string; + + if( endIndex==0 && begin!=null ) + { + builder[0] = begin.Trim(); + } + else + { + if(begin!=null) + { + builder[0] = begin.TrimStart(); + } + + if(end!=null) + { + builder[builder.Count - 1] = end.TrimEnd(); + } + } + + return builder.ToSqlString(); + } + #region System.Object Members Index: SqlStringBuilder.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/SqlStringBuilder.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SqlStringBuilder.cs 16 Aug 2004 05:18:52 -0000 1.3 --- SqlStringBuilder.cs 18 Aug 2004 20:15:04 -0000 1.4 *************** *** 128,131 **** --- 128,133 ---- + + /// <summary> /// Adds an existing SqlString to this SqlStringBuilder *************** *** 136,143 **** /// <param name="postfix">String to put at the end of the combined SqlString.</param> /// <returns>This SqlStringBuilder</returns> ! /// <remarks>This calls the overloaded Add method with an array of SqlStrings</remarks> public SqlStringBuilder Add(SqlString sqlString, string prefix, string op, string postfix) { ! return Add(new SqlString[] {sqlString}, prefix, op, postfix); } --- 138,148 ---- /// <param name="postfix">String to put at the end of the combined SqlString.</param> /// <returns>This SqlStringBuilder</returns> ! /// <remarks> ! /// This calls the overloaded Add method with an array of SqlStrings and wrapStatment=false ! /// so it will not be wrapped with a "(" and ")" ! /// </remarks> public SqlStringBuilder Add(SqlString sqlString, string prefix, string op, string postfix) { ! return Add(new SqlString[] {sqlString}, prefix, op, postfix, false); } *************** *** 210,213 **** --- 215,246 ---- /// <summary> + /// Gets the number of SqlParts in this SqlStringBuilder. + /// </summary> + /// <returns> + /// The number of SqlParts in this SqlStringBuilder. + /// </returns> + public int Count + { + get { return sqlParts.Count; } + } + + /// <summary> + /// Gets or Sets the element at the index + /// </summary> + /// <value>Returns a string or Parameter.</value> + /// <remarks></remarks> + public object this[int index] + { + get + { + return sqlParts[index]; + } + set + { + sqlParts[index] = value; + } + } + + /// <summary> /// Insert a string containing sql into the SqlStringBuilder at the specified index. /// </summary> *************** *** 233,236 **** --- 266,279 ---- } + /// <summary> + /// Removes the string or Parameter at the specified index. + /// </summary> + /// <param name="index">The zero-based index of the item to remove.</param> + /// <returns>This SqlStringBuilder</returns> + public SqlStringBuilder RemoveAt(int index) + { + sqlParts.RemoveAt(index); + return this; + } /// <summary> |
From: Michael D. <mik...@us...> - 2004-08-18 20:15:12
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/SqlCommandTest In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32373/NHibernate.Test/SqlCommandTest Modified Files: SqlStringBuilderFixture.cs SqlStringFixture.cs Log Message: Added some methods to make SqlString and SqlStringBuilder more compatible with String and IList to help with Hql parsing. Index: SqlStringBuilderFixture.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/SqlCommandTest/SqlStringBuilderFixture.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SqlStringBuilderFixture.cs 16 Aug 2004 05:14:23 -0000 1.1 --- SqlStringBuilderFixture.cs 18 Aug 2004 20:15:03 -0000 1.2 *************** *** 25,28 **** --- 25,56 ---- } + + [Test] + public void RemoveAt() + { + SqlStringBuilder builder = new SqlStringBuilder(); + + builder.Add(" select * "); + builder.Add("from table"); + Assert.AreEqual( " select * from table", builder.ToSqlString().ToString() ); + + builder.RemoveAt(0); + Assert.AreEqual( "from table", builder.ToSqlString().ToString(), "Removed the first element in the SqlStringBuilder" ); + + builder.Insert(0, "SELECT * "); + Assert.AreEqual( "SELECT * from table", builder.ToSqlString().ToString() ); + } + + [Test] + public void Index() + { + SqlStringBuilder builder = new SqlStringBuilder(); + builder.Add(" select * "); + builder.Add("from table"); + + builder[0] = "SELECT * "; + Assert.AreEqual( "SELECT * from table", builder.ToSqlString().ToString() ); + Assert.AreEqual( "from table", builder[1] ); + } } } Index: SqlStringFixture.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/SqlCommandTest/SqlStringFixture.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SqlStringFixture.cs 16 Aug 2004 05:14:23 -0000 1.1 --- SqlStringFixture.cs 18 Aug 2004 20:15:04 -0000 1.2 *************** *** 32,35 **** --- 32,193 ---- } + + [Test] + public void EndsWith() + { + SqlString sql = new SqlString( new string[] {"select", " from table" } ); + Assert.IsTrue( sql.EndsWith("ble") ); + Assert.IsFalse( sql.EndsWith("'") ); + } + + [Test] + public void EndsWithEmptyString() + { + SqlString sql = new SqlString( new string[] { "", "select", " from table", "" } ); + Assert.IsTrue( sql.EndsWith("ble") ); + Assert.IsFalse( sql.EndsWith("'") ); + } + + [Test] + public void EndsWithParameter() + { + SqlString sql = new SqlString( new object[] { "", "select", " from table where id = ", new Parameter() } ); + Assert.IsFalse( sql.EndsWith("'") ); + Assert.IsFalse( sql.EndsWith("") ); + } + + [Test] + public void StartsWith() + { + SqlString sql = new SqlString( new string[] {"select", " from table" } ); + Assert.IsTrue( sql.StartsWith("s") ); + Assert.IsFalse( sql.StartsWith(",") ); + } + + [Test] + public void StartsWithEmptyString() + { + SqlString sql = new SqlString( new string[] { "", "select", " from table" } ); + Assert.IsTrue( sql.StartsWith("s") ); + Assert.IsFalse( sql.StartsWith(",") ); + } + + [Test] + public void CompactWithNoParams() + { + SqlString sql = new SqlString( new string[] { "", "select", " from table" } ); + SqlString compacted = sql.Compact(); + + Assert.AreEqual( 1, compacted.SqlParts.Length ); + Assert.AreEqual( "select from table", compacted.ToString() ); + } + + [Test] + public void CompactWithParams() + { + SqlStringBuilder builder = new SqlStringBuilder(); + Parameter param = new Parameter(); + param.Name = "id"; + param.SqlType = new SqlTypes.Int32SqlType(); + + builder.Add("select from table "); + builder.Add("where "); + builder.Add("id = "); + builder.Add(param); + builder.Add(" and "); + builder.Add("'a'='a'"); + + SqlString sql = builder.ToSqlString(); + sql = sql.Compact(); + + Assert.AreEqual( 3, sql.SqlParts.Length ); + Assert.AreEqual( "select from table where id = :id and 'a'='a'", sql.ToString() ); + + } + + [Test] + public void CompactWithNoString() + { + Parameter p1 = new Parameter(); + Parameter p2 = new Parameter(); + p1.Name = "p1"; + p2.Name = "p2"; + + SqlString sql = new SqlString( new object[] {p1, p2} ); + SqlString compacted = sql.Compact(); + + Assert.AreEqual( 2, compacted.SqlParts.Length ); + Assert.AreEqual( ":p1:p2", compacted.ToString() ); + + } + + [Test] + public void Substring() + { + SqlStringBuilder builder = new SqlStringBuilder(); + Parameter p = new Parameter(); + p.Name = "p1"; + + builder.Add(" select from table"); + builder.Add(" where p = "); + builder.Add(p); + + SqlString sql = builder.ToSqlString(); + + sql = sql.Substring(1); + + Assert.AreEqual( "select from table where p = :p1", sql.ToString() ); + + + } + + [Test] + public void TrimAllString() + { + SqlString sql = new SqlString( new string[] {" extra space", " in the middle", " at the end " } ); + sql = sql.Trim(); + + Assert.AreEqual( "extra space in the middle at the end", sql.ToString() ); + } + + [Test] + public void TrimBeginParamEndString() + { + Parameter p1 = new Parameter(); + p1.Name = "p1"; + + SqlString sql = new SqlString( new object[] {p1, " extra space "} ); + sql = sql.Trim(); + + Assert.AreEqual( ":p1 extra space", sql.ToString() ); + } + + [Test] + public void TrimBeginStringEndParam() + { + Parameter p1 = new Parameter(); + p1.Name = "p1"; + + SqlString sql = new SqlString( new object[] { " extra space ", p1 } ); + sql = sql.Trim(); + + Assert.AreEqual( "extra space :p1", sql.ToString() ); + } + + [Test] + public void TrimAllParam() + { + Parameter p1 = new Parameter(); + p1.Name = "p1"; + Parameter p2 = new Parameter(); + p2.Name = "p2"; + + SqlString sql = new SqlString( new object[] { p1, p2 } ); + sql = sql.Trim(); + + Assert.AreEqual( ":p1:p2", sql.ToString() ); + } + + } } |
From: Michael D. <mik...@us...> - 2004-08-17 23:02:31
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.Examples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4010 Modified Files: NHibernate.Examples-1.1.csproj Log Message: Added Blogger example to cvs. Index: NHibernate.Examples-1.1.csproj =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate.Examples/NHibernate.Examples-1.1.csproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** NHibernate.Examples-1.1.csproj 6 Aug 2004 03:25:17 -0000 1.2 --- NHibernate.Examples-1.1.csproj 17 Aug 2004 17:40:43 -0000 1.3 *************** *** 116,119 **** --- 116,142 ---- /> <File + RelPath = "Blogger\Blog.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "Blogger\Blog.hbm.xml" + BuildAction = "EmbeddedResource" + /> + <File + RelPath = "Blogger\BloggerFixture.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "Blogger\BlogItem.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "Blogger\BlogItem.hbm.xml" + BuildAction = "EmbeddedResource" + /> + <File RelPath = "Cascades\Alias.cs" SubType = "Code" |
From: Michael D. <mik...@us...> - 2004-08-17 22:59:44
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.DomainModel/NHSpecific In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28854 Modified Files: Node.cs Log Message: Added method to remove a node Index: Node.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate.DomainModel/NHSpecific/Node.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Node.cs 9 Jun 2004 01:04:35 -0000 1.1 --- Node.cs 17 Aug 2004 14:12:42 -0000 1.2 *************** *** 53,56 **** --- 53,60 ---- } + private void RemovePreviousNode(Node previousNode) + { + PreviousNodes.Remove(previousNode); + } /// <summary> *************** *** 82,85 **** --- 86,95 ---- } + public void RemoveDestinationNode(Node destinationNode) + { + DestinationNodes.Remove(destinationNode); + destinationNode.RemovePreviousNode(this); + } + public override int GetHashCode() { |
From: Michael D. <mik...@us...> - 2004-08-17 21:45:23
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.Examples/Blogger In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4010/Blogger Added Files: Blog.cs BloggerFixture.cs BlogItem.cs Blog.hbm.xml BlogItem.hbm.xml Log Message: Added Blogger example to cvs. --- NEW FILE: BlogItem.cs --- using System; using System.Collections; namespace NHibernate.Examples.Blogger { public class BlogItem { private long id; private DateTime dateTime; private string text; private string title; private Blog blog; public Blog ParentBlog { get { return blog; } set { blog = value; } } public DateTime ItemDate { get { return dateTime; } set { dateTime = value; } } public long Id { get { return id; } set { id=value; } } public string Text { get { return text; } set { text=value; } } public string Title { get { return title; } set { title=value; } } } } --- NEW FILE: BloggerFixture.cs --- using System; using System.Collections; using NHibernate; using NHibernate.Cfg; using NHibernate.Tool.hbm2ddl; using NUnit.Framework; namespace NHibernate.Examples.Blogger { /// <summary> /// Summary description for BloggerFixture. /// </summary> [TestFixture] public class BloggerFixture { private ISessionFactory _sessions; [Test] public void Main() { Configure(); ExportTables(); Blog blog = CreateBlog("GregBlog"); Assert.IsTrue( blog.Id!=0, "The Id should have been assigned by the native generator" ); BlogItem blogItem = CreateBlogItem(blog, "new item", "Required introduction in every blog."); Assert.IsTrue( blogItem.Id!=0, "The Id should have been assigned by the native generator" ); Assert.AreEqual( blog, blogItem.ParentBlog, "The BlogItem's Parent should be the Blog" ); Assert.AreEqual( "new item", blogItem.Title, "correct title was saved" ); Assert.AreEqual( "Required introduction in every blog.", blogItem.Text, "correct text was saved." ); BlogItem blogItem2 = CreateBlogItem(blog.Id, "item 2", "Finally some cool stuff in my second blog."); Assert.IsTrue( blogItem2.Id!=0, "The Id should have been assigned by the native generator." ); Assert.AreEqual( "item 2", blogItem2.Title, "correct title was saved" ); Assert.AreEqual( "Finally some cool stuff in my second blog.", blogItem2.Text, "correct text was saved." ); UpdateBlogItem(blogItem2.Id, "Updated the cool stuff in my blog"); // reload the blog to verify the db has the correct values ISession s = _sessions.OpenSession(); blog = (Blog) s.Find( "from Blog as b where b.Name=:name", "GregBlog", NHibernate.String )[0]; Assert.IsNotNull(blog); Assert.AreEqual( 2, blog.Items.Count ); DateTime previousItemsDate = DateTime.Parse("2004-01-01"); int index = 0; foreach(BlogItem item in blog.Items) { if( index > 0 ) { Assert.IsTrue( item.ItemDate > previousItemsDate, "is order-by working" ); } previousItemsDate = item.ItemDate; if(item.Id==blogItem.Id) { // it is problematic to compare DateTime values when using DateTime.Now to // set the value because Ms Sql can _NOT_ store dates with the same accuracy // as the DateTime struct can - so it is possible to store a DateTime and not // retrieve the exact same DateTime. See the SQL Server BOL for a description // of how accurately a datetime value is stored in the db. //Assert.AreEqual( blogItem.ItemDate, item.ItemDate ); Assert.AreEqual( blogItem.Text, item.Text ); Assert.AreEqual( blogItem.Title, item.Title ); // note - we can't compare the blogItem.ParentBlog and item.ParentBlog because they // will be differnt objects since they were loaded in different sessions. If Blog // implemented Equals() and GetHashCode() correctly then we could compare them - they // would be equal by object equality - blog.Equals(otherBlog), but not have // by object identity - blog==Otherblog - because they would be seperate objects in memory. // NHibernate guarantees the same object by identity inside of a Session only. Assert.IsFalse( blogItem.ParentBlog.Equals(item.ParentBlog) , "The ParentBlog's are not Equal because Blog does not override Equals() so it uses Object.Equals() which is comparing by object identity." ); // The only way to make sure these are referring to the same blog is by checking for // database identity equality - ie: comparing there property "Id" because that is the // property used as the primary keys Assert.AreEqual( blogItem.ParentBlog.Id, item.ParentBlog.Id, "item's parent blog should have equality by database identity" ); } else if( item.Id==blogItem2.Id) { // blogItem2 has not been updated - the Id was used to load a new blogItem // and update that. So compare by what we expect it to be. Assert.AreEqual( "Updated the cool stuff in my blog", item.Text ); Assert.AreEqual( "item 2", item.Title ); // the Ids of the ParentBlog should be the same because the blog item was not moved // to a different blog - so it shoud have database identity equality Assert.AreEqual( blog.Id, item.ParentBlog.Id ); } } } public void Configure() { Configuration cfg = new Configuration(); cfg.AddClass(typeof(Blog)); cfg.AddClass(typeof(BlogItem)); _sessions = cfg.BuildSessionFactory(); } public void ExportTables() { Configuration cfg = new Configuration(); cfg.AddClass(typeof(Blog)); cfg.AddClass(typeof(BlogItem)); new SchemaExport (cfg).Create(true,true); } public Blog CreateBlog(String name) { Blog blog = new Blog(); blog.Name=name; blog.Items = new ArrayList(); ISession session = _sessions.OpenSession(); ITransaction tx = null; try { tx = session.BeginTransaction(); session.Save(blog); tx.Commit(); } catch (HibernateException e) { if (tx!=null) tx.Rollback(); throw e; } finally { session.Close(); } return blog; } public BlogItem CreateBlogItem(Blog blog, string title, string text) { BlogItem item = new BlogItem(); item.Title = title; item.Text = text; item.ParentBlog = blog; item.ItemDate = DateTime.Now; blog.Items.Add(item); ISession session = _sessions.OpenSession(); ITransaction tx = null; try { tx = session.BeginTransaction(); session.Update(blog); tx.Commit(); } catch (HibernateException e) { if (tx!=null) tx.Rollback(); throw e; } finally { session.Close(); } return item; } public BlogItem CreateBlogItem(long blogid, string title, string text) { BlogItem item = new BlogItem(); item.Title = title; item.Text = text; item.ItemDate = DateTime.Now; ISession session = _sessions.OpenSession(); ITransaction tx = null; try { tx = session.BeginTransaction(); Blog blog = (Blog) session.Load(typeof(Blog), blogid); item.ParentBlog = blog; blog.Items.Add(item); tx.Commit(); } catch (HibernateException e) { if (tx!=null) tx.Rollback(); throw e; } finally { session.Close(); } return item; } public void UpdateBlogItem(long itemid, string text) { ISession session = _sessions.OpenSession(); ITransaction tx = null; try { tx = session.BeginTransaction(); BlogItem item = (BlogItem) session.Load(typeof(BlogItem), itemid); item.Text = text; tx.Commit(); } catch (HibernateException e) { if (tx!=null) tx.Rollback(); throw e; } finally { session.Close(); } } } } --- NEW FILE: Blog.cs --- using System; using System.Collections; namespace NHibernate.Examples.Blogger { public class Blog { private long id; private string name; private IList items; public long Id { get { return id; } set { id=value; } } public string Name { get { return name; } set { name=value; } } public IList Items { get { return items; } set { items=value; } } } } --- NEW FILE: Blog.hbm.xml --- (This appears to be a binary file; contents omitted.) --- NEW FILE: BlogItem.hbm.xml --- (This appears to be a binary file; contents omitted.) |
From: Michael D. <mik...@us...> - 2004-08-17 17:44:17
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.Examples/Blogger In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3378/Blogger Log Message: Directory /cvsroot/nhibernate/nhibernate/src/NHibernate.Examples/Blogger added to the repository |
From: Michael D. <mik...@us...> - 2004-08-17 14:48:29
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/NHSpecificTest In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29041 Modified Files: NodeFixture.cs Log Message: Added test for updating the links between Nodes. Index: NodeFixture.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate.Test/NHSpecificTest/NodeFixture.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** NodeFixture.cs 1 Aug 2004 22:13:03 -0000 1.2 --- NodeFixture.cs 17 Aug 2004 14:14:02 -0000 1.3 *************** *** 89,94 **** --- 89,139 ---- s2.Close(); + s = sessions.OpenSession(); + t = s.BeginTransaction(); + + levelThreeNode = (Node)s.Load( typeof(Node), "3" ); + endNode = (Node)s.Load( typeof(Node), "end" ); + + Node levelFourOneNode = new Node("4-1"); + Node levelFourTwoNode = new Node("4-2"); + + levelThreeNode.RemoveDestinationNode(endNode); + levelThreeNode.AddDestinationNode(levelFourOneNode); + levelThreeNode.AddDestinationNode(levelFourTwoNode); + + levelFourOneNode.AddDestinationNode(endNode); + levelFourTwoNode.AddDestinationNode(endNode); + + s.Save(levelFourOneNode); + s.Save(levelFourTwoNode); + + t.Commit(); + s.Close(); + + s = sessions.OpenSession(); + t = s.BeginTransaction(); + + levelThreeNode = (Node)s.Load( typeof(Node), "3" ); + endNode = (Node)s.Load( typeof(Node), "end" ); + + Assert.AreEqual( 2, levelThreeNode.DestinationNodes.Keys.Count, "should be attached to the 2 level 4 nodes" ); + foreach( Node node in levelThreeNode.DestinationNodes.Keys ) + { + Assert.IsFalse( node.Equals(endNode), "one of the Dest Nodes in levelThreeNode should not be the end node"); + } + + Assert.AreEqual( 2, endNode.PreviousNodes.Keys.Count, "end node should have two nodes leading into it" ); + + foreach( Node node in endNode.PreviousNodes.Keys ) + { + Assert.IsFalse( node.Equals(levelThreeNode) , "one of the Prev Nodes in should not be the level 3 node, only level 4 nodes" ); + } + + t.Commit(); + s.Close(); + } + } } |
From: Michael D. <mik...@us...> - 2004-08-16 05:31:25
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1019/Dialect Modified Files: Dialect.cs OracleDialect.cs Log Message: Tidied up using section. Index: Dialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/Dialect.cs,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** Dialect.cs 16 Aug 2004 05:21:11 -0000 1.35 --- Dialect.cs 16 Aug 2004 05:30:58 -0000 1.36 *************** *** 6,10 **** using NHibernate.Engine; using NHibernate.Hql; - //using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.SqlTypes; --- 6,9 ---- Index: OracleDialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/OracleDialect.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** OracleDialect.cs 16 Aug 2004 05:21:12 -0000 1.4 --- OracleDialect.cs 16 Aug 2004 05:30:58 -0000 1.5 *************** *** 1,5 **** using System; - //using NHibernate.Sql; using NHibernate.SqlCommand; --- 1,4 ---- |
From: Michael D. <mik...@us...> - 2004-08-16 05:31:24
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Persister In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1019/Persister Modified Files: EntityPersister.cs NormalizedEntityPersister.cs Log Message: Tidied up using section. Index: NormalizedEntityPersister.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Persister/NormalizedEntityPersister.cs,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** NormalizedEntityPersister.cs 16 Aug 2004 05:22:56 -0000 1.24 --- NormalizedEntityPersister.cs 16 Aug 2004 05:30:59 -0000 1.25 *************** *** 9,13 **** using NHibernate.Loader; using NHibernate.Mapping; - //using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Type; --- 9,12 ---- Index: EntityPersister.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Persister/EntityPersister.cs,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** EntityPersister.cs 16 Aug 2004 05:22:56 -0000 1.22 --- EntityPersister.cs 16 Aug 2004 05:30:59 -0000 1.23 *************** *** 9,13 **** using NHibernate.Loader; using NHibernate.Mapping; - //using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Type; --- 9,12 ---- |
From: Michael D. <mik...@us...> - 2004-08-16 05:29:11
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv768 Modified Files: NHibernate-1.1.csproj Log Message: Began refactoring to SqlString. Index: NHibernate-1.1.csproj =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/NHibernate-1.1.csproj,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** NHibernate-1.1.csproj 9 Aug 2004 03:34:27 -0000 1.34 --- NHibernate-1.1.csproj 16 Aug 2004 05:29:02 -0000 1.35 *************** *** 1339,1423 **** /> <File ! RelPath = "Sql\Alias.cs" ! SubType = "Code" ! BuildAction = "Compile" ! /> ! <File ! RelPath = "Sql\ANSIJoinFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "Sql\InFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "Sql\JoinFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "Sql\OracleJoinFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "Sql\OuterJoinFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "Sql\QueryJoinFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "Sql\QuerySelect.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ANSICaseFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\CaseFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ConditionalFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\DecodeCaseFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ForUpdateFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ISqlStringBuilder.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\Parameter.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ParameterLength.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ParameterPrecisionScale.cs" SubType = "Code" BuildAction = "Compile" --- 1339,1418 ---- /> <File ! RelPath = "Sql\QuerySelect.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\Alias.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ANSICaseFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ANSIJoinFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\CaseFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ConditionalFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\DecodeCaseFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ForUpdateFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\InFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ISqlStringBuilder.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\JoinFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\OracleJoinFragment.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\Parameter.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ParameterLength.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\ParameterPrecisionScale.cs" SubType = "Code" BuildAction = "Compile" /> <File ! RelPath = "SqlCommand\QueryJoinFragment.cs" SubType = "Code" BuildAction = "Compile" |
From: Michael D. <mik...@us...> - 2004-08-16 05:28:32
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv719/Hql Modified Files: FromParser.cs PathExpressionParser.cs QueryTranslator.cs WhereParser.cs Log Message: Began refactoring to SqlString. Index: WhereParser.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql/WhereParser.cs,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** WhereParser.cs 1 Jun 2004 13:00:11 -0000 1.16 --- WhereParser.cs 16 Aug 2004 05:28:22 -0000 1.17 *************** *** 3,10 **** using System.Collections.Specialized; using System.Text; ! using NHibernate.Type; using NHibernate.Persister; - using NHibernate.Util; using NHibernate.Sql; namespace NHibernate.Hql --- 3,11 ---- using System.Collections.Specialized; using System.Text; ! using NHibernate.Persister; using NHibernate.Sql; + using NHibernate.Type; + using NHibernate.Util; namespace NHibernate.Hql *************** *** 438,447 **** } ! private void AddJoin( JoinFragment ojf, QueryTranslator q ) { ! JoinFragment fromClause = q.CreateJoinFragment(true); ! fromClause.AddJoins( ojf.ToFromFragmentString, String.Empty ); q.AddJoin( pathExpressionParser.Name, fromClause ); ! AddToCurrentJoin( ojf.ToWhereFragmentString ); } --- 439,450 ---- } ! private void AddJoin( SqlCommand.JoinFragment ojf, QueryTranslator q ) { ! SqlCommand.JoinFragment fromClause = q.CreateJoinFragment(true); ! //TODO: HACK with StringEmpty and SqlString ! fromClause.AddJoins( ojf.ToFromFragmentString, new SqlCommand.SqlString(String.Empty) ); q.AddJoin( pathExpressionParser.Name, fromClause ); ! //TODO: HACK with ToString() ! AddToCurrentJoin( ojf.ToWhereFragmentString.ToString() ); } Index: QueryTranslator.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql/QueryTranslator.cs,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** QueryTranslator.cs 13 Aug 2004 18:55:33 -0000 1.36 --- QueryTranslator.cs 16 Aug 2004 05:28:22 -0000 1.37 *************** *** 6,10 **** --- 6,12 ---- using System.Text.RegularExpressions; using System.Reflection; + using System.Runtime.CompilerServices; using System.Runtime.Serialization; + using NHibernate; using NHibernate.Collection; *************** *** 18,22 **** using NHibernate.Util; using BaseLoader = NHibernate.Loader.Loader; - using System.Runtime.CompilerServices; namespace NHibernate.Hql --- 20,23 ---- *************** *** 280,284 **** // aliasing SQL identifiers ... but it does what // we want! ! return new Alias(10, NextCount().ToString() + StringHelper.Underscore) .ToAliasString(StringHelper.Unqualify(description).ToLower(), dialect); } --- 281,285 ---- // aliasing SQL identifiers ... but it does what // we want! ! return new SqlCommand.Alias(10, NextCount().ToString() + StringHelper.Underscore) .ToAliasString(StringHelper.Unqualify(description).ToLower(), dialect); } *************** *** 379,383 **** } ! internal void AddFrom(string name, System.Type type, JoinFragment join) { AddType(name, type); --- 380,384 ---- } ! internal void AddFrom(string name, System.Type type, SqlCommand.JoinFragment join) { AddType(name, type); *************** *** 385,389 **** } ! internal void AddFrom(string name, JoinFragment join) { fromTypes.Add(name); --- 386,390 ---- } ! internal void AddFrom(string name, SqlCommand.JoinFragment join) { fromTypes.Add(name); *************** *** 393,397 **** internal void AddFromClass(string name, ILoadable classPersister) { ! JoinFragment ojf = CreateJoinFragment(false); ojf.AddCrossJoin( classPersister.TableName, name ); crossJoins.Add( name ); --- 394,398 ---- internal void AddFromClass(string name, ILoadable classPersister) { ! SqlCommand.JoinFragment ojf = CreateJoinFragment(false); ojf.AddCrossJoin( classPersister.TableName, name ); crossJoins.Add( name ); *************** *** 439,445 **** } ! internal void AddJoin(string name, JoinFragment newjoin) { ! JoinFragment oldjoin = (JoinFragment) joins[name]; if (oldjoin==null) { --- 440,446 ---- } ! internal void AddJoin(string name, SqlCommand.JoinFragment newjoin) { ! SqlCommand.JoinFragment oldjoin = (SqlCommand.JoinFragment) joins[name]; if (oldjoin==null) { *************** *** 448,453 **** else { oldjoin.AddCondition( newjoin.ToWhereFragmentString ); ! if ( oldjoin.ToFromFragmentString.IndexOf( newjoin.ToFromFragmentString.Trim()) < 0 ) { throw new AssertionFailure("bug in query parser: " + queryString); --- 449,456 ---- else { + //TODO: HACKS with ToString() - fixed up oldjoin.AddCondition( newjoin.ToWhereFragmentString ); ! //TODO: HACKS with ToString() ! if ( oldjoin.ToFromFragmentString.ToString().IndexOf( newjoin.ToFromFragmentString.ToString().Trim()) < 0 ) { throw new AssertionFailure("bug in query parser: " + queryString); *************** *** 636,640 **** string name = (string) returnTypes[k]; string suffix = size==1 ? String.Empty : k.ToString() + StringHelper.Underscore; ! sql.AddSelectFragmentString( persisters[k].IdentifierSelectFragment(name, suffix) ); } } --- 639,644 ---- string name = (string) returnTypes[k]; string suffix = size==1 ? String.Empty : k.ToString() + StringHelper.Underscore; ! //TODO: HACK with ToString() ! sql.AddSelectFragmentString( persisters[k].IdentifierSelectFragment(name, suffix).ToString() ); } } *************** *** 664,668 **** string suffix = (size==1) ? String.Empty : k.ToString() + StringHelper.Underscore; string name = (string) returnTypes[k]; ! sql.AddSelectFragmentString( persisters[k].PropertySelectFragment(name, suffix) ); } } --- 668,673 ---- string suffix = (size==1) ? String.Empty : k.ToString() + StringHelper.Underscore; string name = (string) returnTypes[k]; ! //TODO: HACK with ToString() ! sql.AddSelectFragmentString( persisters[k].PropertySelectFragment(name, suffix).ToString() ); } } *************** *** 742,746 **** } ! private JoinFragment MergeJoins(JoinFragment ojf) { //classes --- 747,751 ---- } ! private SqlCommand.JoinFragment MergeJoins(SqlCommand.JoinFragment ojf) { //classes *************** *** 750,758 **** bool includeSubclasses = returnTypes.Contains(name) && !IsShallowQuery; ! JoinFragment join = (JoinFragment) joins[name]; if (join!=null) { bool isCrossJoin = crossJoins.Contains(name); ojf.AddFragment(join); ojf.AddJoins( p.FromJoinFragment(name, isCrossJoin, includeSubclasses), --- 755,764 ---- bool includeSubclasses = returnTypes.Contains(name) && !IsShallowQuery; ! SqlCommand.JoinFragment join = (SqlCommand.JoinFragment) joins[name]; if (join!=null) { bool isCrossJoin = crossJoins.Contains(name); ojf.AddFragment(join); + ojf.AddJoins( p.FromJoinFragment(name, isCrossJoin, includeSubclasses), *************** *** 764,768 **** foreach(string name in collections.Keys) { ! JoinFragment collJoin = (JoinFragment) joins[name]; if (collJoin!=null) ojf.AddFragment(collJoin); } --- 770,774 ---- foreach(string name in collections.Keys) { ! SqlCommand.JoinFragment collJoin = (SqlCommand.JoinFragment) joins[name]; if (collJoin!=null) ojf.AddFragment(collJoin); } *************** *** 849,853 **** string collectionName; ! JoinFragment join = CreateJoinFragment(false); collectionName = persister.IsOneToMany ? elementName : CreateNameForCollection(collectionRole); join.AddCrossJoin( persister.QualifiedTableName, collectionName); --- 855,859 ---- string collectionName; ! SqlCommand.JoinFragment join = CreateJoinFragment(false); collectionName = persister.IsOneToMany ? elementName : CreateNameForCollection(collectionRole); join.AddCrossJoin( persister.QualifiedTableName, collectionName); *************** *** 865,869 **** StringHelper.Prefix(eltColumnNames, collectionName + StringHelper.Dot), idColumnNames, ! JoinType.InnerJoin); } join.AddCondition( collectionName, keyColumnNames, " = ?"); --- 871,875 ---- StringHelper.Prefix(eltColumnNames, collectionName + StringHelper.Dot), idColumnNames, ! SqlCommand.JoinType.InnerJoin); } join.AddCondition( collectionName, keyColumnNames, " = ?"); *************** *** 880,889 **** } ! internal JoinFragment GetPathJoin(string path) { ! return (JoinFragment) pathJoins[path]; } ! internal void AddPathAliasAndJoin(string path, string alias, JoinFragment join) { pathAliases.Add(path, alias); --- 886,895 ---- } ! internal SqlCommand.JoinFragment GetPathJoin(string path) { ! return (SqlCommand.JoinFragment) pathJoins[path]; } ! internal void AddPathAliasAndJoin(string path, string alias, SqlCommand.JoinFragment join) { pathAliases.Add(path, alias); *************** *** 1146,1152 **** } ! internal QueryJoinFragment CreateJoinFragment(bool useThetaStyleInnerJoins) { ! return new QueryJoinFragment( factory.Dialect, useThetaStyleInnerJoins ); } --- 1152,1158 ---- } ! internal SqlCommand.QueryJoinFragment CreateJoinFragment(bool useThetaStyleInnerJoins) { ! return new SqlCommand.QueryJoinFragment( factory.Dialect, useThetaStyleInnerJoins ); } Index: PathExpressionParser.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql/PathExpressionParser.cs,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** PathExpressionParser.cs 30 Apr 2004 08:57:59 -0000 1.13 --- PathExpressionParser.cs 16 Aug 2004 05:28:22 -0000 1.14 *************** *** 8,11 **** --- 8,12 ---- using NHibernate.Util; using NHibernate.Sql; + using NHibernate.SqlCommand; namespace NHibernate.Hql *************** *** 53,60 **** private bool ignoreInitialJoin; private bool continuation; ! private JoinType joinType = JoinType.InnerJoin; //default mode private bool useThetaStyleJoin = true; ! public JoinType JoinType { get --- 54,61 ---- private bool ignoreInitialJoin; private bool continuation; ! private SqlCommand.JoinType joinType = SqlCommand.JoinType.InnerJoin; //default mode private bool useThetaStyleJoin = true; ! public SqlCommand.JoinType JoinType { get *************** *** 114,118 **** { JoinFragment ojf = q.GetPathJoin(path); ! join.AddCondition( ojf.ToWhereFragmentString ); //after reset! // we don't need to worry about any condition in the ON clause // here (toFromFragmentString), since anything in the ON condition --- 115,120 ---- { JoinFragment ojf = q.GetPathJoin(path); ! //TODO: HACK with ToString() ! join.AddCondition( ojf.ToWhereFragmentString); //after reset! // we don't need to worry about any condition in the ON clause // here (toFromFragmentString), since anything in the ON condition *************** *** 347,350 **** --- 349,353 ---- { IQueryable persister = q.GetPersister( ( (EntityType) memberPersister.ElementType ).PersistentClass ); + //TODO: HACK with ToString() - cleaned up ojf.AddJoins( persister.FromJoinFragment(collectionName, true, false), *************** *** 393,397 **** public string Alias; public string[] ElementColumns; ! public JoinFragment Join; public StringBuilder IndexValue = new StringBuilder(); } --- 396,400 ---- public string Alias; public string[] ElementColumns; ! public SqlCommand.JoinFragment Join; public StringBuilder IndexValue = new StringBuilder(); } *************** *** 432,436 **** } ! public JoinFragment WhereJoin { get --- 435,439 ---- } ! public SqlCommand.JoinFragment WhereJoin { get *************** *** 479,485 **** .Append(' ') .Append(collectionName)*/ ! .Append(join.ToFromFragmentString.Substring(2)) //remove initial ", " .Append(" WHERE ") ! .Append(join.ToWhereFragmentString.Substring(5)) .ToString(); } --- 482,489 ---- .Append(' ') .Append(collectionName)*/ ! //TODO: HACK with ToString() ! .Append(join.ToFromFragmentString.ToString().Substring(2)) //remove initial ", " .Append(" WHERE ") ! .Append(join.ToWhereFragmentString.ToString().Substring(5)) //TODO: HACK with ToString() .ToString(); } Index: FromParser.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Hql/FromParser.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** FromParser.cs 13 Jul 2004 03:05:36 -0000 1.9 --- FromParser.cs 16 Aug 2004 05:28:22 -0000 1.10 *************** *** 1,8 **** using System; using System.Collections; using NHibernate; using NHibernate.Sql; using NHibernate.Util; - using NHibernate.Persister; namespace NHibernate.Hql { --- 1,10 ---- using System; using System.Collections; + using NHibernate; + using NHibernate.Persister; using NHibernate.Sql; + using NHibernate.SqlCommand; using NHibernate.Util; namespace NHibernate.Hql { *************** *** 24,36 **** private bool afterJoinType; private bool afterFetch; ! private JoinType joinType = JoinType.None; private static IDictionary joinTypes = new Hashtable(); static FromParser() { ! joinTypes.Add( "left", JoinType.LeftOuterJoin ); ! joinTypes.Add( "right", JoinType.RightOuterJoin ); ! joinTypes.Add( "full", JoinType.FullJoin ); ! joinTypes.Add( "inner", JoinType.InnerJoin ); } --- 26,38 ---- private bool afterJoinType; private bool afterFetch; ! private SqlCommand.JoinType joinType = SqlCommand.JoinType.None; private static IDictionary joinTypes = new Hashtable(); static FromParser() { ! joinTypes.Add( "left", SqlCommand.JoinType.LeftOuterJoin ); ! joinTypes.Add( "right", SqlCommand.JoinType.RightOuterJoin ); ! joinTypes.Add( "full", SqlCommand.JoinType.FullJoin ); ! joinTypes.Add( "inner", SqlCommand.JoinType.InnerJoin ); } |
From: Michael D. <mik...@us...> - 2004-08-16 05:27:16
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Mapping In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv590/Mapping Modified Files: Column.cs PersistentClass.cs Log Message: Tidied up using section. Index: PersistentClass.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Mapping/PersistentClass.cs,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** PersistentClass.cs 15 Apr 2004 11:51:42 -0000 1.12 --- PersistentClass.cs 16 Aug 2004 05:27:07 -0000 1.13 *************** *** 3,7 **** using NHibernate.Cache; ! using NHibernate.Sql; using NHibernate.Util; --- 3,7 ---- using NHibernate.Cache; ! using NHibernate.SqlCommand; using NHibernate.Util; Index: Column.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Mapping/Column.cs,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Column.cs 19 Jul 2004 03:24:03 -0000 1.12 --- Column.cs 16 Aug 2004 05:27:07 -0000 1.13 *************** *** 5,9 **** using NHibernate.Type; using NHibernate.Util; ! using NHibernate.Sql; using NHibernate.SqlTypes; --- 5,9 ---- using NHibernate.Type; using NHibernate.Util; ! using NHibernate.SqlCommand; using NHibernate.SqlTypes; |
From: Michael D. <mik...@us...> - 2004-08-16 05:26:50
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv510/Loader Modified Files: AbstractEntityLoader.cs CollectionLoader.cs Loader.cs OneToManyLoader.cs OuterJoinLoader.cs Log Message: Began refactoring to SqlString. Index: CollectionLoader.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/CollectionLoader.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** CollectionLoader.cs 25 Jun 2004 20:33:02 -0000 1.7 --- CollectionLoader.cs 16 Aug 2004 05:26:39 -0000 1.8 *************** *** 56,78 **** this.sqlString = selectBuilder.ToSqlString(); - - // Select select = new Select() - // .SetSelectClause( - // persister.SelectClauseFragment(alias) + - // (joins==0 ? String.Empty : ", " + SelectString(associations) ) - // ) - // .SetFromClause ( persister.QualifiedTableName, alias ) - // .SetWhereClause( - // new ConditionalFragment().SetTableAlias(alias) - // .SetCondition( persister.KeyColumnNames, StringHelper.SqlParameter ) - // .ToFragmentString() + - // whereString - // ) - // .SetOuterJoins( - // ojf.ToFromFragmentString, - // ojf.ToWhereFragmentString - // ); - // if (persister.HasOrdering) select.SetOrderByClause( persister.GetSQLOrderByString(alias)); - // sql = select.ToStatementString(); classPersisters = new ILoadable[joins]; --- 56,59 ---- Index: AbstractEntityLoader.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/AbstractEntityLoader.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** AbstractEntityLoader.cs 25 Jun 2004 20:33:02 -0000 1.7 --- AbstractEntityLoader.cs 16 Aug 2004 05:26:39 -0000 1.8 *************** *** 5,9 **** using NHibernate.Engine; using NHibernate.Persister; - using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Util; --- 5,8 ---- *************** *** 42,55 **** SelectString(persister, alias, suffixes[joins] ) ) .SetFromClause ( ! persister.FromTableFragment(alias) + ! persister.FromJoinFragment(alias, true, true) ) .SetOuterJoins ( ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString + ! ( UseQueryWhereFragment ? ( (IQueryable) persister).QueryWhereFragment(alias, true, true) : --- 41,58 ---- SelectString(persister, alias, suffixes[joins] ) ) + //TODO: HACK with ToString() required because of SetFromClause .SetFromClause ( ! persister.FromTableFragment(alias).Append( ! persister.FromJoinFragment(alias, true, true) ! ).ToString() ) .SetOuterJoins ( + //TODO: ToWhereFragmentString.ToString() is a HACK - removed + ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString.Append( ! //TODO: HACK with ToString() - removed UseQueryWhereFragment ? ( (IQueryable) persister).QueryWhereFragment(alias, true, true) : *************** *** 87,100 **** ); sqlBuilder.SetFromClause( ! persister.FromTableFragment(alias) + ! persister.FromJoinFragment(alias, true, true) ! ); sqlBuilder.AddWhereClause(condition); sqlBuilder.SetOuterJoins( ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString + ( UseQueryWhereFragment ? --- 90,106 ---- ); + //TODO: HACK with ToString() because of SetFromClause sqlBuilder.SetFromClause( ! persister.FromTableFragment(alias).Append( ! persister.FromJoinFragment(alias, true, true) ! ).ToString() ! ); sqlBuilder.AddWhereClause(condition); + //TODO: HACK with ToString() sqlBuilder.SetOuterJoins( ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString.Append ( UseQueryWhereFragment ? Index: OuterJoinLoader.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/OuterJoinLoader.cs,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** OuterJoinLoader.cs 25 Jun 2004 20:33:02 -0000 1.12 --- OuterJoinLoader.cs 16 Aug 2004 05:26:39 -0000 1.13 *************** *** 8,12 **** using NHibernate.Engine; using NHibernate.Persister; - using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Type; --- 8,11 ---- *************** *** 425,430 **** private static void AppendSelectString(StringBuilder buf, ILoadable persister, string alias, string suffix) { ! buf.Append( persister.IdentifierSelectFragment(alias,suffix) ) ! .Append( persister.PropertySelectFragment(alias, suffix) ); } --- 424,430 ---- private static void AppendSelectString(StringBuilder buf, ILoadable persister, string alias, string suffix) { ! //TODO: HACKs with ToString() ! buf.Append( persister.IdentifierSelectFragment(alias,suffix).ToString() ) ! .Append( persister.PropertySelectFragment(alias, suffix).ToString() ); } *************** *** 464,467 **** --- 464,468 ---- JoinType.LeftOuterJoin ); + outerjoin.AddJoins( oj.Subpersister.FromJoinFragment(oj.Subalias, false, true), Index: Loader.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/Loader.cs,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** Loader.cs 14 Aug 2004 14:54:53 -0000 1.25 --- Loader.cs 16 Aug 2004 05:26:39 -0000 1.26 *************** *** 1,14 **** using System; - using System.Data; using System.Collections; using NHibernate.Cfg; using NHibernate.Collection; using NHibernate.Engine; - using NHibernate.Util; using NHibernate.Persister; using NHibernate.Transaction; using NHibernate.Type; ! using NHibernate.Sql; ! using NHibernate.SqlCommand; namespace NHibernate.Loader --- 1,14 ---- using System; using System.Collections; + using System.Data; + using NHibernate.Cfg; using NHibernate.Collection; using NHibernate.Engine; using NHibernate.Persister; + using NHibernate.SqlCommand; using NHibernate.Transaction; using NHibernate.Type; ! using NHibernate.Util; namespace NHibernate.Loader Index: OneToManyLoader.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/OneToManyLoader.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OneToManyLoader.cs 25 Jun 2004 20:33:02 -0000 1.7 --- OneToManyLoader.cs 16 Aug 2004 05:26:39 -0000 1.8 *************** *** 6,10 **** using NHibernate.Engine; using NHibernate.Persister; - using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Type; --- 6,9 ---- *************** *** 63,79 **** selectBuilder.SetFromClause( ! persister.FromTableFragment(alias) + ! persister.FromJoinFragment(alias, true, true) ! ); selectBuilder.SetWhereClause(alias, collectionPersister.KeyColumnNames, collectionPersister.KeyType); if(collectionPersister.HasWhere) selectBuilder.AddWhereClause(whereSqlString); selectBuilder.SetOuterJoins( ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString + ! persister.WhereJoinFragment(alias, true, true) ! ); if(collectionPersister.HasOrdering) selectBuilder.SetOrderByClause( collectionPersister.GetSQLOrderByString(alias) ); --- 62,82 ---- + //TODO: HACK with ToString() because of SetFromClause selectBuilder.SetFromClause( ! persister.FromTableFragment(alias).Append( ! persister.FromJoinFragment(alias, true, true) ! ).ToString() ! ); selectBuilder.SetWhereClause(alias, collectionPersister.KeyColumnNames, collectionPersister.KeyType); if(collectionPersister.HasWhere) selectBuilder.AddWhereClause(whereSqlString); + //TODO: ToWhereFragmentString.ToString() is a HACK - removed selectBuilder.SetOuterJoins( ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString.Append( ! persister.WhereJoinFragment(alias, true, true) ! ) ! ); if(collectionPersister.HasOrdering) selectBuilder.SetOrderByClause( collectionPersister.GetSQLOrderByString(alias) ); |
From: Michael D. <mik...@us...> - 2004-08-16 05:24:06
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Collection In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32626/Collection Modified Files: CollectionPersister.cs Log Message: Tidied up using section and references to classes inside SqlCommand namespace. Index: CollectionPersister.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Collection/CollectionPersister.cs,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** CollectionPersister.cs 9 Aug 2004 18:43:01 -0000 1.24 --- CollectionPersister.cs 16 Aug 2004 05:23:44 -0000 1.25 *************** *** 11,15 **** using NHibernate.Mapping; using NHibernate.Metadata; - using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Type; --- 11,14 ---- *************** *** 491,495 **** public string SelectClauseFragment(string alias) { ! SqlCommand.SelectFragment frag = new SqlCommand.SelectFragment(factory.Dialect) .SetSuffix(String.Empty) .AddColumns(alias, elementColumnNames, elementColumnAliases); --- 490,494 ---- public string SelectClauseFragment(string alias) { ! SelectFragment frag = new SelectFragment(factory.Dialect) .SetSuffix(String.Empty) .AddColumns(alias, elementColumnNames, elementColumnAliases); |
From: Michael D. <mik...@us...> - 2004-08-16 05:23:05
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Persister In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32513/Persister Modified Files: AbstractEntityPersister.cs EntityPersister.cs ILoadable.cs IQueryable.cs NormalizedEntityPersister.cs Log Message: Began refactoring to SqlString. Index: NormalizedEntityPersister.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Persister/NormalizedEntityPersister.cs,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** NormalizedEntityPersister.cs 1 Aug 2004 21:58:02 -0000 1.23 --- NormalizedEntityPersister.cs 16 Aug 2004 05:22:56 -0000 1.24 *************** *** 9,13 **** using NHibernate.Loader; using NHibernate.Mapping; ! using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Type; --- 9,13 ---- using NHibernate.Loader; using NHibernate.Mapping; ! //using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Type; *************** *** 1373,1381 **** } ! public override string FromTableFragment(string alias) { ! return subclassTableNameClosure[0] + ' ' + alias; } public override string TableName { --- 1373,1382 ---- } ! public override SqlString FromTableFragment(string alias) { ! return new SqlString( subclassTableNameClosure[0] + ' ' + alias ); } + public override string TableName { *************** *** 1466,1473 **** } ! public override string PropertySelectFragment(string alias, string suffix) { string[] cols = subclassColumnClosure; ! SqlCommand.SelectFragment frag = new SqlCommand.SelectFragment(factory.Dialect) .SetSuffix(suffix); --- 1467,1474 ---- } ! public override SqlString PropertySelectFragment(string alias, string suffix) { string[] cols = subclassColumnClosure; ! SelectFragment frag = new SelectFragment(factory.Dialect) .SetSuffix(suffix); *************** *** 1483,1506 **** if (HasSubclasses) { ! return ", " + ! //TODO: this will need to be changed to return a SqlString but for now the SqlString ! // is being converted to a string for existing interfaces to work. DiscriminatorFragment(alias) ! .SetReturnColumnName( DiscriminatorColumnName, suffix ) ! .ToSqlStringFragment().ToString() ! + ! frag.ToSqlStringFragment().ToString(); ! // TODO: fix this once the interface has changed from a string to SqlString } else { ! // TODO: fix this once the interface has changed from a string to SqlString ! return frag.ToSqlStringFragment().ToString(); } ! } ! private SqlCommand.CaseFragment DiscriminatorFragment(string alias) { ! SqlCommand.CaseFragment cases = dialect.CreateCaseFragment(); for (int i=0; i<discriminatorValues.Length; i++) --- 1484,1511 ---- if (HasSubclasses) { ! SqlStringBuilder builder = new SqlStringBuilder(3); ! ! builder.Add(", "); ! builder.Add( DiscriminatorFragment(alias) ! .SetReturnColumnName( DiscriminatorColumnName, suffix ) ! .ToSqlStringFragment() ! ); ! ! builder.Add( frag.ToSqlStringFragment() ); ! ! return builder.ToSqlString(); ! } else { ! return frag.ToSqlStringFragment(); } ! } ! ! private CaseFragment DiscriminatorFragment(string alias) { ! CaseFragment cases = dialect.CreateCaseFragment(); for (int i=0; i<discriminatorValues.Length; i++) *************** *** 1521,1539 **** } ! public override string FromJoinFragment(string alias, bool innerJoin, bool includeSubclasses) { return Outerjoin(alias, innerJoin, includeSubclasses).ToFromFragmentString; } ! public override string WhereJoinFragment(string alias, bool innerJoin, bool includeSubclasses) { return Outerjoin(alias, innerJoin, includeSubclasses).ToWhereFragmentString; } ! public override string QueryWhereFragment(string alias, bool innerJoin, bool includeSubclasses) { ! string result = WhereJoinFragment(alias, innerJoin, includeSubclasses); ! if( HasWhere ) result += " and " + GetSQLWhereString(alias); return result; } --- 1526,1550 ---- } ! public override SqlString FromJoinFragment(string alias, bool innerJoin, bool includeSubclasses) { return Outerjoin(alias, innerJoin, includeSubclasses).ToFromFragmentString; } ! public override SqlString WhereJoinFragment(string alias, bool innerJoin, bool includeSubclasses) { return Outerjoin(alias, innerJoin, includeSubclasses).ToWhereFragmentString; } ! public override SqlString QueryWhereFragment(string alias, bool innerJoin, bool includeSubclasses) { ! SqlString result = WhereJoinFragment(alias, innerJoin, includeSubclasses); ! ! if( HasWhere) ! { ! result = result.Append( " and " + GetSQLWhereString(alias) ); ! } ! return result; + } Index: AbstractEntityPersister.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Persister/AbstractEntityPersister.cs,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** AbstractEntityPersister.cs 9 Aug 2004 03:15:14 -0000 1.19 --- AbstractEntityPersister.cs 16 Aug 2004 05:22:56 -0000 1.20 *************** *** 5,19 **** using NHibernate.Cache; using NHibernate.Cfg; using NHibernate.Engine; ! using NHibernate.Util; using NHibernate.Id; using NHibernate.Mapping; using NHibernate.Metadata; using NHibernate.Proxy; ! using NHibernate.Hql; ! using NHibernate.Dialect; ! using NHibernate.Sql; using NHibernate.Type; ! using NHibernate.Loader; namespace NHibernate.Persister --- 5,19 ---- using NHibernate.Cache; using NHibernate.Cfg; + using NHibernate.Dialect; using NHibernate.Engine; ! using NHibernate.Hql; using NHibernate.Id; + using NHibernate.Loader; using NHibernate.Mapping; using NHibernate.Metadata; using NHibernate.Proxy; ! using NHibernate.SqlCommand; using NHibernate.Type; ! using NHibernate.Util; namespace NHibernate.Persister *************** *** 109,122 **** } ! public virtual string IdentifierSelectFragment(string name, string suffix) { ! //TODO: fix this once the interface is changed from a string to SqlString ! // this works now because there are no parameters in the select fragment string ! return new SqlCommand.SelectFragment(dialect) .SetSuffix(suffix) .AddColumns( name, IdentifierColumnNames ) ! .ToSqlStringFragment(false) ! .ToString(); ! //.Substring(2); //strip leading ", " - commented out because of the "false" parameter now does that } --- 109,118 ---- } ! public virtual SqlString IdentifierSelectFragment(string name, string suffix) { ! return new SelectFragment(dialect) .SetSuffix(suffix) .AddColumns( name, IdentifierColumnNames ) ! .ToSqlStringFragment(false); } *************** *** 441,445 **** sqlWhereStringTemplate = sqlWhereString==null ? null : ! SqlCommand.Template.RenderWhereStringTemplate(sqlWhereString, dialect); polymorphic = model.IsPolymorphic; --- 437,441 ---- sqlWhereStringTemplate = sqlWhereString==null ? null : ! Template.RenderWhereStringTemplate(sqlWhereString, dialect); polymorphic = model.IsPolymorphic; *************** *** 754,758 **** protected string GetSQLWhereString(string alias) { ! return StringHelper.Replace(sqlWhereStringTemplate, SqlCommand.Template.PlaceHolder, alias); } --- 750,754 ---- protected string GetSQLWhereString(string alias) { ! return StringHelper.Replace(sqlWhereStringTemplate, Template.PlaceHolder, alias); } *************** *** 783,787 **** } ! public abstract string QueryWhereFragment(string alias, bool innerJoin, bool includeSublcasses); public abstract string DiscriminatorSQLString { get; } public abstract void Delete(object id, object version, object obj, ISessionImplementor session); --- 779,783 ---- } ! public abstract SqlString QueryWhereFragment(string alias, bool innerJoin, bool includeSublcasses); public abstract string DiscriminatorSQLString { get; } public abstract void Delete(object id, object version, object obj, ISessionImplementor session); *************** *** 797,810 **** public abstract IDiscriminatorType DiscriminatorType { get; } public abstract OuterJoinLoaderType EnableJoinedFetch(int i); ! public abstract string FromJoinFragment(string alias, bool innerJoin, bool includeSubclasses); ! public abstract string FromTableFragment(string alias); public abstract string[] GetPropertyColumnNames(int i); public abstract System.Type GetSubclassForDiscriminatorValue(object value); public abstract IType GetSubclassPropertyType(int i); public abstract bool IsDefinedOnSubclass(int i); ! public abstract string PropertySelectFragment(string alias, string suffix); public abstract string TableName { get; } public abstract string[] ToColumns(string name, int i); ! public abstract string WhereJoinFragment(string alias, bool innerJoin, bool includeSubclasses); public abstract string DiscriminatorColumnName { get; } public abstract string[] GetSubclassPropertyColumnNames(int i); --- 793,806 ---- public abstract IDiscriminatorType DiscriminatorType { get; } public abstract OuterJoinLoaderType EnableJoinedFetch(int i); ! public abstract SqlString FromJoinFragment(string alias, bool innerJoin, bool includeSubclasses); ! public abstract SqlString FromTableFragment(string alias); public abstract string[] GetPropertyColumnNames(int i); public abstract System.Type GetSubclassForDiscriminatorValue(object value); public abstract IType GetSubclassPropertyType(int i); public abstract bool IsDefinedOnSubclass(int i); ! public abstract SqlString PropertySelectFragment(string alias, string suffix); public abstract string TableName { get; } public abstract string[] ToColumns(string name, int i); ! public abstract SqlString WhereJoinFragment(string alias, bool innerJoin, bool includeSubclasses); public abstract string DiscriminatorColumnName { get; } public abstract string[] GetSubclassPropertyColumnNames(int i); Index: EntityPersister.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Persister/EntityPersister.cs,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** EntityPersister.cs 28 Jul 2004 03:56:49 -0000 1.21 --- EntityPersister.cs 16 Aug 2004 05:22:56 -0000 1.22 *************** *** 4,16 **** using System.Collections; ! using NHibernate.Util; using NHibernate.Loader; using NHibernate.Mapping; ! using NHibernate.Hql; ! using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Type; ! using NHibernate.Engine; ! using NHibernate.Id; namespace NHibernate.Persister --- 4,16 ---- using System.Collections; ! using NHibernate.Engine; ! using NHibernate.Hql; ! using NHibernate.Id; using NHibernate.Loader; using NHibernate.Mapping; ! //using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.Type; ! using NHibernate.Util; namespace NHibernate.Persister *************** *** 1071,1080 **** } ! public override string FromTableFragment(string name) { ! return TableName + ' ' + name; } ! public override string QueryWhereFragment(string name, bool innerJoin, bool includeSubclasses) { if (innerJoin && (forceDiscriminator || IsInherited )) --- 1071,1080 ---- } ! public override SqlString FromTableFragment(string alias) { ! return new SqlString( TableName + ' ' + alias ); } ! public override SqlString QueryWhereFragment(string name, bool innerJoin, bool includeSubclasses) { if (innerJoin && (forceDiscriminator || IsInherited )) *************** *** 1089,1101 **** ); } ! StringBuilder builder = new StringBuilder(" and " + frag.ToFragmentString()); if(HasWhere) { ! builder.Append(" and "); ! builder.Append( GetSQLWhereString(name) ); } ! return builder.ToString(); } else --- 1089,1102 ---- ); } ! ! SqlStringBuilder builder = new SqlStringBuilder(); ! builder.Add( " and " + frag.ToFragmentString() ); if(HasWhere) { ! builder.Add( " and " + GetSQLWhereString(name) ); } ! return builder.ToSqlString(); } else *************** *** 1103,1111 **** if(HasWhere) { ! return " and " + GetSQLWhereString(name); } else { ! return String.Empty; } --- 1104,1112 ---- if(HasWhere) { ! return new SqlString( " and " + GetSQLWhereString(name) ); } else { ! return new SqlString(String.Empty); } *************** *** 1151,1178 **** } ! public override string PropertySelectFragment(string name, string suffix) { ! SqlCommand.SelectFragment frag = new SqlCommand.SelectFragment(factory.Dialect) ! .SetSuffix(suffix); ! if ( HasSubclasses ) frag.AddColumn( name, DiscriminatorColumnName ); ! // TODO: fix this once the interface is changed from a string to SqlString ! // this works now because there are no parameters in the select string ! return frag.AddColumns(name, subclassColumnClosure, subclassColumnAliasClosure) ! .AddFormulas(name, subclassFormulaTemplateClosure, subclassFormulaAliasClosure) ! .ToSqlStringFragment().ToString(); } ! public override string FromJoinFragment(string alias, bool innerJoin, bool includeSubclasses) { ! return String.Empty; } ! public override string WhereJoinFragment(string alias, bool innerJoin, bool includeSublasses) { ! return String.Empty; } } } --- 1152,1182 ---- } ! public override SqlString PropertySelectFragment(string alias, string suffix) { ! SelectFragment frag = new SelectFragment(factory.Dialect); ! frag.SetSuffix(suffix); ! if ( HasSubclasses ) ! { ! frag.AddColumn( alias, DiscriminatorColumnName ); ! } ! ! return frag.AddColumns(alias, subclassColumnClosure, subclassColumnAliasClosure) ! .AddFormulas(alias, subclassFormulaTemplateClosure, subclassFormulaAliasClosure) ! .ToSqlStringFragment(); } ! public override SqlString FromJoinFragment(string alias, bool innerJoin, bool includeSubclasses) { ! return new SqlString( String.Empty ); } ! public override SqlString WhereJoinFragment(string alias, bool innerJoin, bool includeSubclasses) { ! return new SqlString( String.Empty ); } + } } Index: IQueryable.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Persister/IQueryable.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** IQueryable.cs 23 Jun 2004 21:08:20 -0000 1.7 --- IQueryable.cs 16 Aug 2004 05:22:56 -0000 1.8 *************** *** 1,3 **** --- 1,5 ---- using System; + + using NHibernate.SqlCommand; using NHibernate.Type; *************** *** 45,49 **** /// <param name="includeSublcasses"></param> /// <returns></returns> ! string QueryWhereFragment(string alias, bool innerJoin, bool includeSublcasses); /// <summary> --- 47,51 ---- /// <param name="includeSublcasses"></param> /// <returns></returns> ! SqlString QueryWhereFragment(string alias, bool innerJoin, bool includeSublcasses); /// <summary> Index: ILoadable.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Persister/ILoadable.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ILoadable.cs 23 Jun 2004 21:08:20 -0000 1.6 --- ILoadable.cs 16 Aug 2004 05:22:56 -0000 1.7 *************** *** 1,4 **** --- 1,6 ---- using System; + using NHibernate.Loader; + using NHibernate.SqlCommand; using NHibernate.Type; *************** *** 116,120 **** /// <param name="suffix"></param> /// <returns></returns> ! string IdentifierSelectFragment(string name, string suffix); /// <summary> --- 118,122 ---- /// <param name="suffix"></param> /// <returns></returns> ! SqlString IdentifierSelectFragment(string name, string suffix); /// <summary> *************** *** 125,129 **** /// <param name="suffix"></param> /// <returns></returns> ! string PropertySelectFragment(string alias, string suffix); /// <summary> --- 127,131 ---- /// <param name="suffix"></param> /// <returns></returns> ! SqlString PropertySelectFragment(string alias, string suffix); /// <summary> *************** *** 132,137 **** /// <param name="alias"></param> /// <returns></returns> ! string FromTableFragment(string alias); ! /// <summary> /// Get the where clause part of any joins (optional operation) --- 134,139 ---- /// <param name="alias"></param> /// <returns></returns> ! SqlString FromTableFragment(string alias); ! /// <summary> /// Get the where clause part of any joins (optional operation) *************** *** 141,145 **** /// <param name="includeSubclasses"></param> /// <returns></returns> ! string WhereJoinFragment(string alias, bool innerJoin, bool includeSubclasses); /// <summary> --- 143,147 ---- /// <param name="includeSubclasses"></param> /// <returns></returns> ! SqlString WhereJoinFragment(string alias, bool innerJoin, bool includeSubclasses); /// <summary> *************** *** 150,154 **** /// <param name="includeSubclasses"></param> /// <returns></returns> ! string FromJoinFragment(string alias, bool innerJoin, bool includeSubclasses); } } --- 152,157 ---- /// <param name="includeSubclasses"></param> /// <returns></returns> ! SqlString FromJoinFragment(string alias, bool innerJoin, bool includeSubclasses); ! } } |
From: Michael D. <mik...@us...> - 2004-08-16 05:21:54
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32384/Impl Modified Files: QueryImpl.cs Log Message: Tidied up using section. Index: QueryImpl.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl/QueryImpl.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** QueryImpl.cs 16 Jul 2004 03:27:03 -0000 1.10 --- QueryImpl.cs 16 Aug 2004 05:21:44 -0000 1.11 *************** *** 1,10 **** using System; - using System.Text; using System.Collections; using NHibernate.Engine; using NHibernate.Type; using NHibernate.Util; - using NHibernate.Proxy; namespace NHibernate.Impl { --- 1,10 ---- using System; using System.Collections; + using System.Text; using NHibernate.Engine; + using NHibernate.Proxy; using NHibernate.Type; using NHibernate.Util; namespace NHibernate.Impl { |
From: Michael D. <mik...@us...> - 2004-08-16 05:21:21
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Driver In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32315/Driver Modified Files: DriverBase.cs IDriver.cs SqlClientDriver.cs Log Message: Tidied up references to SqlCommand.* to not fully specify SqlCommand since all uses of Sql namespace have been removed from Dialect & Driver. Modified MsSql dialect because SqlString can now have a string appended instead of needing a full SqlString. Index: DriverBase.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Driver/DriverBase.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** DriverBase.cs 19 Jul 2004 03:20:25 -0000 1.6 --- DriverBase.cs 16 Aug 2004 05:21:12 -0000 1.7 *************** *** 1,5 **** --- 1,7 ---- using System; using System.Data; + using System.Text; + using NHibernate.SqlCommand; using NHibernate.Util; *************** *** 86,99 **** } ! public virtual IDbCommand GenerateCommand(Dialect.Dialect dialect, SqlCommand.SqlString sqlString) { int paramIndex = 0; IDbCommand cmd = this.CreateCommand(); ! System.Text.StringBuilder builder = new System.Text.StringBuilder(sqlString.SqlParts.Length * 15); for(int i = 0; i < sqlString.SqlParts.Length; i++) { object part = sqlString.SqlParts[i]; ! SqlCommand.Parameter parameter = part as SqlCommand.Parameter; if(parameter!=null) --- 88,101 ---- } ! public virtual IDbCommand GenerateCommand(Dialect.Dialect dialect, SqlString sqlString) { int paramIndex = 0; IDbCommand cmd = this.CreateCommand(); ! StringBuilder builder = new StringBuilder(sqlString.SqlParts.Length * 15); for(int i = 0; i < sqlString.SqlParts.Length; i++) { object part = sqlString.SqlParts[i]; ! Parameter parameter = part as Parameter; if(parameter!=null) *************** *** 141,145 **** /// those values are not set, only the DbType and ParameterName are set. /// </remarks> ! protected virtual IDbDataParameter GenerateParameter(IDbCommand command, string name, SqlCommand.Parameter parameter, Dialect.Dialect dialect) { IDbDataParameter dbParam = command.CreateParameter(); --- 143,147 ---- /// those values are not set, only the DbType and ParameterName are set. /// </remarks> ! protected virtual IDbDataParameter GenerateParameter(IDbCommand command, string name, Parameter parameter, Dialect.Dialect dialect) { IDbDataParameter dbParam = command.CreateParameter(); Index: SqlClientDriver.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SqlClientDriver.cs 19 Jul 2004 03:20:25 -0000 1.4 --- SqlClientDriver.cs 16 Aug 2004 05:21:12 -0000 1.5 *************** *** 2,5 **** --- 2,7 ---- using System.Data; + using NHibernate.SqlCommand; + namespace NHibernate.Driver { *************** *** 76,80 **** /// to be set. /// </remarks> ! protected override IDbDataParameter GenerateParameter(IDbCommand command, string name, SqlCommand.Parameter parameter, Dialect.Dialect dialect) { IDbDataParameter dbParam = base.GenerateParameter(command, name, parameter, dialect); --- 78,82 ---- /// to be set. /// </remarks> ! protected override IDbDataParameter GenerateParameter(IDbCommand command, string name, Parameter parameter, Dialect.Dialect dialect) { IDbDataParameter dbParam = base.GenerateParameter(command, name, parameter, dialect); *************** *** 85,90 **** // if this parameter needs to have a value set for the Size or Precision/Scale besides the default // value of the Dialect then one of these will not be null ! SqlCommand.ParameterLength pl = null; ! SqlCommand.ParameterPrecisionScale pps = null; switch( parameter.SqlType.DbType ) --- 87,92 ---- // if this parameter needs to have a value set for the Size or Precision/Scale besides the default // value of the Dialect then one of these will not be null ! ParameterLength pl = null; ! ParameterPrecisionScale pps = null; switch( parameter.SqlType.DbType ) *************** *** 92,101 **** case DbType.AnsiString: case DbType.AnsiStringFixedLength: ! pl = parameter as SqlCommand.ParameterLength; dbParam.Size = dialect.MaxAnsiStringSize; break; case DbType.Binary: ! pl = parameter as SqlCommand.ParameterLength; dbParam.Size = dialect.MaxBinarySize; break; --- 94,103 ---- case DbType.AnsiString: case DbType.AnsiStringFixedLength: ! pl = parameter as ParameterLength; dbParam.Size = dialect.MaxAnsiStringSize; break; case DbType.Binary: ! pl = parameter as ParameterLength; dbParam.Size = dialect.MaxBinarySize; break; *************** *** 103,111 **** case DbType.String: case DbType.StringFixedLength: ! pl = parameter as SqlCommand.ParameterLength; dbParam.Size = dialect.MaxStringSize; break; case DbType.Decimal: ! pps = parameter as SqlCommand.ParameterPrecisionScale; //TODO: remove this hardcoding... dbParam.Precision = 19; --- 105,113 ---- case DbType.String: case DbType.StringFixedLength: ! pl = parameter as ParameterLength; dbParam.Size = dialect.MaxStringSize; break; case DbType.Decimal: ! pps = parameter as ParameterPrecisionScale; //TODO: remove this hardcoding... dbParam.Precision = 19; Index: IDriver.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Driver/IDriver.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** IDriver.cs 19 Jul 2004 03:20:25 -0000 1.5 --- IDriver.cs 16 Aug 2004 05:21:12 -0000 1.6 *************** *** 2,5 **** --- 2,7 ---- using System.Data; + using NHibernate.SqlCommand; + namespace NHibernate.Driver { *************** *** 178,182 **** /// <param name="sqlString">The SqlString that contains the sql and parameters.</param> /// <returns>An IDbCommand with the CommandText and Parameters fully set.</returns> ! IDbCommand GenerateCommand(Dialect.Dialect dialect, SqlCommand.SqlString sqlString); /// <summary> --- 180,184 ---- /// <param name="sqlString">The SqlString that contains the sql and parameters.</param> /// <returns>An IDbCommand with the CommandText and Parameters fully set.</returns> ! IDbCommand GenerateCommand(Dialect.Dialect dialect, SqlString sqlString); /// <summary> |
From: Michael D. <mik...@us...> - 2004-08-16 05:21:20
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32315/Dialect Modified Files: Dialect.cs MsSql2000Dialect.cs OracleDialect.cs Log Message: Tidied up references to SqlCommand.* to not fully specify SqlCommand since all uses of Sql namespace have been removed from Dialect & Driver. Modified MsSql dialect because SqlString can now have a string appended instead of needing a full SqlString. Index: Dialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/Dialect.cs,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** Dialect.cs 19 Jul 2004 03:24:02 -0000 1.34 --- Dialect.cs 16 Aug 2004 05:21:11 -0000 1.35 *************** *** 6,10 **** using NHibernate.Engine; using NHibernate.Hql; ! using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.SqlTypes; --- 6,10 ---- using NHibernate.Engine; using NHibernate.Hql; ! //using NHibernate.Sql; using NHibernate.SqlCommand; using NHibernate.SqlTypes; *************** *** 390,396 **** /// </summary> /// <returns></returns> ! public virtual SqlCommand.CaseFragment CreateCaseFragment() { ! return new SqlCommand.ANSICaseFragment(this); } --- 390,396 ---- /// </summary> /// <returns></returns> ! public virtual CaseFragment CreateCaseFragment() { ! return new ANSICaseFragment(this); } Index: OracleDialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/OracleDialect.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** OracleDialect.cs 18 May 2004 05:01:02 -0000 1.3 --- OracleDialect.cs 16 Aug 2004 05:21:12 -0000 1.4 *************** *** 1,5 **** using System; ! using NHibernate.Sql; using NHibernate.SqlCommand; --- 1,5 ---- using System; ! //using NHibernate.Sql; using NHibernate.SqlCommand; Index: MsSql2000Dialect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Dialect/MsSql2000Dialect.cs,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** MsSql2000Dialect.cs 19 Jul 2004 03:24:02 -0000 1.14 --- MsSql2000Dialect.cs 16 Aug 2004 05:21:12 -0000 1.15 *************** *** 94,98 **** public override SqlString AddIdentitySelectToInsert(SqlString insertSql) { ! return insertSql.Append( new SqlString("; SELECT SCOPE_IDENTITY()") ); } --- 94,98 ---- public override SqlString AddIdentitySelectToInsert(SqlString insertSql) { ! return insertSql.Append( "; SELECT SCOPE_IDENTITY()" ); } |
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 ---- |
From: Michael D. <mik...@us...> - 2004-08-16 05:19:00
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Sql In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31933/Sql Modified Files: QuerySelect.cs Removed Files: Alias.cs ANSIJoinFragment.cs InFragment.cs JoinFragment.cs OracleJoinFragment.cs OuterJoinFragment.cs QueryJoinFragment.cs Log Message: Began refactoring to SqlString. --- QueryJoinFragment.cs DELETED --- --- ANSIJoinFragment.cs DELETED --- Index: QuerySelect.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Sql/QuerySelect.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** QuerySelect.cs 1 Aug 2004 21:59:11 -0000 1.6 --- QuerySelect.cs 16 Aug 2004 05:18:52 -0000 1.7 *************** *** 13,17 **** public class QuerySelect { ! private JoinFragment joins; private StringBuilder select = new StringBuilder(); private StringBuilder where = new StringBuilder(); --- 13,17 ---- public class QuerySelect { ! private SqlCommand.JoinFragment joins; private StringBuilder select = new StringBuilder(); private StringBuilder where = new StringBuilder(); *************** *** 54,61 **** public QuerySelect(Dialect.Dialect dialect) { ! joins = new QueryJoinFragment(dialect, false); } ! public JoinFragment JoinFragment { get { return joins; } --- 54,61 ---- public QuerySelect(Dialect.Dialect dialect) { ! joins = new SqlCommand.QueryJoinFragment(dialect, false); } ! public SqlCommand.JoinFragment JoinFragment { get { return joins; } *************** *** 119,124 **** if (distinct) buf.Append("distinct "); ! ! string from = joins.ToFromFragmentString; if ( from.StartsWith(",") ) { --- 119,125 ---- if (distinct) buf.Append("distinct "); ! ! //TODO: HACK with ToString() ! string from = joins.ToFromFragmentString.ToString(); if ( from.StartsWith(",") ) { *************** *** 134,138 **** .Append( from ); ! string part1 = joins.ToWhereFragmentString.Trim(); string part2 = where.ToString().Trim(); bool hasPart1 = part1.Length > 0; --- 135,140 ---- .Append( from ); ! //TODO: HACK with ToString() ! string part1 = joins.ToWhereFragmentString.ToString().Trim(); string part2 = where.ToString().Trim(); bool hasPart1 = part1.Length > 0; --- OracleJoinFragment.cs DELETED --- --- JoinFragment.cs DELETED --- --- Alias.cs DELETED --- --- OuterJoinFragment.cs DELETED --- --- InFragment.cs DELETED --- |