Exemple #1
0
        private bool ResolveAsNakedComponentPropertyRefRhs(DotNode parent)
        {
            FromElement fromElement = LocateSingleFromElement();

            if (fromElement == null)
            {
                return(false);
            }

            IType  propertyType;
            string propertyPath = parent.GetLhs().Text + "." + Text;

            try
            {
                // check to see if our "propPath" actually
                // represents a property on the persister
                propertyType = fromElement.GetPropertyType(Text, propertyPath);
            }
            catch (Exception)
            {
                // assume we do *not* refer to a property on the given persister
                return(false);
            }

            FromElement = fromElement;
            // this piece is needed for usage in select clause
            DataType = propertyType;

            _nakedPropertyRef = true;

            return(true);
        }
Exemple #2
0
        private IType GetNakedPropertyType(FromElement fromElement)
        {
            if (fromElement == null)
            {
                return(null);
            }

            string property     = OriginalText;
            IType  propertyType = null;

            try
            {
                propertyType = fromElement.GetPropertyType(property, property);
            }
            catch (Exception)
            {
            }
            return(propertyType);
        }
Exemple #3
0
        private bool ResolveAsNakedComponentPropertyRefLhs(DotNode parent)
        {
            FromElement fromElement = LocateSingleFromElement();

            if (fromElement == null)
            {
                return(false);
            }

            IType componentType = GetNakedPropertyType(fromElement);

            if (componentType == null)
            {
                throw new QueryException("Unable to resolve path [" + parent.Path + "], unexpected token [" + OriginalText + "]");
            }
            if (!componentType.IsComponentType)
            {
                throw new QueryException("Property '" + OriginalText + "' is not a component.  Use an alias to reference associations or collections.");
            }

            IType  propertyType;              // used to set the type of the parent dot node
            string propertyPath = Text + "." + NextSibling.Text;

            try
            {
                // check to see if our "propPath" actually
                // represents a property on the persister
                propertyType = fromElement.GetPropertyType(Text, propertyPath);
            }
            catch (Exception)
            {
                // assume we do *not* refer to a property on the given persister
                return(false);
            }

            FromElement         = fromElement;
            parent.PropertyPath = propertyPath;
            parent.DataType     = propertyType;

            return(true);
        }
Exemple #4
0
        public void ResolveCollectionProperty(IASTNode expr)
        {
            String propertyName = CollectionProperties.GetNormalizedPropertyName(_methodName);

            if (expr is FromReferenceNode)
            {
                FromReferenceNode collectionNode = ( FromReferenceNode )expr;
                // If this is 'elements' then create a new FROM element.
                if (CollectionPropertyNames.Elements == propertyName)
                {
                    HandleElements(collectionNode, propertyName);
                }
                else
                {
                    // Not elements(x)
                    _fromElement   = collectionNode.FromElement;
                    DataType       = _fromElement.GetPropertyType(propertyName, propertyName);
                    _selectColumns = _fromElement.ToColumns(_fromElement.TableAlias, propertyName, _inSelect);
                }
                if (collectionNode is DotNode)
                {
                    PrepareAnyImplicitJoins(( DotNode )collectionNode);
                }
                if (!_inSelect)
                {
                    _fromElement.Text             = "";
                    _fromElement.UseWhereFragment = false;
                }

                PrepareSelectColumns(_selectColumns);
                Text = _selectColumns[0];
                Type = HqlSqlWalker.SQL_TOKEN;
            }
            else
            {
                throw new SemanticException(
                          "Unexpected expression " + expr +
                          " found for collection function " + propertyName
                          );
            }
        }
Exemple #5
0
        public void ResolveCollectionProperty(IASTNode expr)
        {
            var propertyName = CollectionProperties.GetNormalizedPropertyName(_methodName);

            var collectionNode = expr as FromReferenceNode;

            if (collectionNode == null)
            {
                throw new SemanticException(string.Format("Unexpected expression {0} found for collection function {1}", expr, propertyName));
            }

            // If this is 'elements' then create a new FROM element.
            if (CollectionPropertyNames.Elements == propertyName)
            {
                HandleElements(collectionNode, propertyName);
            }
            else
            {
                // Not elements(x)
                _fromElement   = collectionNode.FromElement;
                DataType       = _fromElement.GetPropertyType(propertyName, propertyName);
                _selectColumns = _fromElement.ToColumns(_fromElement.TableAlias, propertyName, _inSelect);
            }
            var dotNode = collectionNode as DotNode;

            if (dotNode != null)
            {
                PrepareAnyImplicitJoins(dotNode);
            }
            if (!_inSelect)
            {
                _fromElement.Text             = "";
                _fromElement.UseWhereFragment = false;
            }

            PrepareSelectColumns(_selectColumns);
            Text = _selectColumns[0];
            Type = HqlSqlWalker.SQL_TOKEN;
        }
Exemple #6
0
        private IType GetDataType()
        {
            if (DataType == null)
            {
                FromElement fromElement = GetLhs().FromElement;

                if (fromElement == null)
                {
                    return(null);
                }

                // If the lhs is a collection, use CollectionPropertyMapping
                IType propertyType = fromElement.GetPropertyType(_propertyName, _propertyPath);
                if (Log.IsDebugEnabled)
                {
                    Log.Debug("getDataType() : " + _propertyPath + " -> " + propertyType);
                }

                DataType = propertyType;
            }

            return(DataType);
        }
		public void ResolveCollectionProperty(IASTNode expr)
		{
			String propertyName = CollectionProperties.GetNormalizedPropertyName( _methodName );

			if ( expr is FromReferenceNode ) 
			{
				FromReferenceNode collectionNode = ( FromReferenceNode ) expr;
				// If this is 'elements' then create a new FROM element.
				if ( CollectionPropertyNames.Elements == propertyName ) 
				{
					HandleElements( collectionNode, propertyName );
				}
				else {
					// Not elements(x)
					_fromElement = collectionNode.FromElement;
					DataType = _fromElement.GetPropertyType( propertyName, propertyName );
					_selectColumns = _fromElement.ToColumns( _fromElement.TableAlias, propertyName, _inSelect );
				}
				if ( collectionNode is DotNode ) 
				{
					PrepareAnyImplicitJoins( ( DotNode ) collectionNode );
				}
				if ( !_inSelect ) 
				{
					_fromElement.Text = "";
					_fromElement.UseWhereFragment = false;
				}

				PrepareSelectColumns( _selectColumns );
				Text = _selectColumns[0];
				Type = HqlSqlWalker.SQL_TOKEN;
			}
			else 
			{
				throw new SemanticException( 
						"Unexpected expression " + expr + 
						" found for collection function " + propertyName 
					);
			}
		}
		private IType GetNakedPropertyType(FromElement fromElement)
		{
			if (fromElement == null)
			{
				return null;
			}

			string property = OriginalText;
			IType propertyType = null;

			try
			{
				propertyType = fromElement.GetPropertyType(property, property);
			}
			catch (Exception)
			{
			}
			return propertyType;
		}
		public void ResolveCollectionProperty(IASTNode expr)
		{
			var propertyName = CollectionProperties.GetNormalizedPropertyName( _methodName );

			var collectionNode = expr as FromReferenceNode;
			if (collectionNode == null)
				throw new SemanticException(string.Format("Unexpected expression {0} found for collection function {1}", expr, propertyName));

			// If this is 'elements' then create a new FROM element.
			if (CollectionPropertyNames.Elements == propertyName)
			{
				HandleElements(collectionNode, propertyName);
			}
			else
			{
				// Not elements(x)
				_fromElement = collectionNode.FromElement;
				DataType = _fromElement.GetPropertyType(propertyName, propertyName);
				_selectColumns = _fromElement.ToColumns(_fromElement.TableAlias, propertyName, _inSelect);
			}
			var dotNode = collectionNode as DotNode;
			if (dotNode != null)
			{
				PrepareAnyImplicitJoins(dotNode);
			}
			if (!_inSelect)
			{
				_fromElement.Text = "";
				_fromElement.UseWhereFragment = false;
			}

			PrepareSelectColumns(_selectColumns);
			Text = _selectColumns[0];
			Type = HqlSqlWalker.SQL_TOKEN;
		}