From: <fab...@us...> - 2009-05-01 14:55:38
|
Revision: 4222 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4222&view=rev Author: fabiomaulo Date: 2009-05-01 14:55:28 +0000 (Fri, 01 May 2009) Log Message: ----------- Refactoring: - Moved Parameters classes to NH namespace (as in Hb) - Removed TODO.cs (the last method was moved in StringHelper) - Moved NullableDictionary to default util (it need some investigation about its real usage) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SessionFactoryHelperExtensions.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/BinaryLogicOperatorNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromClause.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElementType.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IParameterContainer.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IndexNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ParameterNode.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlFragment.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/SyntheticAndFactory.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate/Param/AbstractExplicitParameterSpecification.cs trunk/nhibernate/src/NHibernate/Param/AggregatedIndexCollectionSelectorParameterSpecifications.cs trunk/nhibernate/src/NHibernate/Param/CollectionFilterKeyParameterSpecification.cs trunk/nhibernate/src/NHibernate/Param/DynamicFilterParameterSpecification.cs trunk/nhibernate/src/NHibernate/Param/IParameterSpecification.cs trunk/nhibernate/src/NHibernate/Param/NamedParameterSpecification.cs trunk/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs trunk/nhibernate/src/NHibernate/Param/PositionalParameterSpecification.cs trunk/nhibernate/src/NHibernate/Util/StringHelper.cs Added Paths: ----------- trunk/nhibernate/src/NHibernate/Param/ trunk/nhibernate/src/NHibernate/Param/IExplicitParameterSpecification.cs trunk/nhibernate/src/NHibernate/Util/NullableDictionary.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/TODO.cs trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/NullableDictionary.cs trunk/nhibernate/src/NHibernate/Param/ExplicitParameterSpecification.cs Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Exec/BasicExecutor.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -6,7 +6,7 @@ using log4net; using NHibernate.Engine; using NHibernate.Exceptions; -using NHibernate.Hql.Ast.ANTLR.Parameters; +using NHibernate.Param; using NHibernate.Persister.Entity; using NHibernate.SqlCommand; Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/HqlSqlWalker.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,16 +1,17 @@ -using System; +using System; using System.Collections.Generic; using Antlr.Runtime.Tree; using Iesi.Collections.Generic; using log4net; using NHibernate.Engine; -using NHibernate.Hql.Ast.ANTLR.Parameters; using NHibernate.Hql.Ast.ANTLR.Tree; using NHibernate.Hql.Ast.ANTLR.Util; +using NHibernate.Param; using NHibernate.Persister.Collection; using NHibernate.Persister.Entity; using NHibernate.SqlCommand; using NHibernate.Type; +using NHibernate.Util; namespace NHibernate.Hql.Ast.ANTLR { Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Loader/QueryLoader.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,14 +1,13 @@ -using System; +using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; using NHibernate.Engine; -using NHibernate.Hql.Ast.ANTLR.Parameters; using NHibernate.Hql.Ast.ANTLR.Tree; -using NHibernate.Hql.Ast.ANTLR.Util; using NHibernate.Impl; using NHibernate.Loader; +using NHibernate.Param; using NHibernate.Persister.Collection; using NHibernate.Persister.Entity; using NHibernate.SqlCommand; Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/QueryTranslatorImpl.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -8,9 +8,9 @@ using NHibernate.Engine; using NHibernate.Hql.Ast.ANTLR.Exec; using NHibernate.Hql.Ast.ANTLR.Loader; -using NHibernate.Hql.Ast.ANTLR.Parameters; using NHibernate.Hql.Ast.ANTLR.Tree; using NHibernate.Hql.Ast.ANTLR.Util; +using NHibernate.Param; using NHibernate.Persister.Entity; using NHibernate.SqlCommand; using NHibernate.Type; Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SessionFactoryHelperExtensions.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SessionFactoryHelperExtensions.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SessionFactoryHelperExtensions.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,9 +1,8 @@ -using System; +using System; using System.Collections.Generic; using NHibernate.Dialect.Function; using NHibernate.Engine; using NHibernate.Hql.Ast.ANTLR.Tree; -using NHibernate.Hql.Ast.ANTLR.Util; using NHibernate.Hql.Util; using NHibernate.Persister.Collection; using NHibernate.Persister.Entity; Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SqlGenerator.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,12 +1,12 @@ -using System; +using System; using System.Collections; using System.Collections.Generic; using Antlr.Runtime; using Antlr.Runtime.Tree; using NHibernate.Dialect.Function; using NHibernate.Engine; -using NHibernate.Hql.Ast.ANTLR.Parameters; using NHibernate.Hql.Ast.ANTLR.Tree; +using NHibernate.Param; using NHibernate.SqlCommand; namespace NHibernate.Hql.Ast.ANTLR Deleted: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/TODO.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/TODO.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/TODO.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,19 +0,0 @@ -using System; - -namespace NHibernate.Hql.Ast.ANTLR -{ - public class LoadQueryInfluencers - { - public static string[] ParseFilterParameterName(string filterParameterName) - { - int dot = filterParameterName.IndexOf("."); - if (dot <= 0) - { - throw new ArgumentException("Invalid filter-parameter name format", "filterParameterName"); - } - string filterName = filterParameterName.Substring(0, dot); - string parameterName = filterParameterName.Substring(dot + 1); - return new[] { filterName, parameterName }; - } - } -} Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/BinaryLogicOperatorNode.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/BinaryLogicOperatorNode.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/BinaryLogicOperatorNode.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,7 +1,7 @@ -using System; +using System; using Antlr.Runtime; using NHibernate.Engine; -using NHibernate.Hql.Ast.ANTLR.Parameters; +using NHibernate.Param; using NHibernate.Type; using NHibernate.Util; Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromClause.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromClause.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromClause.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,9 +1,10 @@ -using System; +using System; using System.Collections.Generic; using Antlr.Runtime; using Iesi.Collections.Generic; using log4net; using NHibernate.Hql.Ast.ANTLR.Util; +using NHibernate.Util; namespace NHibernate.Hql.Ast.ANTLR.Tree { Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElement.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,10 +1,10 @@ -using System; +using System; using System.Collections.Generic; using System.Text; using Antlr.Runtime; using log4net; -using NHibernate.Hql.Ast.ANTLR.Parameters; using NHibernate.Hql.Ast.ANTLR.Util; +using NHibernate.Param; using NHibernate.Persister.Collection; using NHibernate.Persister.Entity; using NHibernate.Type; Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElementType.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElementType.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/FromElementType.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -3,7 +3,7 @@ using System.Text; using log4net; using NHibernate.Engine; -using NHibernate.Hql.Ast.ANTLR.Parameters; +using NHibernate.Param; using NHibernate.Persister.Collection; using NHibernate.Persister.Entity; using NHibernate.Type; Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IParameterContainer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IParameterContainer.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IParameterContainer.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,4 +1,4 @@ -using NHibernate.Hql.Ast.ANTLR.Parameters; +using NHibernate.Param; namespace NHibernate.Hql.Ast.ANTLR.Tree { Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IndexNode.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IndexNode.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/IndexNode.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,10 +1,10 @@ -using System; +using System; using System.Collections.Generic; using Antlr.Runtime; using Antlr.Runtime.Tree; using log4net; using NHibernate.Engine; -using NHibernate.Hql.Ast.ANTLR.Parameters; +using NHibernate.Param; using NHibernate.Persister.Collection; using NHibernate.SqlCommand; using NHibernate.Type; Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ParameterNode.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ParameterNode.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/ParameterNode.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,8 +1,8 @@ -using System; +using System; using System.Text; using Antlr.Runtime; using NHibernate.Engine; -using NHibernate.Hql.Ast.ANTLR.Parameters; +using NHibernate.Param; using NHibernate.Type; namespace NHibernate.Hql.Ast.ANTLR.Tree Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlFragment.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlFragment.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Tree/SqlFragment.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,7 +1,7 @@ -using System; +using System; using System.Collections.Generic; using Antlr.Runtime; -using NHibernate.Hql.Ast.ANTLR.Parameters; +using NHibernate.Param; using NHibernate.SqlCommand; namespace NHibernate.Hql.Ast.ANTLR.Tree Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/JoinProcessor.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,13 +1,13 @@ -using System; +using System; using System.Collections; using System.Collections.Generic; using System.Text; using log4net; using NHibernate.Engine; -using NHibernate.Hql.Ast.ANTLR.Parameters; using NHibernate.Hql.Ast.ANTLR.Tree; using NHibernate.Hql.Classic; using NHibernate.Impl; +using NHibernate.Param; using NHibernate.SqlCommand; using NHibernate.Type; using NHibernate.Util; @@ -180,7 +180,7 @@ if ( token.StartsWith( ParserHelper.HqlVariablePrefix ) ) { string filterParameterName = token.Substring( 1 ); - string[] parts = LoadQueryInfluencers.ParseFilterParameterName( filterParameterName ); + string[] parts = StringHelper.ParseFilterParameterName( filterParameterName ); FilterImpl filter = ( FilterImpl ) walker.EnabledFilters[parts[0]]; Object value = filter.GetParameter( parts[1] ); IType type = filter.FilterDefinition.GetParameterType( parts[1] ); Deleted: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/NullableDictionary.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/NullableDictionary.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/NullableDictionary.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,230 +0,0 @@ -using System.Collections; -using System.Collections.Generic; - -namespace NHibernate.Hql.Ast.ANTLR.Util -{ - public class NullableDictionary<TKey, TValue> : IDictionary<TKey, TValue> - where TKey : class - { - private TValue _nullValue; - private bool _gotNullValue; - private readonly Dictionary<TKey, TValue> _dict = new Dictionary<TKey, TValue>(); - - public bool ContainsKey(TKey key) - { - if (key == null) - { - return _gotNullValue; - } - else - { - return _dict.ContainsKey(key); - } - } - - public void Add(TKey key, TValue value) - { - if (key == null) - { - _nullValue = value; - } - else - { - _dict[key] = value; - } - } - - public bool Remove(TKey key) - { - if (key == null) - { - if (_gotNullValue) - { - _nullValue = default(TValue); - _gotNullValue = false; - return true; - } - else - { - return false; - } - } - else - { - return _dict.Remove(key); - } - } - - public bool TryGetValue(TKey key, out TValue value) - { - if (key == null) - { - if (_gotNullValue) - { - value = _nullValue; - return true; - } - else - { - value = default(TValue); - return false; - } - } - else - { - return _dict.TryGetValue(key, out value); - } - } - - public TValue this[TKey key] - { - get - { - if (key == null) - { - return _nullValue; - } - else - { - TValue ret; - - _dict.TryGetValue(key, out ret); - - return ret; - } - } - set - { - if (key == null) - { - _nullValue = value; - _gotNullValue = true; - } - else - { - _dict[key] = value; - } - } - } - - public ICollection<TKey> Keys - { - get - { - if (_gotNullValue) - { - List<TKey> keys = new List<TKey>(_dict.Keys); - keys.Add(null); - return keys; - } - else - { - return _dict.Keys; - } - } - } - - public ICollection<TValue> Values - { - get - { - if (_gotNullValue) - { - List<TValue> values = new List<TValue>(_dict.Values); - values.Add(_nullValue); - return values; - } - else - { - return _dict.Values; - } - } - } - - public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator() - { - foreach (KeyValuePair<TKey, TValue> kvp in _dict) - { - yield return kvp; - } - - if (_gotNullValue) - { - yield return new KeyValuePair<TKey, TValue>(null, _nullValue); - } - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - public void Add(KeyValuePair<TKey, TValue> item) - { - if (item.Key == null) - { - _nullValue = item.Value; - _gotNullValue = true; - } - else - { - _dict.Add(item.Key, item.Value); - } - } - - public void Clear() - { - _dict.Clear(); - _nullValue = default(TValue); - _gotNullValue = false; - } - - public bool Contains(KeyValuePair<TKey, TValue> item) - { - TValue val = default(TValue); - - if (TryGetValue(item.Key, out val)) - { - if (Equals(item.Value, val)) - { - return true; - } - return false; - } - else - { - return false; - } - } - - public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex) - { - throw new System.NotImplementedException(); - } - - public bool Remove(KeyValuePair<TKey, TValue> item) - { - throw new System.NotImplementedException(); - } - - public int Count - { - get - { - if (_gotNullValue) - { - return _dict.Count + 1; - } - else - { - return _dict.Count; - } - } - } - - public bool IsReadOnly - { - get { return false; } - } - } -} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/SyntheticAndFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/SyntheticAndFactory.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/SyntheticAndFactory.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,8 +1,8 @@ -using System; +using System; using Antlr.Runtime.Tree; using log4net; -using NHibernate.Hql.Ast.ANTLR.Parameters; using NHibernate.Hql.Ast.ANTLR.Tree; +using NHibernate.Param; using NHibernate.SqlCommand; using NHibernate.Type; using NHibernate.Util; Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-05-01 14:55:28 UTC (rev 4222) @@ -496,21 +496,20 @@ <Compile Include="Hql\Ast\ANTLR\InvalidWithClauseException.cs" /> <Compile Include="Hql\Ast\ANTLR\IParseErrorHandler.cs" /> <Compile Include="Hql\Ast\ANTLR\Loader\QueryLoader.cs" /> - <Compile Include="Hql\Ast\ANTLR\Parameters\AbstractExplicitParameterSpecification.cs" /> - <Compile Include="Hql\Ast\ANTLR\Parameters\AggregatedIndexCollectionSelectorParameterSpecifications.cs" /> - <Compile Include="Hql\Ast\ANTLR\Parameters\CollectionFilterKeyParameterSpecification.cs" /> - <Compile Include="Hql\Ast\ANTLR\Parameters\DynamicFilterParameterSpecification.cs" /> - <Compile Include="Hql\Ast\ANTLR\Parameters\IExplicitParameterSpecification.cs" /> - <Compile Include="Hql\Ast\ANTLR\Parameters\IParameterSpecification.cs" /> - <Compile Include="Hql\Ast\ANTLR\Parameters\NamedParameterSpecification.cs" /> - <Compile Include="Hql\Ast\ANTLR\Parameters\ParameterTranslationsImpl.cs" /> - <Compile Include="Hql\Ast\ANTLR\Parameters\PositionalParameterSpecification.cs" /> + <Compile Include="Param\AbstractExplicitParameterSpecification.cs" /> + <Compile Include="Param\AggregatedIndexCollectionSelectorParameterSpecifications.cs" /> + <Compile Include="Param\CollectionFilterKeyParameterSpecification.cs" /> + <Compile Include="Param\DynamicFilterParameterSpecification.cs" /> + <Compile Include="Param\IExplicitParameterSpecification.cs" /> + <Compile Include="Param\IParameterSpecification.cs" /> + <Compile Include="Param\NamedParameterSpecification.cs" /> + <Compile Include="Param\ParameterTranslationsImpl.cs" /> + <Compile Include="Param\PositionalParameterSpecification.cs" /> <Compile Include="Hql\Ast\ANTLR\QuerySyntaxException.cs" /> <Compile Include="Hql\Ast\ANTLR\QueryTranslatorImpl.cs" /> <Compile Include="Hql\Ast\ANTLR\SemanticException.cs" /> <Compile Include="Hql\Ast\ANTLR\SessionFactoryHelperExtensions.cs" /> <Compile Include="Hql\Ast\ANTLR\SqlGenerator.cs" /> - <Compile Include="Hql\Ast\ANTLR\TODO.cs" /> <Compile Include="Hql\Ast\ANTLR\Tree\AbstractNullnessCheckNode.cs" /> <Compile Include="Hql\Ast\ANTLR\Tree\AbstractRestrictableStatement.cs" /> <Compile Include="Hql\Ast\ANTLR\Tree\AbstractSelectExpression.cs" /> @@ -585,7 +584,7 @@ <Compile Include="Hql\Ast\ANTLR\Util\JoinProcessor.cs" /> <Compile Include="Hql\Ast\ANTLR\Util\LiteralProcessor.cs" /> <Compile Include="Hql\Ast\ANTLR\Util\NodeTraverser.cs" /> - <Compile Include="Hql\Ast\ANTLR\Util\NullableDictionary.cs" /> + <Compile Include="Util\NullableDictionary.cs" /> <Compile Include="Hql\Ast\ANTLR\Util\PathHelper.cs" /> <Compile Include="Hql\Ast\ANTLR\Util\SyntheticAndFactory.cs" /> <Compile Include="Id\TriggerIdentityGenerator.cs" /> Modified: trunk/nhibernate/src/NHibernate/Param/AbstractExplicitParameterSpecification.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/AbstractExplicitParameterSpecification.cs 2009-04-30 23:40:57 UTC (rev 4219) +++ trunk/nhibernate/src/NHibernate/Param/AbstractExplicitParameterSpecification.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -2,13 +2,8 @@ using NHibernate.Engine; using NHibernate.Type; -namespace NHibernate.Hql.Ast.ANTLR.Parameters +namespace NHibernate.Param { - /** - * Convenience base class for explicitly defined query parameters. - * - * @author Steve Ebersole - */ public abstract class AbstractExplicitParameterSpecification : IExplicitParameterSpecification { private readonly int _sourceLine; @@ -44,4 +39,4 @@ public abstract string RenderDisplayInfo(); public abstract int Bind(IDbCommand statement, QueryParameters qp, ISessionImplementor session, int position); } -} +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Param/AggregatedIndexCollectionSelectorParameterSpecifications.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/AggregatedIndexCollectionSelectorParameterSpecifications.cs 2009-04-30 23:40:57 UTC (rev 4219) +++ trunk/nhibernate/src/NHibernate/Param/AggregatedIndexCollectionSelectorParameterSpecifications.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -4,7 +4,7 @@ using NHibernate.Engine; using NHibernate.Type; -namespace NHibernate.Hql.Ast.ANTLR.Parameters +namespace NHibernate.Param { public class AggregatedIndexCollectionSelectorParameterSpecifications : IParameterSpecification { @@ -49,4 +49,4 @@ return buffer.ToString(); } } -} +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Param/CollectionFilterKeyParameterSpecification.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/CollectionFilterKeyParameterSpecification.cs 2009-04-30 23:40:57 UTC (rev 4219) +++ trunk/nhibernate/src/NHibernate/Param/CollectionFilterKeyParameterSpecification.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -3,7 +3,7 @@ using NHibernate.Engine; using NHibernate.Type; -namespace NHibernate.Hql.Ast.ANTLR.Parameters +namespace NHibernate.Param { class CollectionFilterKeyParameterSpecification : IParameterSpecification { @@ -25,10 +25,10 @@ } public int Bind( - IDbCommand statement, - QueryParameters qp, - ISessionImplementor session, - int position) + IDbCommand statement, + QueryParameters qp, + ISessionImplementor session, + int position) { object value = qp.PositionalParameterValues[_queryParameterPosition]; _keyType.NullSafeSet(statement, value, position, session); @@ -46,4 +46,4 @@ return "collection-filter-key=" + _collectionRole; } } -} +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Param/DynamicFilterParameterSpecification.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/DynamicFilterParameterSpecification.cs 2009-04-30 23:40:57 UTC (rev 4219) +++ trunk/nhibernate/src/NHibernate/Param/DynamicFilterParameterSpecification.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -4,7 +4,7 @@ using NHibernate.Engine; using NHibernate.Type; -namespace NHibernate.Hql.Ast.ANTLR.Parameters +namespace NHibernate.Param { public class DynamicFilterParameterSpecification : IParameterSpecification { @@ -19,9 +19,9 @@ /// <param name="parameterName">The name of the parameter</param> /// <param name="definedParameterType">The paremeter type specified on the filter metadata</param> public DynamicFilterParameterSpecification( - string filterName, - string parameterName, - IType definedParameterType) + string filterName, + string parameterName, + IType definedParameterType) { _filterName = filterName; _parameterName = parameterName; @@ -64,4 +64,4 @@ return "dynamic-filter={filterName=" + _filterName + ",paramName=" + _parameterName + "}"; } } -} +} \ No newline at end of file Deleted: trunk/nhibernate/src/NHibernate/Param/ExplicitParameterSpecification.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/ExplicitParameterSpecification.cs 2009-04-30 23:40:57 UTC (rev 4219) +++ trunk/nhibernate/src/NHibernate/Param/ExplicitParameterSpecification.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,21 +0,0 @@ -namespace NHibernate.Hql.Ast.ANTLR.Parameters -{ - /// <summary> - /// An additional contract for parameters which originate from parameters explicitly encountered in the source statement - /// (HQL or native-SQL). - /// Author: Steve Ebersole - /// Ported by: Steve Strong - /// </summary> - public interface IExplicitParameterSpecification : IParameterSpecification - { - /// <summary> - /// Retrieves the line number on which this parameter occurs in the source query. - /// </summary> - int SourceLine { get; } - - /// <summary> - /// Retrieves the column number (within the {@link #getSourceLine()}) where this parameter occurs. - /// </summary> - int SourceColumn { get; } - } -} Copied: trunk/nhibernate/src/NHibernate/Param/IExplicitParameterSpecification.cs (from rev 4221, trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/IExplicitParameterSpecification.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Param/IExplicitParameterSpecification.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Param/IExplicitParameterSpecification.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -0,0 +1,21 @@ +namespace NHibernate.Param +{ + /// <summary> + /// An additional contract for parameters which originate from parameters explicitly encountered in the source statement + /// (HQL or native-SQL). + /// Author: Steve Ebersole + /// Ported by: Steve Strong + /// </summary> + public interface IExplicitParameterSpecification : IParameterSpecification + { + /// <summary> + /// Retrieves the line number on which this parameter occurs in the source query. + /// </summary> + int SourceLine { get; } + + /// <summary> + /// Retrieves the column number (within the {@link #getSourceLine()}) where this parameter occurs. + /// </summary> + int SourceColumn { get; } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Param/IParameterSpecification.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/IParameterSpecification.cs 2009-04-30 23:40:57 UTC (rev 4219) +++ trunk/nhibernate/src/NHibernate/Param/IParameterSpecification.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -2,7 +2,7 @@ using NHibernate.Engine; using NHibernate.Type; -namespace NHibernate.Hql.Ast.ANTLR.Parameters +namespace NHibernate.Param { /// <summary> /// Maintains information relating to parameters which need to get bound into a @@ -34,4 +34,4 @@ /// <returns>The displayable info</returns> string RenderDisplayInfo(); } -} +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Param/NamedParameterSpecification.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/NamedParameterSpecification.cs 2009-04-30 23:40:57 UTC (rev 4219) +++ trunk/nhibernate/src/NHibernate/Param/NamedParameterSpecification.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -2,7 +2,7 @@ using System.Data; using NHibernate.Engine; -namespace NHibernate.Hql.Ast.ANTLR.Parameters +namespace NHibernate.Param { /// <summary> /// Parameter bind specification for an explicit named parameter. @@ -51,5 +51,4 @@ get { return _name; } } } - -} +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/ParameterTranslationsImpl.cs 2009-04-30 23:40:57 UTC (rev 4219) +++ trunk/nhibernate/src/NHibernate/Param/ParameterTranslationsImpl.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -1,11 +1,11 @@ using System; using System.Collections.Generic; using NHibernate.Engine; -using NHibernate.Hql.Ast.ANTLR.Util; +using NHibernate.Hql; using NHibernate.Type; using NHibernate.Util; -namespace NHibernate.Hql.Ast.ANTLR.Parameters +namespace NHibernate.Param { /// <summary> /// Defines the information available for parameters encountered during @@ -46,13 +46,13 @@ else { // don't care about other param types here, just those explicitly user-defined... - // Steve Strong Note: The original Java does not do this decrement; it increments i for - // every parameter type. However, within the Loader.GetParameterTypes() method, this introduces - // nulls into the paramTypeList array, which in turn causes Loader.ConvertITypesToSqlTypes() to crash - // with a null dereference. An alternative fix is to change the Loader to handle the null. I'm - // not sure which fix is the most appropriate. - // Legacy.FumTest.CompositeIDQuery() shows the bug if you remove the decrement below... - i--; + // Steve Strong Note: The original Java does not do this decrement; it increments i for + // every parameter type. However, within the Loader.GetParameterTypes() method, this introduces + // nulls into the paramTypeList array, which in turn causes Loader.ConvertITypesToSqlTypes() to crash + // with a null dereference. An alternative fix is to change the Loader to handle the null. I'm + // not sure which fix is the most appropriate. + // Legacy.FumTest.CompositeIDQuery() shows the bug if you remove the decrement below... + i--; } i++; @@ -67,22 +67,22 @@ } } - public void AdjustNamedParameterLocationsForQueryParameters(QueryParameters parameters) - { - foreach (int existingParameterLocation in parameters.FilteredParameterLocations) - { - foreach (ParameterInfo entry in _namedParameters.Values) - { - for (int index = 0; index < entry.SqlLocations.Length; index++) - { - if (entry.SqlLocations[index] >= existingParameterLocation) - { - entry.SqlLocations[index]++; - } - } - } - } - } + public void AdjustNamedParameterLocationsForQueryParameters(QueryParameters parameters) + { + foreach (int existingParameterLocation in parameters.FilteredParameterLocations) + { + foreach (ParameterInfo entry in _namedParameters.Values) + { + for (int index = 0; index < entry.SqlLocations.Length; index++) + { + if (entry.SqlLocations[index] >= existingParameterLocation) + { + entry.SqlLocations[index]++; + } + } + } + } + } public int GetOrdinalParameterSqlLocation(int ordinalPosition) { @@ -164,4 +164,4 @@ get { return _expectedType; } } } -} +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Param/PositionalParameterSpecification.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Parameters/PositionalParameterSpecification.cs 2009-04-30 23:40:57 UTC (rev 4219) +++ trunk/nhibernate/src/NHibernate/Param/PositionalParameterSpecification.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -2,7 +2,7 @@ using System.Data; using NHibernate.Type; -namespace NHibernate.Hql.Ast.ANTLR.Parameters +namespace NHibernate.Param { /// <summary> /// Parameter bind specification for an explicit positional (or ordinal) parameter. @@ -54,4 +54,4 @@ get { return _hqlPosition; } } } -} +} \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate/Util/NullableDictionary.cs (from rev 4219, trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/Util/NullableDictionary.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Util/NullableDictionary.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Util/NullableDictionary.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -0,0 +1,230 @@ +using System.Collections; +using System.Collections.Generic; + +namespace NHibernate.Util +{ + public class NullableDictionary<TKey, TValue> : IDictionary<TKey, TValue> + where TKey : class + { + private TValue _nullValue; + private bool _gotNullValue; + private readonly Dictionary<TKey, TValue> _dict = new Dictionary<TKey, TValue>(); + + public bool ContainsKey(TKey key) + { + if (key == null) + { + return _gotNullValue; + } + else + { + return _dict.ContainsKey(key); + } + } + + public void Add(TKey key, TValue value) + { + if (key == null) + { + _nullValue = value; + } + else + { + _dict[key] = value; + } + } + + public bool Remove(TKey key) + { + if (key == null) + { + if (_gotNullValue) + { + _nullValue = default(TValue); + _gotNullValue = false; + return true; + } + else + { + return false; + } + } + else + { + return _dict.Remove(key); + } + } + + public bool TryGetValue(TKey key, out TValue value) + { + if (key == null) + { + if (_gotNullValue) + { + value = _nullValue; + return true; + } + else + { + value = default(TValue); + return false; + } + } + else + { + return _dict.TryGetValue(key, out value); + } + } + + public TValue this[TKey key] + { + get + { + if (key == null) + { + return _nullValue; + } + else + { + TValue ret; + + _dict.TryGetValue(key, out ret); + + return ret; + } + } + set + { + if (key == null) + { + _nullValue = value; + _gotNullValue = true; + } + else + { + _dict[key] = value; + } + } + } + + public ICollection<TKey> Keys + { + get + { + if (_gotNullValue) + { + List<TKey> keys = new List<TKey>(_dict.Keys); + keys.Add(null); + return keys; + } + else + { + return _dict.Keys; + } + } + } + + public ICollection<TValue> Values + { + get + { + if (_gotNullValue) + { + List<TValue> values = new List<TValue>(_dict.Values); + values.Add(_nullValue); + return values; + } + else + { + return _dict.Values; + } + } + } + + public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator() + { + foreach (KeyValuePair<TKey, TValue> kvp in _dict) + { + yield return kvp; + } + + if (_gotNullValue) + { + yield return new KeyValuePair<TKey, TValue>(null, _nullValue); + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public void Add(KeyValuePair<TKey, TValue> item) + { + if (item.Key == null) + { + _nullValue = item.Value; + _gotNullValue = true; + } + else + { + _dict.Add(item.Key, item.Value); + } + } + + public void Clear() + { + _dict.Clear(); + _nullValue = default(TValue); + _gotNullValue = false; + } + + public bool Contains(KeyValuePair<TKey, TValue> item) + { + TValue val = default(TValue); + + if (TryGetValue(item.Key, out val)) + { + if (Equals(item.Value, val)) + { + return true; + } + return false; + } + else + { + return false; + } + } + + public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex) + { + throw new System.NotImplementedException(); + } + + public bool Remove(KeyValuePair<TKey, TValue> item) + { + throw new System.NotImplementedException(); + } + + public int Count + { + get + { + if (_gotNullValue) + { + return _dict.Count + 1; + } + else + { + return _dict.Count; + } + } + } + + public bool IsReadOnly + { + get { return false; } + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Util/StringHelper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Util/StringHelper.cs 2009-05-01 14:09:04 UTC (rev 4221) +++ trunk/nhibernate/src/NHibernate/Util/StringHelper.cs 2009-05-01 14:55:28 UTC (rev 4222) @@ -722,5 +722,17 @@ } return identifier; } + + public static string[] ParseFilterParameterName(string filterParameterName) + { + int dot = filterParameterName.IndexOf("."); + if (dot <= 0) + { + throw new ArgumentException("Invalid filter-parameter name format; the name should be a property path.", "filterParameterName"); + } + string filterName = filterParameterName.Substring(0, dot); + string parameterName = filterParameterName.Substring(dot + 1); + return new[] { filterName, parameterName }; + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |