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); } }
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); } }
protected override void DoProcess(SQLProcessorAggregator aggregator, Negation obj, StringBuilder builder, Boolean negationActive) { if (!obj.NegatedExpression.IsEmpty()) { aggregator.Process(obj.NegatedExpression, builder, !negationActive); } }
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); } }
protected override void DoProcess(SQLProcessorAggregator aggregator, RegularViewSpecification obj, StringBuilder builder) { if (obj.Columns != null) { aggregator.Process(obj.Columns, builder); } }
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); } }
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); }
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); } }
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); } }
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); } } }
public void Process(SQLProcessorAggregator aggregator, Object obj, StringBuilder builder, Boolean negationActive) { if (obj != null) { this.DoProcess(aggregator, (T)obj, builder); } }
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); }
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); }
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); } }
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); }
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); } }
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); }
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); }
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); } }
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); } }
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); } }
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); } }
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); } }
protected override void DoProcess(SQLProcessorAggregator aggregator, T obj, StringBuilder builder) { if (obj.ColumnNames != null) { aggregator.Process(obj.ColumnNames, builder); } this.DoProcessColumnSource(aggregator, obj, builder); }
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); } }
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); }
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); }
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); }
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); }
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); } }