Ejemplo n.º 1
0
 public object Translate(TranslationContext context, ASTNode node)
 {
     var result = new Model.CallExpression();
     result.Identifier = "IsNull"; // TODO: This is T-SQL dialect specific...
     result.Expressions.Add(context.TranslateNode(node.Children[0]));
     result.Expressions.Add(context.TranslateNode(node.Children[1]));
     return result;
 }
Ejemplo n.º 2
0
        public object Translate(TranslationContext context, ASTNode node)
        {
            // TODO: This is a T-SQL specific call
            var result =
                new Model.CallExpression
                (
                    "Convert",
                    new Model.Expression[]
                    {
                        new Model.IdentifierExpression("dateTime"),
                        new Model.CallExpression
                        (
                            "Floor",
                            new Model.Expression[]
                            {
                                new Model.CallExpression
                                (
                                    "Convert",
                                    new Model.Expression[]
                                    {
                                        new Model.IdentifierExpression("float"),
                                        SQLTranslationUtilities.EnsureExpression(context.TranslateNode(node.Children[0]))
                                    }
                                )
                            }
                        )
                    }
                );

            return result;
        }
Ejemplo n.º 3
0
        public object Translate(TranslationContext context, ASTNode node)
        {
            var result = new Model.CallExpression();
            result.Identifier = "Coalesce";

            foreach (var child in node.Children)
            {
                result.Expressions.Add(context.TranslateNode(child));
            }

            return result;
        }
Ejemplo n.º 4
0
        // Children
        // date
        // granularity
        // numberOfPeriods
        public object Translate(TranslationContext context, ASTNode node)
        {
            var result = new Model.CallExpression("DateAdd", new Model.Expression[] { }); // TODO: This is a T-SQL specific translation

            var granularity = node.Children[1];
            if (granularity.NodeType == "urn:hl7-org:v3:knowledgeartifact:r1:Literal") // TODO: Better story for this type of thing....
            {
                result.Expressions.Add(new Model.IdentifierExpression(granularity.GetAttribute<string>("value")));
            }
            else
            {
                throw new NotSupportedException("Date granularity argument to a DateAdd expression must be a literal because CREF does not support granularity as an argument, only as an attribute of the target DateAdd expression.");
            }

            var numberOfPeriods = node.Children[2];
            result.Expressions.Add(context.TranslateNode(numberOfPeriods));

            var date = node.Children[0];
            result.Expressions.Add(context.TranslateNode(date));

            return result;
        }
Ejemplo n.º 5
0
        public object Translate(TranslationContext context, ASTNode node)
        {
            // TODO: This is a T-SQL specific call
            var result =
                new Model.CallExpression
                (
                    "Convert",
                    new Model.Expression[]
                    {
                        new Model.IdentifierExpression("dateTime"),
                        new Model.CallExpression
                        (
                            "Floor",
                            new Model.Expression[]
                            {
                                new Model.CallExpression
                                (
                                    "Convert",
                                    new Model.Expression[]
                                    {
                                        new Model.IdentifierExpression("float"),
                                        new Model.CallExpression("GetDate", new Model.Expression[] { })
                                    }
                                )
                            }
                        )
                    }
                );

            return result;
        }