From: Kevin W. <kev...@us...> - 2004-12-31 20:57:37
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26231 Modified Files: AbstractEntityLoader.cs CollectionLoader.cs CriteriaLoader.cs Log Message: fixing xml comments and letting ReSharper do reformatting Index: CollectionLoader.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/CollectionLoader.cs,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** CollectionLoader.cs 22 Nov 2004 03:53:07 -0000 1.11 --- CollectionLoader.cs 31 Dec 2004 20:57:25 -0000 1.12 *************** *** 1,6 **** using System; - using System.Text; using System.Collections; - using NHibernate.Collection; using NHibernate.Engine; --- 1,4 ---- *************** *** 10,28 **** using NHibernate.Util; ! namespace NHibernate.Loader { /// <summary> /// Loads a collection of values or a many-to-many association /// </summary> ! public class CollectionLoader : OuterJoinLoader, ICollectionInitializer { private CollectionPersister collectionPersister; private IType idType; ! ! public CollectionLoader(CollectionPersister persister, ISessionFactoryImplementor factory) : base(factory.Dialect) { idType = persister.KeyType; ! string alias = ToAlias( persister.QualifiedTableName, 0); //TODO: H2.0.3 the whereString is appended with the " and " - I don't think --- 8,31 ---- using NHibernate.Util; ! namespace NHibernate.Loader { /// <summary> /// Loads a collection of values or a many-to-many association /// </summary> ! public class CollectionLoader : OuterJoinLoader, ICollectionInitializer { private CollectionPersister collectionPersister; private IType idType; ! ! /// <summary> ! /// ! /// </summary> ! /// <param name="persister"></param> ! /// <param name="factory"></param> ! public CollectionLoader( CollectionPersister persister, ISessionFactoryImplementor factory ) : base( factory.Dialect ) { idType = persister.KeyType; ! string alias = ToAlias( persister.QualifiedTableName, 0 ); //TODO: H2.0.3 the whereString is appended with the " and " - I don't think *************** *** 30,80 **** // probably already takes this into account. SqlString whereSqlString = null; ! if (persister.HasWhere) ! whereSqlString = new SqlString(persister.GetSQLWhereString(alias)); ! ! IList associations = WalkCollectionTree(persister, alias, factory); int joins = associations.Count; Suffixes = new string[joins]; ! for (int i=0; i<joins; i++) Suffixes[i] = i.ToString() + StringHelper.Underscore; ! JoinFragment ojf = OuterJoins(associations); ! ! SqlSelectBuilder selectBuilder = new SqlSelectBuilder(factory); selectBuilder.SetSelectClause( ! persister.SelectClauseFragment(alias) + ! (joins==0 ? String.Empty: ", " + SelectString(associations)) ) ! .SetFromClause(persister.QualifiedTableName, alias) ! .SetWhereClause(alias, persister.KeyColumnNames, persister.KeyType) ! .SetOuterJoins(ojf.ToFromFragmentString, ojf.ToWhereFragmentString); ! ! if(persister.HasWhere) selectBuilder.AddWhereClause(whereSqlString); ! ! if(persister.HasOrdering) selectBuilder.SetOrderByClause(persister.GetSQLOrderByString(alias)); this.SqlString = selectBuilder.ToSqlString(); Persisters = new ILoadable[joins]; ! LockModeArray = CreateLockModeArray(joins, LockMode.None); ! for (int i=0; i<joins; i++) { ! Persisters[i] = (ILoadable) ((OuterJoinableAssociation) associations[i]).Subpersister; } this.collectionPersister = persister; PostInstantiate(); ! } ! protected override CollectionPersister CollectionPersister { get { return collectionPersister; } } ! public void Initialize(object id, PersistentCollection collection, object owner, ISessionImplementor session) { ! LoadCollection(session, id, idType, owner, collection); } } ! } --- 33,102 ---- // probably already takes this into account. SqlString whereSqlString = null; ! if( persister.HasWhere ) ! { ! whereSqlString = new SqlString( persister.GetSQLWhereString( alias ) ); ! } ! ! IList associations = WalkCollectionTree( persister, alias, factory ); int joins = associations.Count; Suffixes = new string[joins]; ! for( int i = 0; i < joins; i++ ) ! { ! Suffixes[ i ] = i.ToString() + StringHelper.Underscore; ! } ! JoinFragment ojf = OuterJoins( associations ); ! ! SqlSelectBuilder selectBuilder = new SqlSelectBuilder( factory ); selectBuilder.SetSelectClause( ! persister.SelectClauseFragment( alias ) + ! ( joins == 0 ? String.Empty : ", " + SelectString( associations ) ) ) ! .SetFromClause( persister.QualifiedTableName, alias ) ! .SetWhereClause( alias, persister.KeyColumnNames, persister.KeyType ) ! .SetOuterJoins( ojf.ToFromFragmentString, ojf.ToWhereFragmentString ); ! ! if( persister.HasWhere ) ! { ! selectBuilder.AddWhereClause( whereSqlString ); ! } ! ! if( persister.HasOrdering ) ! { ! selectBuilder.SetOrderByClause( persister.GetSQLOrderByString( alias ) ); ! } this.SqlString = selectBuilder.ToSqlString(); Persisters = new ILoadable[joins]; ! LockModeArray = CreateLockModeArray( joins, LockMode.None ); ! for( int i = 0; i < joins; i++ ) { ! Persisters[ i ] = ( ILoadable ) ( ( OuterJoinableAssociation ) associations[ i ] ).Subpersister; } this.collectionPersister = persister; PostInstantiate(); ! } ! /// <summary></summary> ! protected override CollectionPersister CollectionPersister { get { return collectionPersister; } } ! /// <summary> ! /// ! /// </summary> ! /// <param name="id"></param> ! /// <param name="collection"></param> ! /// <param name="owner"></param> ! /// <param name="session"></param> ! public void Initialize( object id, PersistentCollection collection, object owner, ISessionImplementor session ) { ! LoadCollection( session, id, idType, owner, collection ); } } ! } \ No newline at end of file Index: AbstractEntityLoader.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/AbstractEntityLoader.cs,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** AbstractEntityLoader.cs 22 Nov 2004 03:53:07 -0000 1.12 --- AbstractEntityLoader.cs 31 Dec 2004 20:57:25 -0000 1.13 *************** *** 1,6 **** using System; - using System.Text; using System.Collections; - using NHibernate.Engine; using NHibernate.Persister; --- 1,4 ---- *************** *** 8,26 **** using NHibernate.Util; ! namespace NHibernate.Loader { ! ! public class AbstractEntityLoader : OuterJoinLoader { private ILoadable persister; private string alias; ! public AbstractEntityLoader(ILoadable persister, ISessionFactoryImplementor factory) : base(factory.Dialect) { this.persister = persister; ! alias = ToAlias(persister.ClassName, 0); } ! protected string Alias { get { return alias; } --- 6,30 ---- using NHibernate.Util; ! namespace NHibernate.Loader { ! /// <summary></summary> ! public class AbstractEntityLoader : OuterJoinLoader { private ILoadable persister; private string alias; ! /// <summary> ! /// ! /// </summary> ! /// <param name="persister"></param> ! /// <param name="factory"></param> ! public AbstractEntityLoader( ILoadable persister, ISessionFactoryImplementor factory ) : base( factory.Dialect ) { this.persister = persister; ! alias = ToAlias( persister.ClassName, 0 ); } ! /// <summary></summary> ! protected string Alias { get { return alias; } *************** *** 30,133 **** /// Gets the <see cref="ILoadable"/> Persister. /// </summary> ! protected ILoadable Persister { get { return persister; } } ! protected void RenderStatement(SqlSelectBuilder selectBuilder, ISessionFactoryImplementor factory) { ! RenderStatement(selectBuilder, String.Empty, factory); } ! protected void RenderStatement(SqlSelectBuilder selectBuilder, string orderBy, ISessionFactoryImplementor factory) { ! IList associations = WalkTree(persister, alias, factory); ! int joins=associations.Count; ! Suffixes = new string[joins+1]; ! for (int i=0; i<=joins; i++) Suffixes[i] = (joins==0) ? String.Empty : i.ToString() + StringHelper.Underscore; ! JoinFragment ojf = OuterJoins(associations); selectBuilder.SetSelectClause( ! (joins==0 ? String.Empty : SelectString(associations) + ",") + ! SelectString(persister, alias, Suffixes[joins] ) ) .SetFromClause ( ! persister.FromTableFragment(alias).Append( ! persister.FromJoinFragment(alias, true, true) ) ) .SetOuterJoins ! ( ! ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString.Append( ! UseQueryWhereFragment ? ! ( (IQueryable) persister).QueryWhereFragment(alias, true, true) : ! persister.WhereJoinFragment(alias, true, true) ) ! ) ! .SetOrderByClause(orderBy); ! Persisters = new ILoadable[joins+1]; ! // classPersisters = new ILoadable[joins+1]; ! LockModeArray = CreateLockModeArray(joins+1, LockMode.None); ! for (int i=0; i<joins; i++) { ! Persisters[i] = ((OuterJoinableAssociation)associations[i]).Subpersister; } ! Persisters[joins] = persister; } ! protected void RenderStatement(SqlString condition, ISessionFactoryImplementor factory) { ! RenderStatement(condition, String.Empty, factory); } ! protected void RenderStatement(SqlString condition, string orderBy, ISessionFactoryImplementor factory) { ! SqlSelectBuilder sqlBuilder = new SqlSelectBuilder(factory); ! IList associations = WalkTree(persister, alias, factory); ! int joins=associations.Count; ! Suffixes = new string[joins+1]; ! for (int i=0; i<=joins; i++) Suffixes[i] = (joins==0) ? String.Empty : i.ToString() + StringHelper.Underscore; ! JoinFragment ojf = OuterJoins(associations); sqlBuilder.SetSelectClause( ! (joins==0 ? String.Empty : SelectString(associations) + ",") + ! SelectString(persister, alias, Suffixes[joins] ) ); sqlBuilder.SetFromClause( ! persister.FromTableFragment(alias).Append( ! persister.FromJoinFragment(alias, true, true) ! ) ! ); ! sqlBuilder.AddWhereClause(condition); sqlBuilder.SetOuterJoins( ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString.Append ! ( ! UseQueryWhereFragment ? ! ( (IQueryable) persister).QueryWhereFragment(alias, true, true) : ! persister.WhereJoinFragment(alias, true, true) ) ); ! sqlBuilder.SetOrderByClause(orderBy); this.SqlString = sqlBuilder.ToSqlString(); ! Persisters = new ILoadable[joins+1]; ! LockModeArray = CreateLockModeArray(joins+1, LockMode.None); ! for (int i=0; i<joins; i++) { ! Persisters[i] = ((OuterJoinableAssociation)associations[i]).Subpersister; } ! Persisters[joins] = persister; } --- 34,165 ---- /// Gets the <see cref="ILoadable"/> Persister. /// </summary> ! protected ILoadable Persister { get { return persister; } } ! /// <summary> ! /// ! /// </summary> ! /// <param name="selectBuilder"></param> ! /// <param name="factory"></param> ! protected void RenderStatement( SqlSelectBuilder selectBuilder, ISessionFactoryImplementor factory ) { ! RenderStatement( selectBuilder, String.Empty, factory ); } ! /// <summary> ! /// ! /// </summary> ! /// <param name="selectBuilder"></param> ! /// <param name="orderBy"></param> ! /// <param name="factory"></param> ! protected void RenderStatement( SqlSelectBuilder selectBuilder, string orderBy, ISessionFactoryImplementor factory ) { ! IList associations = WalkTree( persister, alias, factory ); ! int joins = associations.Count; ! Suffixes = new string[joins + 1]; ! for( int i = 0; i <= joins; i++ ) ! { ! Suffixes[ i ] = ( joins == 0 ) ? String.Empty : i.ToString() + StringHelper.Underscore; ! } ! JoinFragment ojf = OuterJoins( associations ); selectBuilder.SetSelectClause( ! ( joins == 0 ? String.Empty : SelectString( associations ) + "," ) + ! SelectString( persister, alias, Suffixes[ joins ] ) ) .SetFromClause ( ! persister.FromTableFragment( alias ).Append( ! persister.FromJoinFragment( alias, true, true ) ) ) .SetOuterJoins ! ( ! ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString.Append( ! UseQueryWhereFragment ? ! ( ( IQueryable ) persister ).QueryWhereFragment( alias, true, true ) : ! persister.WhereJoinFragment( alias, true, true ) ) ! ) ! .SetOrderByClause( orderBy ); ! Persisters = new ILoadable[joins + 1]; ! // classPersisters = new ILoadable[joins+1]; ! LockModeArray = CreateLockModeArray( joins + 1, LockMode.None ); ! for( int i = 0; i < joins; i++ ) { ! Persisters[ i ] = ( ( OuterJoinableAssociation ) associations[ i ] ).Subpersister; } ! Persisters[ joins ] = persister; } ! /// <summary> ! /// ! /// </summary> ! /// <param name="condition"></param> ! /// <param name="factory"></param> ! protected void RenderStatement( SqlString condition, ISessionFactoryImplementor factory ) { ! RenderStatement( condition, String.Empty, factory ); } ! /// <summary> ! /// ! /// </summary> ! /// <param name="condition"></param> ! /// <param name="orderBy"></param> ! /// <param name="factory"></param> ! protected void RenderStatement( SqlString condition, string orderBy, ISessionFactoryImplementor factory ) { ! SqlSelectBuilder sqlBuilder = new SqlSelectBuilder( factory ); ! IList associations = WalkTree( persister, alias, factory ); ! int joins = associations.Count; ! Suffixes = new string[joins + 1]; ! for( int i = 0; i <= joins; i++ ) ! { ! Suffixes[ i ] = ( joins == 0 ) ? String.Empty : i.ToString() + StringHelper.Underscore; ! } ! JoinFragment ojf = OuterJoins( associations ); sqlBuilder.SetSelectClause( ! ( joins == 0 ? String.Empty : SelectString( associations ) + "," ) + ! SelectString( persister, alias, Suffixes[ joins ] ) ); sqlBuilder.SetFromClause( ! persister.FromTableFragment( alias ).Append( ! persister.FromJoinFragment( alias, true, true ) ! ) ! ); ! sqlBuilder.AddWhereClause( condition ); sqlBuilder.SetOuterJoins( ojf.ToFromFragmentString, ! ojf.ToWhereFragmentString.Append ! ( ! UseQueryWhereFragment ? ! ( ( IQueryable ) persister ).QueryWhereFragment( alias, true, true ) : ! persister.WhereJoinFragment( alias, true, true ) ) ); ! sqlBuilder.SetOrderByClause( orderBy ); this.SqlString = sqlBuilder.ToSqlString(); ! Persisters = new ILoadable[joins + 1]; ! LockModeArray = CreateLockModeArray( joins + 1, LockMode.None ); ! for( int i = 0; i < joins; i++ ) { ! Persisters[ i ] = ( ( OuterJoinableAssociation ) associations[ i ] ).Subpersister; } ! Persisters[ joins ] = persister; } *************** *** 139,145 **** protected virtual bool UseQueryWhereFragment { ! get { return false;} } } ! } --- 171,177 ---- protected virtual bool UseQueryWhereFragment { ! get { return false; } } } ! } \ No newline at end of file Index: CriteriaLoader.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Loader/CriteriaLoader.cs,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** CriteriaLoader.cs 21 Nov 2004 22:56:29 -0000 1.10 --- CriteriaLoader.cs 31 Dec 2004 20:57:25 -0000 1.11 *************** *** 1,16 **** - using System; using System.Collections; using System.Data; using System.Text; - - using NHibernate; using NHibernate.Engine; using NHibernate.Expression; - using NHibernate.Impl; using NHibernate.Persister; using NHibernate.Type; using NHibernate.Util; ! namespace NHibernate.Loader { /// <summary> --- 1,12 ---- using System.Collections; using System.Data; using System.Text; using NHibernate.Engine; using NHibernate.Expression; using NHibernate.Persister; using NHibernate.Type; using NHibernate.Util; ! namespace NHibernate.Loader { /// <summary> *************** *** 21,57 **** /// queries are more like multi-object <c>Load()</c>s than like HQL queries. /// </remarks> ! public class CriteriaLoader : AbstractEntityLoader { private ICriteria criteria; //private static readonly IType[] noTypes = new IType[0]; ! public CriteriaLoader(ILoadable persister, ISessionFactoryImplementor factory, ICriteria criteria) : base(persister, factory) { this.criteria = criteria; ! IEnumerator iter = criteria.IterateExpressions(); ! ! StringBuilder orderByBuilder = new StringBuilder(60); bool commaNeeded = false; ! iter = criteria.IterateOrderings(); ! ! while ( iter.MoveNext() ) ! { ! Order ord = (Order) iter.Current; ! ! if(commaNeeded) orderByBuilder.Append(StringHelper.CommaSpace); commaNeeded = true; - - orderByBuilder.Append(ord.ToStringForSql(factory, criteria.PersistentClass, Alias)); - } ! RenderStatement(criteria.Expression.ToSqlString(factory, criteria.PersistentClass, Alias), orderByBuilder.ToString(), factory); ! PostInstantiate(); ! } ! ! public IList List(ISessionImplementor session) { ArrayList values = new ArrayList(); --- 17,67 ---- /// queries are more like multi-object <c>Load()</c>s than like HQL queries. /// </remarks> ! public class CriteriaLoader : AbstractEntityLoader { private ICriteria criteria; //private static readonly IType[] noTypes = new IType[0]; ! /// <summary> ! /// ! /// </summary> ! /// <param name="persister"></param> ! /// <param name="factory"></param> ! /// <param name="criteria"></param> ! public CriteriaLoader( ILoadable persister, ISessionFactoryImplementor factory, ICriteria criteria ) : base( persister, factory ) { this.criteria = criteria; ! IEnumerator iter = criteria.IterateExpressions(); ! ! StringBuilder orderByBuilder = new StringBuilder( 60 ); bool commaNeeded = false; ! iter = criteria.IterateOrderings(); ! ! while( iter.MoveNext() ) ! { ! Order ord = ( Order ) iter.Current; ! ! if( commaNeeded ) ! { ! orderByBuilder.Append( StringHelper.CommaSpace ); ! } commaNeeded = true; ! orderByBuilder.Append( ord.ToStringForSql( factory, criteria.PersistentClass, Alias ) ); ! } ! ! RenderStatement( criteria.Expression.ToSqlString( factory, criteria.PersistentClass, Alias ), orderByBuilder.ToString(), factory ); ! PostInstantiate(); ! } ! ! /// <summary> ! /// ! /// </summary> ! /// <param name="session"></param> ! /// <returns></returns> ! public IList List( ISessionImplementor session ) { ArrayList values = new ArrayList(); *************** *** 59,82 **** IEnumerator iter = criteria.IterateExpressions(); ! while ( iter.MoveNext() ) ! { ! Expression.Expression expr = (Expression.Expression) iter.Current; ! TypedValue[] tv = expr.GetTypedValues( session.Factory, criteria.PersistentClass ); ! for ( int i=0; i<tv.Length; i++ ) { ! values.Add( tv[i].Value ); ! types.Add( tv[i].Type ); } } ! object[] valueArray = values.ToArray(); ! IType[] typeArray = (IType[]) types.ToArray(typeof(IType)); ! QueryParameters qp = new QueryParameters( typeArray, valueArray, null, criteria.Selection ); return Find( session, qp, true ); } ! protected override object GetResultColumnOrRow(object[] row, IDataReader rs, ISessionImplementor session) { ! return row[ row.Length-1 ]; } --- 69,99 ---- IEnumerator iter = criteria.IterateExpressions(); ! while( iter.MoveNext() ) ! { ! Expression.Expression expr = ( Expression.Expression ) iter.Current; ! TypedValue[ ] tv = expr.GetTypedValues( session.Factory, criteria.PersistentClass ); ! for( int i = 0; i < tv.Length; i++ ) { ! values.Add( tv[ i ].Value ); ! types.Add( tv[ i ].Type ); } } ! object[ ] valueArray = values.ToArray(); ! IType[ ] typeArray = ( IType[ ] ) types.ToArray( typeof( IType ) ); ! QueryParameters qp = new QueryParameters( typeArray, valueArray, null, criteria.Selection ); return Find( session, qp, true ); } ! /// <summary> ! /// ! /// </summary> ! /// <param name="row"></param> ! /// <param name="rs"></param> ! /// <param name="session"></param> ! /// <returns></returns> ! protected override object GetResultColumnOrRow( object[ ] row, IDataReader rs, ISessionImplementor session ) { ! return row[ row.Length - 1 ]; } *************** *** 87,104 **** /// <param name="pathExpression"></param> /// <returns></returns> ! public string[] ToColumns(string pathExpression) { return null; } ! protected override bool EnableJoinedFetch(bool mappingDefault, string path, string table, string[] foreignKeyColumns) { ! FetchMode fm = criteria.GetFetchMode(path); //fm==null || - an Enum can't be null ! if (fm==FetchMode.Default) { return mappingDefault; } ! else { return fm == FetchMode.Eager; --- 104,129 ---- /// <param name="pathExpression"></param> /// <returns></returns> ! public string[ ] ToColumns( string pathExpression ) { return null; } ! /// <summary> ! /// ! /// </summary> ! /// <param name="mappingDefault"></param> ! /// <param name="path"></param> ! /// <param name="table"></param> ! /// <param name="foreignKeyColumns"></param> ! /// <returns></returns> ! protected override bool EnableJoinedFetch( bool mappingDefault, string path, string table, string[ ] foreignKeyColumns ) { ! FetchMode fm = criteria.GetFetchMode( path ); //fm==null || - an Enum can't be null ! if( fm == FetchMode.Default ) { return mappingDefault; } ! else { return fm == FetchMode.Eager; *************** *** 106,112 **** } protected override bool UseQueryWhereFragment { ! get {return true;} } --- 131,138 ---- } + /// <summary></summary> protected override bool UseQueryWhereFragment { ! get { return true; } } |