コード例 #1
0
 /// <summary>
 /// Accept an expression visitor
 /// </summary>
 /// <param name="visitor">The expression visitor</param>
 public virtual void Accept(IExpressionVisitor visitor)
 {
     if (visitor == null)
     {
         throw new ArgumentNullException("visitor");
     }
     visitor.Visit(this);
 }
コード例 #2
0
 public override void Accept(IExpressionVisitor visitor)
 {
     Require.NotNull(visitor, "visitor");
     visitor.Visit(this);
 }
コード例 #3
0
 public override T Accept <T, C>(IExpressionVisitor <T, C> visitor, C context)
 {
     return(visitor.Visit(this, context));
 }
コード例 #4
0
ファイル: Expression.cs プロジェクト: kaktusan/plsqlparser
 protected virtual Expression Visit(IExpressionVisitor visitor)
 {
     return visitor.Visit(this);
 }
コード例 #5
0
ファイル: Integer.cs プロジェクト: bgrevelt/biPage
 public void Accept(IExpressionVisitor v)
 {
     v.Visit(this);
 }
コード例 #6
0
 public override TResult Accept <TResult, TContext>(
     IExpressionVisitor <TResult, TContext> visitor,
     TContext environment)
 {
     return(visitor.Visit(this, environment));
 }
コード例 #7
0
 //---------------------------------------------------------------------
 internal override T Accept <T>(IExpressionVisitor <T> visitor) => visitor.Visit(this);
コード例 #8
0
ファイル: Substitution.cs プロジェクト: asimpkins78/npeg
 public override void Accept <T>(IExpressionVisitor <T> visitor, T context)
 {
     visitor.Visit(this, context);
 }
コード例 #9
0
 public void Accept(IExpressionVisitor visitor) => visitor.Visit(this);
コード例 #10
0
 public void Visit(IExpressionVisitor visitor)
 {
     visitor.Visit(this);
 }
コード例 #11
0
        protected internal override void AcceptVisitor(IExpressionVisitor visitor)
        {
            EnsureArg.IsNotNull(visitor, nameof(visitor));

            visitor.Visit(this);
        }
コード例 #12
0
ファイル: Expressions.cs プロジェクト: orlfi/EasyDox
 void IExpression.Accept(IExpressionVisitor visitor)
 {
     visitor.Visit(this);
 }
コード例 #13
0
 public virtual TR Accept <TR>(IExpressionVisitor <TR> visitor, string context) =>
 visitor.Visit(this, context);
コード例 #14
0
        protected override void OnVisit(IExpressionVisitor visitor, UpsertStatement statement)
        {
            if (statement.Returning != null && statement.Returning.Table != null)
            {
                visitor.Visit(statement.Returning.Table);
            }

            const string SOURCE_ALIAS = "SRC";

            if (statement.Fields == null || statement.Fields.Count == 0)
            {
                throw new DataException("Missing required fields in the upsert statment.");
            }

            visitor.Output.Append("MERGE INTO ");
            visitor.Visit(statement.Table);
            visitor.Output.AppendLine(" USING (SELECT ");

            for (int i = 0; i < statement.Values.Count; i++)
            {
                if (i > 0)
                {
                    visitor.Output.Append(",");
                }

                visitor.Visit(statement.Values[i]);
            }

            visitor.Output.AppendLine(") AS " + SOURCE_ALIAS + " (");

            for (int i = 0; i < statement.Fields.Count; i++)
            {
                if (i > 0)
                {
                    visitor.Output.Append(",");
                }

                visitor.Output.Append(statement.Fields[i].Name);
            }

            visitor.Output.AppendLine(") ON");

            for (int i = 0; i < statement.Entity.Key.Length; i++)
            {
                var field = Metadata.DataEntityPropertyExtension.GetFieldName(statement.Entity.Key[i], out _);

                if (i > 0)
                {
                    visitor.Output.Append(" AND ");
                }

                if (string.IsNullOrEmpty(statement.Table.Alias))
                {
                    visitor.Output.Append($"{field}={SOURCE_ALIAS}.{field}");
                }
                else
                {
                    visitor.Output.Append($"{statement.Table.Alias}.{field}={SOURCE_ALIAS}.{field}");
                }
            }

            if (statement.Updation.Count > 0)
            {
                visitor.Output.AppendLine();
                visitor.Output.Append("WHEN MATCHED");

                if (statement.Where != null)
                {
                    visitor.Output.Append(" AND ");
                    visitor.Visit(statement.Where);
                }

                visitor.Output.AppendLine(" THEN");
                visitor.Output.Append("\tUPDATE SET ");

                int index = 0;

                foreach (var item in statement.Updation)
                {
                    if (index++ > 0)
                    {
                        visitor.Output.Append(",");
                    }

                    visitor.Visit(item.Field);
                    visitor.Output.Append("=");
                    visitor.Visit(item.Value);
                }
            }

            visitor.Output.AppendLine();
            visitor.Output.AppendLine("WHEN NOT MATCHED THEN");
            visitor.Output.Append("\tINSERT (");

            for (int i = 0; i < statement.Fields.Count; i++)
            {
                if (i > 0)
                {
                    visitor.Output.Append(",");
                }

                visitor.Output.Append(visitor.Dialect.GetIdentifier(statement.Fields[i]));
            }

            visitor.Output.Append(") VALUES (");

            for (int i = 0; i < statement.Fields.Count; i++)
            {
                if (i > 0)
                {
                    visitor.Output.Append(",");
                }

                visitor.Output.Append(SOURCE_ALIAS + "." + statement.Fields[i].Name);
            }

            visitor.Output.Append(")");

            //输出返回子句
            this.VisitReturning(visitor, statement.Returning);

            visitor.Output.AppendLine(";");
        }
コード例 #15
0
 public override void Accept(IExpressionVisitor visitor)
 {
     // using double dispatch
     visitor.Visit(this);
 }
コード例 #16
0
ファイル: Expression.cs プロジェクト: tsvmks/plsqlparser
 protected virtual Expression Visit(IExpressionVisitor visitor)
 {
     return(visitor.Visit(this));
 }
コード例 #17
0
 public virtual void Accept(IExpressionVisitor visitor)
 {
     visitor.Visit(this);
 }
コード例 #18
0
ファイル: LogicalAnd.cs プロジェクト: diepvriezer/ql
 public override T Accept <T>(IExpressionVisitor <T> visitor)
 {
     return(visitor.Visit(this));
 }
コード例 #19
0
 public R Accept <R, S>(IExpressionVisitor <R, S> visitor, S scope)
 {
     return(visitor.Visit(this, scope));
 }
コード例 #20
0
 public override TResult Accept <TResult>(IExpressionVisitor <TResult> visitor)
 {
     return(visitor.Visit(this));
 }
コード例 #21
0
 public void Accept(IExpressionVisitor <T> visitor)
 {
     visitor.Visit(this);
 }
コード例 #22
0
 public override void Accept(IExpressionVisitor visitor)
 {
     visitor.Visit(this);
 }
コード例 #23
0
 /// <summary>When overriden in a derived class, accepts the specified visitor.</summary>
 /// <param name="visitor">The visitor to accept.</param>
 protected override void AcceptCore(IExpressionVisitor visitor)
 {
     visitor.Visit(this);
 }
コード例 #24
0
 public override TR Accept <TR>(IExpressionVisitor <TR> visitor, string context) =>
 visitor.Visit(this, context);
コード例 #25
0
 public IExpression Accept(IExpressionVisitor visitor)
 {
     return(visitor.Visit(this));
 }
コード例 #26
0
 public override void Accept(IExpressionVisitor visitor)
 {
     Operand.Accept(visitor);
     visitor.Visit(this);
 }
コード例 #27
0
 public void Visit(IExpressionVisitor <TContext> visitor)
 {
     visitor.Visit(this);
 }
コード例 #28
0
 public override void Accept(IExpressionVisitor visitor)
 {
     visitor.Visit(this);
 }
コード例 #29
0
 public override T Accept <T>(IExpressionVisitor <T> checker)
 {
     return(checker.Visit(this));
 }
コード例 #30
0
		public virtual void Accept(IExpressionVisitor visitor)
		{
			visitor.Visit(this);
		}
コード例 #31
0
 /// <summary>
 /// Visits the <paramref name="visitor"/> based upon the type of the
 /// <see cref="IExpression"/>.
 /// </summary>
 /// <param name="visitor">The <see cref="IIntermediateTreeVisitor"/>
 /// to visit.</param>
 /// <remarks>In this instance visits the <paramref name="visitor"/>
 /// through <see cref="IExpressionVisitor.Visit(ITypeReferenceExpression)"/>.</remarks>
 /// <exception cref="System.ArgumentNullException">thrown when <paramref name="visitor"/>
 /// is null.</exception>
 public void Accept(IExpressionVisitor visitor)
 {
     //ToDo: Fix #2.
     visitor.Visit(this);
 }