public Smells() { _selectStatementProcessor = new SelectStatementProcessor(this); _insertProcessor = new InsertProcessor(this); _executableEntityProcessor = new ExecutableEntityProcessor(this); _fromProcessor = new FromProcessor(this); _whereProcessor = new WhereProcessor(this); _orderByProcessor = new OrderByProcessor(this); _whileProcessor = new WhileProcessor(this); _predicateSetProcessor = new PredicateSetProcessor(this); _setProcessor = new SetProcessor(this); _functionProcessor = new FunctionProcessor(this); _topProcessor = new TopProcessor(this); _createTableProcessor = new CreateTableProcessor(this); _selectSetProcessor = new SelectSetProcessor(this); _sqlDataTypeProcessor = new SqlDataTypeProcessor(this); _viewStatementProcessor = new ViewStatementProcessor(this); _setTransactionIsolationLevelProcessor = new SetTransactionIsolationLevelProcessor(this); _cursorProcessor = new CursorProcessor(this); _beginEndBlockProcessor = new BeginEndBlockProcessor(this); _scalarFunctionReturnTypeProcessor = new ScalarFunctionReturnTypeProcessor(); _selectFunctionReturnTypeProcessor = new SelectFunctionReturnTypeProcessor(this); _functionStatementBodyProcessor = new FunctionStatementBodyProcessor(this); _procedureStatementBodyProcessor = new ProcedureStatementBodyProcessor(this); _ifStatementProcessor = new IfStatementProcessor(this); _declareVariableProcessor = new DeclareVariableProcessor(this); _tableVariableProcessor = new TableVariableProcessor(this); _returnStatementProcessor = new ReturnStatementProcessor(this); _columnDefinitionProcessor = new ColumnDefinitionProcessor(this); }
//void ProcessSelectElements( public void ProcessTsqlFragment(TSqlFragment fragment) { String stmtType = FragmentTypeParser.GetFragmentType(fragment); //Console.WriteLine(StmtType); switch (stmtType) { case "DeclareCursorStatement": _cursorProcessor.ProcessCursorStatement((DeclareCursorStatement)fragment); break; case "BeginEndBlockStatement": _beginEndBlockProcessor.ProcessBeginEndBlockStatement((BeginEndBlockStatement)fragment); break; case "CreateFunctionStatement": case "AlterFunctionStatement": _functionStatementBodyProcessor.ProcessFunctionStatementBody((FunctionStatementBody)fragment); break; case "SelectFunctionReturnType": _selectFunctionReturnTypeProcessor.ProcessSelectFunctionReturnType((SelectFunctionReturnType)fragment); return; case "ScalarFunctionReturnType": _scalarFunctionReturnTypeProcessor.ProcessScalarFunctionReturnType((ScalarFunctionReturnType)fragment); break; case "SetTransactionIsolationLevelStatement": _setTransactionIsolationLevelProcessor.ProcessSetTransactionIolationLevelStatement((SetTransactionIsolationLevelStatement)fragment); break; case "WhileStatement": _whileProcessor.ProcessWhileStatement((WhileStatement)fragment); break; case "InsertStatement": InsertProcessor.Process((InsertStatement)fragment); break; case "SelectStatement": _selectStatementProcessor.Process((SelectStatement)fragment, "RG", true); break; case "SetRowCountStatement": SendFeedBack(42, fragment); break; case "IfStatement": _ifStatementProcessor.ProcessIfStatement((IfStatement)fragment); break; case "PredicateSetStatement": _predicateSetProcessor.ProcessPredicateSetStatement((PredicateSetStatement)fragment); break; case "ExecuteStatement": ExecutableEntityProcessor.ProcessExecuteStatement((ExecuteStatement)fragment); break; case "SetIdentityInsertStatement": SendFeedBack(22, fragment); break; case "SetCommandStatement": _setProcessor.ProcessSetStatement((SetCommandStatement)fragment); break; case "CreateTableStatement": _createTableProcessor.ProcessCreateTable((CreateTableStatement)fragment); break; case "CreateProcedureStatement": case "AlterProcedureStatement": ProcedureStatementBodyProcessor.ProcessProcedureStatementBody((ProcedureStatementBody)fragment); _assignmentList.Clear(); break; case "CreateViewStatement": case "AlterViewStatement": _viewStatementProcessor.ProcessViewStatementBody((ViewStatementBody)fragment); break; case "TSqlBatch": var batch = (TSqlBatch)fragment; foreach (TSqlStatement innerFragment in batch.Statements) { ProcessTsqlFragment(innerFragment); } break; case "TSqlScript": var script = (TSqlScript)fragment; foreach (TSqlBatch innerBatch in script.Batches) { ProcessTsqlFragment(innerBatch); } break; case "TryCatchStatement": var trycatch = (TryCatchStatement)fragment; foreach (TSqlStatement innerStmt in trycatch.TryStatements.Statements) { ProcessTsqlFragment(innerStmt); } foreach (TSqlStatement innerStmt in trycatch.CatchStatements.Statements) { ProcessTsqlFragment(innerStmt); } break; case "BooleanParenthesisExpression": var expression = (BooleanParenthesisExpression)fragment; ProcessTsqlFragment(expression.Expression); break; case "BooleanComparisonExpression": var bcExpression = (BooleanComparisonExpression)fragment; ProcessTsqlFragment(bcExpression.FirstExpression); ProcessTsqlFragment(bcExpression.SecondExpression); break; case "ScalarSubquery": var scalarSubquery = (ScalarSubquery)fragment; ProcessQueryExpression(scalarSubquery.QueryExpression, "RG"); break; case "ReturnStatement": _returnStatementProcessor.ProcessReturnStatement((ReturnStatement)fragment); break; case "IntegerLiteral": break; case "DeclareVariableStatement": _declareVariableProcessor.ProcessDeclareVariableStatement((DeclareVariableStatement)fragment); break; case "DeclareVariableElement": _declareVariableProcessor.ProcessDeclareVariableElement((DeclareVariableElement)fragment); break; case "PrintStatement": break; case "SqlDataTypeReference": _sqlDataTypeProcessor.ProcessSqlDataTypeReference((SqlDataTypeReference)fragment); break; case "DeclareTableVariableStatement": _tableVariableProcessor.ProcessTableVariableStatement((DeclareTableVariableStatement)fragment); break; case "TableValuedFunctionReturnType": _tableVariableProcessor.ProcessTableValuedFunctionReturnType((TableValuedFunctionReturnType)fragment); break; case "DeclareTableVariableBody": _tableVariableProcessor.ProcessTableVariableBody((DeclareTableVariableBody)fragment); break; case "VariableReference": //ProcessVariableReference((VariableReference)Fragment); break; case "ExistsPredicate": _tableVariableProcessor.ProcessExistsPredicate((ExistsPredicate)fragment); break; case "ColumnDefinition": _columnDefinitionProcessor.ProcessColumnDefinition((ColumnDefinition)fragment); break; } }