Ejemplo n.º 1
0
        /// <summary>
        /// Recupera uma consulta para a tradução do comando passsado.
        /// </summary>
        /// <param name="command">Comando que sera traduzido.</param>
        /// <returns></returns>
        public static SelectStatement P(ISelectStatementReferences references, string command)
        {
            if (references == null)
            {
                throw new ArgumentNullException("references");
            }
            Lexer  lex    = new Lexer(command);
            Parser parser = new Parser(lex);

            parser.Execute();
            return(new SelectStatement(references, parser));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Recupera as informações contidas dentro da clausula HAVING.
 /// </summary>
 /// <param name="references"></param>
 /// <param name="havingPart"></param>
 internal SelectStatement(ISelectStatementReferences references, HavingPart havingPart)
 {
     if (references == null)
     {
         throw new ArgumentNullException("references");
     }
     _references = references;
     foreach (SqlExpression se in havingPart.Expressions)
     {
         ColumnName(se);
     }
     _columnsInfoList = new List <ColumnInfo>(_columnsInfo.Values);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Recupera as informações contidas dentro da clausula GROUP BY.
 /// </summary>
 /// <param name="gbp"></param>
 internal SelectStatement(ISelectStatementReferences references, GroupByPart gbp)
 {
     if (references == null)
     {
         throw new ArgumentNullException("references");
     }
     _references = references;
     foreach (SqlExpression sqle in gbp.Expressions)
     {
         ColumnName(sqle);
     }
     _columnsInfoList = new List <ColumnInfo>(_columnsInfo.Values);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Recupera as informações contidas dentro da clausula ORDER BY.
 /// </summary>
 /// <param name="references"></param>
 /// <param name="op"></param>
 internal SelectStatement(ISelectStatementReferences references, OrderByPart op)
 {
     if (references == null)
     {
         throw new ArgumentNullException("references");
     }
     _references = references;
     foreach (OrderByExpression oe in op.OrderByExpressions)
     {
         ColumnName(oe.Expression);
     }
     _columnsInfoList = new List <ColumnInfo>(_columnsInfo.Values);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="tableName">Referência da expressão que armazena o nome da tabela.</param>
 /// <param name="tableAlias">Expressão que armazena o apelido da tabela.</param>
 internal TableInfo(ISelectStatementReferences references, InterpreterExpression.Nodes.TableNameExpression tableName, Expression tableAlias)
 {
     if (references == null)
     {
         throw new ArgumentNullException("references");
     }
     _references          = references;
     _tableNameExpression = tableName;
     _tableName           = new TableName {
         Name   = tableName.Name,
         Schema = tableName.Schema
     };
     _tableAlias = tableAlias;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="references"></param>
 /// <param name="parser"></param>
 internal SelectStatement(ISelectStatementReferences references, Parser parser)
 {
     if (references == null)
     {
         throw new ArgumentNullException("references");
     }
     _references = references;
     _parser     = parser;
     foreach (Select select in parser.SelectParts)
     {
         GetSelectInfo(select);
     }
     foreach (KeyValuePair <string, ColumnInfo> ci in _columnsInfo)
     {
         if (ci.Value.TableNameOrTableAlias == null)
         {
             bool found = false;
             foreach (KeyValuePair <string, TableInfo> ti in _tablesInfo)
             {
                 if (ti.Value.ExistsColumn(ci.Value))
                 {
                     if (!found)
                     {
                         ti.Value.AddColumn(ci.Value);
                         found = true;
                     }
                     else
                     {
                         _firstTable.AddColumn(ci.Value);
                     }
                 }
             }
         }
         else
         {
             foreach (KeyValuePair <string, TableInfo> ti in _tablesInfo)
             {
                 if (ci.Value.TableNameOrTableAlias == ti.Value.TableName.Name || ci.Value.TableNameOrTableAlias == ti.Value.TableAlias)
                 {
                     ti.Value.AddColumn(ci.Value);
                     break;
                 }
             }
         }
     }
     _tablesInfoList  = new List <TableInfo>(_tablesInfo.Values);
     _columnsInfoList = new List <ColumnInfo>(_columnsInfo.Values);
 }