Exemplo n.º 1
0
        public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection <Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor)
        {
            /*
             * HqlDot hqlDot = (HqlDot)visitor.Visit(arguments[0]).AsExpression();
             * List<HqlTreeNode> hqlTreeNodes = hqlDot.Children.ToList();
             *
             * FieldInfo fieldInfo = typeof(HqlTreeNode).GetField("_node", BindingFlags.NonPublic | BindingFlags.Instance);
             *
             * HqlIdent node1 = (HqlIdent)hqlTreeNodes[0];
             * IASTNode tableNode = (IASTNode)fieldInfo.GetValue(node1);
             * string tableText = tableNode.Text;
             *
             * HqlIdent node2 = (HqlIdent)hqlTreeNodes[1];
             * IASTNode columnNode = (IASTNode)fieldInfo.GetValue(node2);
             * string columnText = columnNode.Text;
             *
             * string format = string.Format("{0}.{1} (+)", tableText, columnText);
             *
             * //return treeBuilder.AnyValueConstant(format);
             * return treeBuilder.AnyValueConstant("customer1_.ID (+)");
             */


            HqlAnyValueConstant expression0 = treeBuilder.AnyValueConstant("+");
            HqlExpression       expression1 = visitor.Visit(arguments[0]).AsExpression();

            List <HqlExpression> expressions = new List <HqlExpression>();

            expressions.Add(expression0);
            expressions.Add(expression1);
            return(treeBuilder.BooleanMethodCall("", expressions));



            //treeBuilder.Equality();
            //HqlMethodCall leftSign = treeBuilder.MethodCall("", treeBuilder.Plus());

            /*
             * return expression2;
             *
             * HqlDot dot = (HqlDot) expression2;
             * //return treeBuilder.AnyValueConstant(" ", expression1, expression2);
             * return expression1;
             *
             * /*
             * return expression2;
             */
            //return leftSign;
            //return treeBuilder.Space(leftSign, );
        }