Ejemplo n.º 1
0
        protected override void DoProcess(SQLProcessorAggregator aggregator, BinaryPredicate obj, StringBuilder builder, Boolean negationActive)
        {
            var currentIsQuery = BinaryArithmeticExpressionProcessor.ExpressionIsQuery(obj.Left);

            if (currentIsQuery)
            {
                builder.Append(SQLConstants.OPEN_PARENTHESIS);
            }
            aggregator.Process(obj.Left, builder);
            if (currentIsQuery)
            {
                builder.Append(SQLConstants.CLOSE_PARENTHESIS);
            }
            builder.Append(SQLConstants.TOKEN_SEPARATOR).Append(negationActive ? this._negatedOperator : this._operator).Append(SQLConstants.TOKEN_SEPARATOR);
            currentIsQuery = BinaryArithmeticExpressionProcessor.ExpressionIsQuery(obj.Right);
            if (currentIsQuery)
            {
                builder.Append(SQLConstants.OPEN_PARENTHESIS);
            }
            aggregator.Process(obj.Right, builder);
            if (currentIsQuery)
            {
                builder.Append(SQLConstants.CLOSE_PARENTHESIS);
            }
        }
Ejemplo n.º 2
0
        protected override void DoProcess(SQLProcessorAggregator aggregator, UnaryPredicate <ValueExpression> obj, StringBuilder builder, Boolean negationActive)
        {
            var op = negationActive ? this._negatedOperator : this._operator;

            if (UnaryOperatorOrientation.BeforeExpression == this._orientation)
            {
                builder.Append(op).Append(SQLConstants.TOKEN_SEPARATOR);
            }
            var exp     = obj.Expression;
            var isQuery = exp is QueryExpression;

            if (isQuery)
            {
                builder.Append(SQLConstants.OPEN_PARENTHESIS);
            }
            aggregator.Process(exp, builder);
            if (isQuery)
            {
                builder.Append(SQLConstants.CLOSE_PARENTHESIS);
            }

            if (UnaryOperatorOrientation.AfterExpression == this._orientation)
            {
                builder.Append(SQLConstants.TOKEN_SEPARATOR).Append(op);
            }
        }
Ejemplo n.º 3
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, Negation obj, StringBuilder builder, Boolean negationActive)
 {
     if (!obj.NegatedExpression.IsEmpty())
     {
         aggregator.Process(obj.NegatedExpression, builder, !negationActive);
     }
 }
Ejemplo n.º 4
0
        protected override void DoProcess(SQLProcessorAggregator aggregator, MultiPredicate obj, StringBuilder builder, Boolean negationActive)
        {
            aggregator.Process(obj.Left, builder);
            builder.Append(SQLConstants.TOKEN_SEPARATOR).Append(negationActive ? this._negatedOperator : this._operator).Append(SQLConstants.TOKEN_SEPARATOR);
            if (this._needParenthesis)
            {
                builder.Append(SQLConstants.OPEN_PARENTHESIS);
            }

            ProcessorUtils.AppendEnumerable(aggregator, builder, obj.Rights, this._separator, (agg, b, exp) =>
            {
                var isQuery = exp is QueryExpression;
                if (isQuery)
                {
                    b.Append(SQLConstants.OPEN_PARENTHESIS);
                }
                agg.Process(exp, b);
                if (isQuery)
                {
                    b.Append(SQLConstants.CLOSE_PARENTHESIS);
                }
            });

            if (this._needParenthesis)
            {
                builder.Append(SQLConstants.CLOSE_PARENTHESIS);
            }
        }
Ejemplo n.º 5
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, RegularViewSpecification obj, StringBuilder builder)
 {
     if (obj.Columns != null)
     {
         aggregator.Process(obj.Columns, builder);
     }
 }
Ejemplo n.º 6
0
        protected virtual void ProcessOffsetAndLimit(SQLProcessorAggregator aggregator, NonBooleanExpression offset, NonBooleanExpression limit, StringBuilder builder)
        {
            NonBooleanExpression first, second;
            var offsetBeforeLimit = this.IsOffsetBeforeLimit(aggregator.SQLVendor);

            if (offsetBeforeLimit)
            {
                first  = offset;
                second = limit;
            }
            else
            {
                first  = limit;
                second = offset;
            }

            if (first != null)
            {
                builder.Append(SQLConstants.NEWLINE);
                this.ProcessOffsetOrLimit(aggregator, builder, first, offsetBeforeLimit);
            }

            if (second != null)
            {
                builder.Append(SQLConstants.NEWLINE);
                this.ProcessOffsetOrLimit(aggregator, builder, second, !offsetBeforeLimit);
            }
        }
Ejemplo n.º 7
0
        protected override void DoProcess(SQLProcessorAggregator aggregator, BinaryArithmeticExpression obj, StringBuilder builder)
        {
            builder.Append(SQLConstants.OPEN_PARENTHESIS);

            var currentIsQuery = ExpressionIsQuery(obj.Left);

            if (currentIsQuery)
            {
                builder.Append(SQLConstants.OPEN_PARENTHESIS);
            }
            aggregator.Process(obj.Left, builder);
            if (currentIsQuery)
            {
                builder.Append(SQLConstants.CLOSE_PARENTHESIS);
            }
            builder.Append(SQLConstants.TOKEN_SEPARATOR);
            this.ProcessArithmeticExpression(obj, builder);
            builder.Append(SQLConstants.TOKEN_SEPARATOR);

            currentIsQuery = ExpressionIsQuery(obj.Right);
            if (currentIsQuery)
            {
                builder.Append(SQLConstants.OPEN_PARENTHESIS);
            }
            aggregator.Process(obj.Right, builder);
            if (currentIsQuery)
            {
                builder.Append(SQLConstants.CLOSE_PARENTHESIS);
            }
            builder.Append(SQLConstants.CLOSE_PARENTHESIS);
        }
Ejemplo n.º 8
0
 public static void ProcessOptionalBooleanExpresssion(SQLProcessorAggregator aggregator, StringBuilder builder, BooleanExpression expression, String prefix, String name)
 {
     if (expression != null && !expression.IsEmpty())
     {
         ProcessNonOptional(aggregator, expression, builder, prefix, name);
     }
 }
Ejemplo n.º 9
0
 public static void ProcessOptional(SQLProcessorAggregator aggregator, ObjectWithVendor obj, StringBuilder builder, Boolean negationActive, String prefix, String name)
 {
     if (obj != null)
     {
         ProcessNonOptional(aggregator, obj, builder, prefix, name);
     }
 }
Ejemplo n.º 10
0
        public static void ProcessBinaryComposedBooleanExpression(SQLProcessorAggregator aggregator, StringBuilder builder, Boolean negationActive, String op, BooleanExpression left, BooleanExpression right)
        {
            var leftEmpty  = left.IsEmpty();
            var rightEmpty = right.IsEmpty();

            if (!leftEmpty || !rightEmpty)
            {
                if (negationActive)
                {
                    builder.Append(SQLConstants.NOT);
                }
                var oneEmpty          = leftEmpty || rightEmpty;
                var parenthesisNeeded = !oneEmpty || negationActive;
                if (parenthesisNeeded)
                {
                    builder.Append(SQLConstants.OPEN_PARENTHESIS);
                }
                aggregator.Process(left, builder);

                if (!oneEmpty)
                {
                    builder.Append(SQLConstants.TOKEN_SEPARATOR);
                    builder.Append(op);
                    builder.Append(SQLConstants.TOKEN_SEPARATOR);
                }
                aggregator.Process(right, builder);
                if (parenthesisNeeded)
                {
                    builder.Append(SQLConstants.CLOSE_PARENTHESIS);
                }
            }
        }
Ejemplo n.º 11
0
 public void Process(SQLProcessorAggregator aggregator, Object obj, StringBuilder builder, Boolean negationActive)
 {
     if (obj != null)
     {
         this.DoProcess(aggregator, (T)obj, builder);
     }
 }
Ejemplo n.º 12
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, InsertStatement obj, StringBuilder builder)
 {
     builder.Append("INSERT INTO ");
     aggregator.Process(obj.TableName, builder);
     builder.Append(SQLConstants.TOKEN_SEPARATOR);
     aggregator.Process(obj.ColumnSource, builder);
 }
Ejemplo n.º 13
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, UnaryArithmeticExpression obj, StringBuilder builder)
 {
     this.ProcessArithmeticExpression(obj, builder);
     builder.Append(SQLConstants.OPEN_PARENTHESIS);
     aggregator.Process(obj.Expression, builder);
     builder.Append(SQLConstants.CLOSE_PARENTHESIS);
 }
Ejemplo n.º 14
0
        protected virtual void ProcessOffsetOrLimit(SQLProcessorAggregator aggregator, StringBuilder builder, NonBooleanExpression expr, Boolean isOffset)
        {
            var prefix = isOffset ? this.GetOffsetPrefix(aggregator.SQLVendor) : this.GetLimitPrefix(aggregator.SQLVendor);

            if (prefix != null)
            {
                builder.Append(prefix).Append(SQLConstants.TOKEN_SEPARATOR);
            }
            var isComplex = !(expr is LiteralExpression);

            if (isComplex)
            {
                builder.Append(SQLConstants.OPEN_PARENTHESIS + SQLConstants.NEWLINE);
            }
            aggregator.Process(expr, builder);
            if (isComplex)
            {
                builder.Append(SQLConstants.CLOSE_PARENTHESIS);
            }
            var postfix = isOffset ? this.GetOffsetPostfix(aggregator.SQLVendor) : this.GetLimitPostfix(aggregator.SQLVendor);

            if (postfix != null)
            {
                builder.Append(SQLConstants.TOKEN_SEPARATOR).Append(postfix);
            }
        }
Ejemplo n.º 15
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, AlterTableStatement obj, StringBuilder builder)
 {
     builder.Append("ALTER TABLE ");
     aggregator.Process(obj.TableName, builder);
     builder.Append(SQLConstants.NEWLINE);
     aggregator.Process(obj.AlterAction, builder);
 }
Ejemplo n.º 16
0
        protected override void DoProcess(SQLProcessorAggregator aggregator, QueryExpressionBodyBinary obj, StringBuilder builder)
        {
            var leftIsNonEmpty = !aggregator.SQLVendor.QueryFactory.Empty.Equals(obj.Left);

            if (leftIsNonEmpty)
            {
                builder.Append(SQLConstants.OPEN_PARENTHESIS);
                aggregator.Process(obj.Left, builder);
                builder
                .Append(SQLConstants.CLOSE_PARENTHESIS + SQLConstants.NEWLINE)
                .Append(this._setOperations[obj.SetOperation])
                .Append(SQLConstants.TOKEN_SEPARATOR);
                this.ProcessSetQuantifier(obj.SetQuantifier, builder);

                var spec = obj.CorrespondingSpec;
                if (spec != null)
                {
                    builder.Append(SQLConstants.TOKEN_SEPARATOR);
                    aggregator.Process(spec, builder);
                }

                builder.Append(SQLConstants.NEWLINE + SQLConstants.OPEN_PARENTHESIS);
            }

            aggregator.Process(obj.Right, builder);

            if (leftIsNonEmpty)
            {
                builder.Append(SQLConstants.CLOSE_PARENTHESIS);
            }
        }
Ejemplo n.º 17
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, T obj, StringBuilder builder)
 {
     builder.Append(SQLConstants.SELECT + SQLConstants.TOKEN_SEPARATOR);
     this.ProcessSetQuantifier(obj.SetQuantifier, builder);
     builder.Append(SQLConstants.TOKEN_SEPARATOR);
     this.DoProcessSelectColumns(aggregator, obj, builder);
 }
Ejemplo n.º 18
0
 protected override void DoProcessJoinedTable(SQLProcessorAggregator aggregator, NaturalJoinedTable obj, StringBuilder builder)
 {
     builder.Append(" NATURAL ");
     this.ProcessJoinType(obj.JoinType, builder);
     builder.Append(SQLConstants.TOKEN_SEPARATOR);
     aggregator.Process(obj.Right, builder);
 }
Ejemplo n.º 19
0
 protected virtual void ProcessTableAlias(SQLProcessorAggregator aggregator, TableAlias alias, StringBuilder builder)
 {
     builder.Append(SQLConstants.TOKEN_SEPARATOR + SQLConstants.ALIAS_DEFINER + SQLConstants.TOKEN_SEPARATOR).Append(alias.TableAlias);
     if (alias.ColumnAliases != null)
     {
         aggregator.Process(alias.ColumnAliases, builder);
     }
 }
Ejemplo n.º 20
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, T obj, StringBuilder builder)
 {
     this.DoProcessTableReferencePrimary(aggregator, obj, builder);
     if (obj.TableAlias != null)
     {
         this.ProcessTableAlias(aggregator, obj.TableAlias, builder);
     }
 }
Ejemplo n.º 21
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, OrderByClause obj, StringBuilder builder)
 {
     if (obj.OrderingColumns.Length > 0)
     {
         builder.Append(SQLConstants.NEWLINE + SQLConstants.ORDER_BY + SQLConstants.TOKEN_SEPARATOR);
         ProcessorUtils.AppendEnumerable(aggregator, builder, obj.OrderingColumns, SQLConstants.COMMA + SQLConstants.TOKEN_SEPARATOR);
     }
 }
Ejemplo n.º 22
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, GroupByClause obj, StringBuilder builder)
 {
     if (obj.GroupingElements.Length > 0)
     {
         builder.Append(SQLConstants.NEWLINE + SQLConstants.GROUP_BY + SQLConstants.TOKEN_SEPARATOR);
         ProcessorUtils.AppendEnumerable(aggregator, builder, obj.GroupingElements, SQLConstants.COMMA + SQLConstants.TOKEN_SEPARATOR);
     }
 }
Ejemplo n.º 23
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, FromClause obj, StringBuilder builder)
 {
     if (obj.TableReferences.Length > 0)
     {
         builder.Append(SQLConstants.NEWLINE + SQLConstants.FROM + SQLConstants.TOKEN_SEPARATOR);
         ProcessorUtils.AppendEnumerable(aggregator, builder, obj.TableReferences, SQLConstants.COMMA + SQLConstants.TOKEN_SEPARATOR);
     }
 }
Ejemplo n.º 24
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, T obj, StringBuilder builder)
 {
     if (obj.ColumnNames != null)
     {
         aggregator.Process(obj.ColumnNames, builder);
     }
     this.DoProcessColumnSource(aggregator, obj, builder);
 }
Ejemplo n.º 25
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, SQLDTFloat obj, StringBuilder builder)
 {
     builder.Append(SQLConstants.FLOAT);
     if (obj.Precision.HasValue)
     {
         builder.Append(SQLConstants.OPEN_PARENTHESIS).Append(obj.Precision.Value).Append(SQLConstants.CLOSE_PARENTHESIS);
     }
 }
Ejemplo n.º 26
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, ColumnReferenceByName obj, StringBuilder builder)
 {
     if (!String.IsNullOrEmpty(obj.TableName))
     {
         builder.Append(obj.TableName).Append(SQLConstants.TABLE_COLUMN_SEPARATOR);
     }
     builder.Append(obj.ColumnName);
 }
Ejemplo n.º 27
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, UpdateBySearch obj, StringBuilder builder)
 {
     builder.Append("UPDATE ");
     aggregator.Process(obj.TargetTable, builder);
     builder.Append(SQLConstants.NEWLINE).Append("SET ");
     ProcessorUtils.AppendEnumerable(aggregator, builder, obj.SetClauses, SQLConstants.COMMA + SQLConstants.TOKEN_SEPARATOR);
     ProcessorUtils.ProcessOptionalBooleanExpresssion(aggregator, builder, obj.Condition, SQLConstants.NEWLINE, SQLConstants.WHERE);
 }
Ejemplo n.º 28
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, TName obj, StringBuilder builder)
 {
     if (!String.IsNullOrEmpty(obj.SchemaName))
     {
         builder.Append(obj.SchemaName).Append(SQLConstants.SCHEMA_TABLE_SEPARATOR);
     }
     this.DoProcessTableName(aggregator, obj, builder);
 }
Ejemplo n.º 29
0
 public static void ProcessNonOptional(SQLProcessorAggregator aggregator, ObjectWithVendor obj, StringBuilder builder, String prefix, String name)
 {
     builder.Append(prefix);
     if (name != null)
     {
         builder.Append(name).Append(SQLConstants.TOKEN_SEPARATOR);
     }
     aggregator.Process(obj, builder);
 }
Ejemplo n.º 30
0
 protected override void DoProcess(SQLProcessorAggregator aggregator, CorrespondingSpec obj, StringBuilder builder)
 {
     builder.Append("CORRESPONDING");
     if (obj.ColumnNames != null)
     {
         builder.Append(SQLConstants.TOKEN_SEPARATOR + "BY" + SQLConstants.TOKEN_SEPARATOR);
         aggregator.Process(obj.ColumnNames, builder);
     }
 }