public IsDescendantOfExpression(string propertyName, string value)
 {
     _propertyName = propertyName;
     _projection = NHibernate.Criterion.Projections.Property(_propertyName);
     _value = value;
     _typedValue = new TypedValue(NHibernateUtil.String, _value, EntityMode.Poco);
 }
예제 #2
0
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			TypedValue[] superTv = base.GetTypedValues(criteria, criteriaQuery);
			TypedValue[] result = new TypedValue[superTv.Length + 1];
			superTv.CopyTo(result, 1);
			result[0] = new TypedValue(GetTypes()[0], value, EntityMode.Poco);
			return result;
		}
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			TypedValue[] superTv = base.GetTypedValues(criteria, criteriaQuery);
			TypedValue[] result = new TypedValue[superTv.Length + 1];
			superTv.CopyTo(result, 1);
			result[0] = FirstTypedValue();
			return result;
		}
		/// <summary>
		/// Combines the <see cref="TypedValue"/> for the Left Hand Side and the 
		/// Right Hand Side of the Expression into one array.
		/// </summary>
		/// <returns>An array of <see cref="TypedValue"/>s.</returns>
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			TypedValue[] lhstv = _lhs.GetTypedValues(criteria, criteriaQuery);
			TypedValue[] rhstv = _rhs.GetTypedValues(criteria, criteriaQuery);
			TypedValue[] result = new TypedValue[lhstv.Length + rhstv.Length];
			Array.Copy(lhstv, 0, result, 0, lhstv.Length);
			Array.Copy(rhstv, 0, result, lhstv.Length, rhstv.Length);
			return result;
		}
예제 #5
0
		public LikeExpression(string propertyName, string value, char? escapeChar, bool ignoreCase)
		{
			this.projection = Projections.Property(propertyName);
			this.value = value;
			typedValue = new TypedValue(NHibernateUtil.String, this.value, EntityMode.Poco);

			this.escapeChar = escapeChar;
			this.ignoreCase = ignoreCase;
		}
예제 #6
0
		public void WhenTheTypeIsAnArray_ChoseTheDefaultComparer()
		{
			byte[] value = new byte[]{1,2,3};


			var tv = new TypedValue(NHibernateUtil.BinaryBlob, value, EntityMode.Poco);

			Assert.That(tv.Comparer, Is.TypeOf<TypedValue.DefaultComparer>());
		}
		public SQLCriterion(SqlString sql, object[] values, IType[] types)
		{
			_sql = sql;
			_typedValues = new TypedValue[values.Length];
			for (int i = 0; i < _typedValues.Length; i++)
			{
				_typedValues[i] = new TypedValue(types[i], values[i], EntityMode.Poco);
			}
		}
		/// <summary>
		/// Combines the <see cref="TypedValue"/> for the Left Hand Side and the 
		/// Right Hand Side of the Expression into one array.
		/// </summary>
		/// <param name="sessionFactory">The ISessionFactory to get the Persistence information from.</param>
		/// <param name="persistentClass">The Type we are constructing the Expression for.</param>
		/// <returns>An arry of <see cref="TypedValue"/>s.</returns>
		public override TypedValue[ ] GetTypedValues( ISessionFactoryImplementor sessionFactory, System.Type persistentClass, IDictionary aliasClasses )
		{
			TypedValue[ ] lhstv = _lhs.GetTypedValues( sessionFactory, persistentClass, aliasClasses );
			TypedValue[ ] rhstv = _rhs.GetTypedValues( sessionFactory, persistentClass, aliasClasses );
			TypedValue[ ] result = new TypedValue[lhstv.Length + rhstv.Length];
			Array.Copy( lhstv, 0, result, 0, lhstv.Length );
			Array.Copy( rhstv, 0, result, lhstv.Length, rhstv.Length );
			return result;
		}
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			InitializeInnerQueryAndParameters(criteriaQuery);
			IType[] paramTypes = parameters.PositionalParameterTypes;
			Object[] values = parameters.PositionalParameterValues;
			TypedValue[] tv = new TypedValue[paramTypes.Length];
			for (int i = 0; i < paramTypes.Length; i++)
			{
				tv[i] = new TypedValue(paramTypes[i], values[i]);
			}
			return tv;
		}
예제 #10
0
		public void EqualsCollection()
		{
			ArrayList value1 = new ArrayList();
			value1.Add(10);
			value1.Add(20);

			ArrayList value2 = (ArrayList) value1.Clone();

			TypedValue t1 = new TypedValue(NHibernateUtil.Int32, value1, EntityMode.Poco);
			TypedValue t2 = new TypedValue(NHibernateUtil.Int32, value2, EntityMode.Poco);

			Assert.IsTrue(t1.Equals(t2));
		}
		public void GetTypedValues() 
		{
			TypedValue[] typedValues = _conjunction.GetTypedValues( factoryImpl, typeof(Simple), BaseExpressionFixture.EmptyAliasClasses );

			TypedValue[] expectedTV = new TypedValue[2];
			expectedTV[0] = new TypedValue(NHibernateUtil.Int32, 5);
			expectedTV[1] = new TypedValue(NHibernateUtil.Int32, 10);

			Assert.AreEqual(2, typedValues.Length);

			for(int i=0; i<typedValues.Length; i++) 
			{
				Assert.AreEqual(expectedTV[i].Type, typedValues[i].Type);
				Assert.AreEqual(expectedTV[i].Value, typedValues[i].Value);
			}
		}
		public void GetTypedValues()
		{
			TypedValue[] typedValues;
			using (ISession session = factory.OpenSession())
			{
				CreateObjects(typeof(Simple), session);
				typedValues = _conjunction.GetTypedValues(criteria, criteriaQuery);
			}

			TypedValue[] expectedTV = new TypedValue[2];
			expectedTV[0] = new TypedValue(NHibernateUtil.Int32, 5, EntityMode.Poco);
			expectedTV[1] = new TypedValue(NHibernateUtil.Int32, 10, EntityMode.Poco);

			Assert.AreEqual(2, typedValues.Length);

			for (int i = 0; i < typedValues.Length; i++)
			{
				Assert.AreEqual(expectedTV[i].Type, typedValues[i].Type);
				Assert.AreEqual(expectedTV[i].Value, typedValues[i].Value);
			}
		}
		public Parameter CreateTakeParameter(int value)
		{
			var typedValue = new TypedValue(NHibernateUtil.Int32, value, EntityMode.Poco);
			return NewQueryParameter("take_",typedValue).Single();
		}
		private IEnumerable<Parameter> NewQueryParameter(string parameterPrefix, TypedValue parameter)
		{
			string parameterName = parameterPrefix + CollectedParameterSpecifications.Count;
			var specification = new CriteriaNamedParameterSpecification(parameterName, parameter.Type);
			collectedParameterSpecifications.Add(specification);
			namedParameters.Add(new NamedParameter(parameterName, parameter.Value, parameter.Type));
			return specification.GetIdsForBackTrack(Factory).Select(x =>
																	{
																		Parameter p = Parameter.Placeholder;
																		p.BackTrack = x;
																		return p;
																	});
		}
		public IEnumerable<Parameter> NewQueryParameter(TypedValue parameter)
		{
			// the queryTranslatorId is to avoid possible conflicts using sub-queries
			const string parameterPrefix = "cp";
			return NewQueryParameter(parameterPrefix, parameter);
		}
		public IDetachedQuery SetParameterList(string name, ICollection vals, Type.IType type)
		{
			if (string.IsNullOrEmpty(name))
				throw new ArgumentNullException("name", "Is null or empty.");
			namedListParams[name] = new TypedValue(type, vals, EntityMode.Poco);
			return this;
		}
		public IDetachedQuery SetParameter(int position, object val, Type.IType type)
		{
			posParams[position] = new TypedValue(type, val, EntityMode.Poco);
			return this;
		}
 public IsDescendantOfExpression(IProjection projection, string value)
 {
     _projection = projection;
     _value = value;
     _typedValue = new TypedValue(NHibernateUtil.String, _value, EntityMode.Poco);
 }
예제 #19
0
		public LikeExpression(IProjection projection, string value, MatchMode matchMode)
		{
			this.projection = projection;
			this.value = matchMode.ToMatchString(value);
			typedValue = new TypedValue(NHibernateUtil.String, this.value, EntityMode.Poco);
		}
예제 #20
0
		public AddNumberProjection(string propertyName, int numberToAdd)
		{
			this.propertyName = propertyName;
			this.numberToAdd = numberToAdd;
			typedValue = new TypedValue(NHibernateUtil.Int32, this.numberToAdd, EntityMode.Poco);
		}
		private string BindParameterList( string queryString, string name, TypedValue typedList, IDictionary namedParams )
		{
			ICollection vals = ( ICollection ) typedList.Value;
			IType type = typedList.Type;
			StringBuilder list = new StringBuilder( 16 );
			int i = 0;
			foreach( object obj in vals )
			{
				string alias = name + i++ + StringHelper.Underscore;
				namedParams.Add( alias, new TypedValue( type, obj ) );
				list.Append( ParserHelper.HqlVariablePrefix + alias );
				if( i < vals.Count )
				{
					list.Append( StringHelper.CommaSpace );
				}
			}

			return StringHelper.Replace( queryString, ParserHelper.HqlVariablePrefix + name, list.ToString() );
		}
		public void AddUsedTypedValues(TypedValue[] values)
		{
			if (values != null)
			{
				if (outerQueryTranslator != null)
				{
					outerQueryTranslator.AddUsedTypedValues(values);
				}
				else
				{
					usedTypedValues.AddRange(values);
				}
			}
		}
예제 #23
0
		public ConstantProjection(object value, IType type)
		{
			this.value = value;
			typedValue = new TypedValue(type, this.value, EntityMode.Poco);
		}
		/// <summary>
		/// 
		/// </summary>
		/// <param name="name"></param>
		/// <param name="val"></param>
		/// <param name="type"></param>
		/// <returns></returns>
		public IQuery SetParameter( string name, object val, IType type )
		{
			namedParameters[ name ] = new TypedValue( type, val );
			return this;
		}