From: Michael D. <mik...@us...> - 2004-10-31 04:31:15
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14662/NHibernate/Impl Modified Files: FilterImpl.cs QueryImpl.cs SessionImpl.cs Log Message: Added class QueryParameters to reduce the number of params in methods. It was taken from h2.1.6 Index: SessionImpl.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl/SessionImpl.cs,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** SessionImpl.cs 13 Oct 2004 12:38:37 -0000 1.45 --- SessionImpl.cs 31 Oct 2004 04:31:00 -0000 1.46 *************** *** 1564,1580 **** public IList Find(string query, object[] values, IType[] types) { ! return Find(query, values, types, null, null, null); } ! public IList Find(string query, object[] values, IType[] types, RowSelection selection, IDictionary namedParams, ! IDictionary lockModes) { - if ( log.IsDebugEnabled ) { log.Debug( "find: " + query); ! if (values.Length!=0) log.Debug( "parameters: " + StringHelper.ToString(values) ); } QueryTranslator[] q = GetQueries(query, false); --- 1564,1580 ---- public IList Find(string query, object[] values, IType[] types) { ! return Find(query, new QueryParameters( types, values ) ) ; } ! public IList Find(string query, QueryParameters parameters) { if ( log.IsDebugEnabled ) { log.Debug( "find: " + query); ! parameters.LogParameters(); } + parameters.ValidateParameters(); + QueryTranslator[] q = GetQueries(query, false); *************** *** 1591,1595 **** try { ! currentResults = q[i].FindList(this, values, types, true, selection, namedParams, lockModes); } catch (Exception e) --- 1591,1595 ---- try { ! currentResults = q[i].FindList(this, parameters, true); } catch (Exception e) *************** *** 1598,1602 **** } ! for (int j=0;j<results.Count;j++) { currentResults.Add( results[j] ); } --- 1598,1603 ---- } ! for (int j=0;j<results.Count;j++) ! { currentResults.Add( results[j] ); } *************** *** 1609,1612 **** --- 1610,1614 ---- } return results; + } *************** *** 1643,1656 **** public IEnumerable Enumerable(string query, object[] values, IType[] types) { ! return Enumerable(query, values, types, null, null, null); } ! public IEnumerable Enumerable(string query, object[] values, IType[] types, RowSelection selection, ! IDictionary namedParams, IDictionary lockModes) { if ( log.IsDebugEnabled ) { log.Debug( "GetEnumerable: " + query ); ! if (values.Length!=0) log.Debug( "parameters: " + StringHelper.ToString(values) ); } --- 1645,1657 ---- public IEnumerable Enumerable(string query, object[] values, IType[] types) { ! return Enumerable( query, new QueryParameters( types, values ) ); } ! public IEnumerable Enumerable(string query, QueryParameters parameters) { if ( log.IsDebugEnabled ) { log.Debug( "GetEnumerable: " + query ); ! parameters.LogParameters(); } *************** *** 1662,1666 **** IEnumerable[] results = null; bool many = q.Length>1; ! if (many) results = new IEnumerable[q.Length]; //execute the queries and return all results as a single enumerable --- 1663,1670 ---- IEnumerable[] results = null; bool many = q.Length>1; ! if( many ) ! { ! results = new IEnumerable[q.Length]; ! } //execute the queries and return all results as a single enumerable *************** *** 1669,1673 **** try { ! result = q[i].GetEnumerable(values, types, selection, namedParams, lockModes, this); } catch (Exception e) --- 1673,1677 ---- try { ! result = q[i].GetEnumerable( parameters, this ); } catch (Exception e) *************** *** 1684,1690 **** } - //TODO: new in H2.0.3 - missing parameters. - //public IScrollableResults scroll() {} - public int Delete(string query) { --- 1688,1691 ---- *************** *** 3606,3615 **** public ICollection Filter(object collection, string filter) { ! return Filter( collection, filter, new object[1], new IType[1], null, null, null); } public ICollection Filter(object collection, string filter, object value, IType type) { ! return Filter( collection, filter, new object[] { null, value }, new IType[] { null, type }, null, null, null ); } --- 3607,3618 ---- public ICollection Filter(object collection, string filter) { ! QueryParameters qp = new QueryParameters( new IType[1], new object[1] ); ! return Filter( collection, filter, qp ); } public ICollection Filter(object collection, string filter, object value, IType type) { ! QueryParameters qp = new QueryParameters( new IType[] { null, type }, new object[] { null, value } ); ! return Filter( collection, filter, qp ); } *************** *** 3618,3624 **** object[] vals = new object[ values.Length + 1 ]; IType[] typs = new IType[ values.Length + 1 ]; ! Array.Copy(values, 0, vals, 1, values.Length); ! Array.Copy(types, 0, typs, 1, types.Length); ! return Filter(collection, filter, vals, typs, null, null, null); } --- 3621,3628 ---- object[] vals = new object[ values.Length + 1 ]; IType[] typs = new IType[ values.Length + 1 ]; ! Array.Copy( values, 0, vals, 1, values.Length ); ! Array.Copy( types, 0, typs, 1, types.Length ); ! QueryParameters qp = new QueryParameters( typs, vals ); ! return Filter( collection, filter, qp ); } *************** *** 3630,3645 **** /// <param name="collection"></param> /// <param name="filter"></param> ! /// <param name="values"></param> ! /// <param name="types"></param> ! /// <param name="selection"></param> ! /// <param name="namedParams"></param> /// <param name="scalar"></param> /// <returns></returns> ! private FilterTranslator GetFilterTranslator(object collection, string filter, object[] values, IType[] types, RowSelection selection, IDictionary namedParams, bool scalar) { if ( log.IsDebugEnabled ) { log.Debug( "filter: " + filter ); ! if ( values.Length!=0 ) log.Debug( "parameters: " + StringHelper.ToString(values) ); } --- 3634,3646 ---- /// <param name="collection"></param> /// <param name="filter"></param> ! /// <param name="parameters"></param> /// <param name="scalar"></param> /// <returns></returns> ! private FilterTranslator GetFilterTranslator(object collection, string filter, QueryParameters parameters, bool scalar) { if ( log.IsDebugEnabled ) { log.Debug( "filter: " + filter ); ! parameters.LogParameters(); } *************** *** 3673,3678 **** } ! values[0] = e.loadedKey; ! types[0] = e.loadedPersister.KeyType; return q; --- 3674,3679 ---- } ! parameters.PositionalParameterValues[0] = e.loadedKey; ! parameters.PositionalParameterTypes[0] = e.loadedPersister.KeyType; return q; *************** *** 3680,3687 **** } ! public IList Filter(object collection, string filter, object[] values, IType[] types, RowSelection selection, ! IDictionary namedParams, IDictionary lockModes) { - string[] concreteFilters = QueryTranslator.ConcreteQueries(filter, factory); FilterTranslator[] filters = new FilterTranslator[ concreteFilters.Length ]; --- 3681,3686 ---- } ! public IList Filter(object collection, string filter, QueryParameters parameters) { string[] concreteFilters = QueryTranslator.ConcreteQueries(filter, factory); FilterTranslator[] filters = new FilterTranslator[ concreteFilters.Length ]; *************** *** 3689,3693 **** for ( int i=0; i<concreteFilters.Length; i++ ) { ! filters[i] = GetFilterTranslator(collection, concreteFilters[i], values, types, selection, namedParams, false); } --- 3688,3697 ---- for ( int i=0; i<concreteFilters.Length; i++ ) { ! filters[i] = GetFilterTranslator( ! collection, ! concreteFilters[i], ! parameters, ! false ); ! } *************** *** 3702,3706 **** try { ! currentResults = filters[i].FindList(this, values, types, true, selection, namedParams, lockModes); } catch (Exception e) --- 3706,3710 ---- try { ! currentResults = filters[i].FindList( this, parameters, true ); } catch (Exception e) *************** *** 3722,3729 **** } ! public IEnumerable EnumerableFilter(object collection, string filter, object[] values, IType[] types, ! RowSelection selection, IDictionary namedParams, IDictionary lockModes) { - string[] concreteFilters = QueryTranslator.ConcreteQueries(filter, factory); FilterTranslator[] filters = new FilterTranslator[ concreteFilters.Length ]; --- 3726,3731 ---- } ! public IEnumerable EnumerableFilter(object collection, string filter, QueryParameters parameters) { string[] concreteFilters = QueryTranslator.ConcreteQueries(filter, factory); FilterTranslator[] filters = new FilterTranslator[ concreteFilters.Length ]; *************** *** 3731,3735 **** for (int i=0; i<concreteFilters.Length; i++ ) { ! filters[i] = GetFilterTranslator(collection, concreteFilters[i], values, types, selection, namedParams, true); } --- 3733,3741 ---- for (int i=0; i<concreteFilters.Length; i++ ) { ! filters[i] = GetFilterTranslator( ! collection, ! concreteFilters[i], ! parameters, ! true); } *************** *** 3746,3750 **** try { ! result = filters[i].GetEnumerable(values, types, selection, namedParams, lockModes, this); } catch (Exception e) --- 3752,3756 ---- try { ! result = filters[i].GetEnumerable( parameters, this ); } catch (Exception e) Index: QueryImpl.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl/QueryImpl.cs,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** QueryImpl.cs 22 Aug 2004 06:25:06 -0000 1.14 --- QueryImpl.cs 31 Oct 2004 04:31:00 -0000 1.15 *************** *** 27,36 **** } ! public virtual IEnumerable Enumerable() { ! IDictionary namedParams = new Hashtable( namedParameters ); ! ! string query = BindParameterLists(namedParams); ! return session.Enumerable(query, (object[]) values.ToArray(typeof(object)), ! (IType[]) types.ToArray(typeof(IType)), selection, namedParams, lockModes); } --- 27,42 ---- } ! public virtual IEnumerable Enumerable() ! { ! //TODO: see if there is a better way to implement ! QueryParameters qp = new QueryParameters( ! (IType[])types.ToArray( typeof(IType) ), ! (object[])values.ToArray( typeof(object) ), ! new Hashtable( namedParameters ), ! lockModes, ! selection ); ! ! string query = BindParameterLists( qp.NamedParameters ); ! return session.Enumerable( query, qp ); } *************** *** 45,54 **** } ! public virtual IList List() { ! IDictionary namedParams = new Hashtable( namedParameters ); ! ! string query = BindParameterLists(namedParams); ! return session.Find(query, (object[]) values.ToArray(typeof(object)), (IType[]) types.ToArray(typeof(IType)), ! selection, namedParams, lockModes); } --- 51,66 ---- } ! public virtual IList List() ! { ! //TODO: see if there is a better way to implement ! QueryParameters qp = new QueryParameters( ! (IType[])types.ToArray( typeof(IType) ), ! (object[])values.ToArray( typeof(object) ), ! new Hashtable( namedParameters ), ! lockModes, ! selection ); ! ! string query = BindParameterLists( qp.NamedParameters ); ! return session.Find( query, qp ); } Index: FilterImpl.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Impl/FilterImpl.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** FilterImpl.cs 30 Oct 2004 14:41:54 -0000 1.7 --- FilterImpl.cs 31 Oct 2004 04:31:00 -0000 1.8 *************** *** 22,35 **** public override IEnumerable Enumerable() { ! IDictionary namedParams = new Hashtable( NamedParams ); ! string query = BindParameterLists( namedParams ); ! return Session.EnumerableFilter( collection, query, ValueArray(), TypeArray(), Selection, namedParams, LockModes); } public override IList List() { ! IDictionary namedParams = new Hashtable( NamedParams ); ! string query = BindParameterLists( namedParams ); ! return Session.Filter( collection, query, ValueArray(), TypeArray(), Selection, namedParams, LockModes); } --- 22,45 ---- public override IEnumerable Enumerable() { ! //TODO: see if there is a better way to implement ! QueryParameters qp = new QueryParameters( TypeArray(), ValueArray() ); ! qp.NamedParameters = new Hashtable( NamedParams ); ! qp.RowSelection = Selection; ! qp.LockModes = LockModes; ! ! string query = BindParameterLists( qp.NamedParameters ); ! return Session.EnumerableFilter( collection, query, qp ); } public override IList List() { ! //TODO: see if there is a better way to implement ! QueryParameters qp = new QueryParameters( TypeArray(), ValueArray() ); ! qp.NamedParameters = new Hashtable( NamedParams ); ! qp.RowSelection = Selection; ! qp.LockModes = LockModes; ! ! string query = BindParameterLists( qp.NamedParameters ); ! return Session.Filter( collection, query, qp ); } |