private void CreateView(ICommands cmd, IAParser parser, IATranslator translator, IViewDefinition view) { ASTNodeList aNodes = null; StringBuilder createViewStmt = new StringBuilder("create view "); createViewStmt.Append(view.ViewName); if (view.DbType == DbTypeName.Any || parser.ExpandEmptyStrings) { aNodes = parser.CreateNodeList(view.SelectStatement); } if (view.DbType == DbTypeName.Any) { if (!ColumnListContainStar(aNodes)) { createViewStmt.Append(CreateColumnList(aNodes)); } aNodes = translator.Translate(aNodes); } createViewStmt.Append(" as "); if (aNodes != null) { createViewStmt.Append(aNodes); } else { createViewStmt.Append(view.SelectStatement); } cmd.ExecuteNonQuery(createViewStmt.ToString()); }
public override IASTNode Parse(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { while (tokens.CurrentToken != null && !aParser.Acceptable(tokens, ASTEndParenthesesNode.KeyWord) && !aParser.Acceptable(tokens, ASTCommaNode.KeyWord)) { IASTNode node = nodeFactory.CreateNode(tokens.CurrentToken.Text, tokens.CurrentToken.AddSpace); node.Parse(nodeFactory, aParser, tokens); SubNodes.Add(node); } return(this); }
private void TestDoFunctions(string input, string expected) { IASTNodeFactory nodeFactory = new ASTNodeFactory(); IAParser parser = AParserFactory.CreateInstance(nodeFactory); ASTNodeList aNodes = parser.CreateNodeList(input); IATranslator translator = ATranslatorFactory.CreateInstance(DbTypeName.SqlServer, nodeFactory); ASTNodeList msNodes = translator.Translate(aNodes); string result = msNodes.ToString(); result.Should().BeEquivalentTo(expected); }
public override IASTNode Parse(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { tokens.GetNextToken(); while (tokens.CurrentToken != null && !aParser.Acceptable(tokens, ASTEndParenthesesNode.KeyWord)) { IASTNode newNode = aParser.NodeFactory.CreateNode(tokens.CurrentToken.Text, tokens.CurrentToken.AddSpace); newNode.Parse(aParser.NodeFactory, aParser, tokens); SubNodes.Add(newNode); } if (!aParser.Acceptable(tokens, ASTEndParenthesesNode.KeyWord)) { throw new AParserException("Didn't find closing parentheses"); } SubNodes.Add(aParser.Accept(tokens, ASTEndParenthesesNode.KeyWord)); return(this); }
public void DoViews(out int totalViews, out int failedViews, IALogger tmpLogger = null) { IALogger logger = tmpLogger ?? new TestLogger(); totalViews = 0; failedViews = 0; List <IViewDefinition> viewDefinitions = new List <IViewDefinition>(); viewDefinitions.AddRange(GetViewsFromAagView()); viewDefinitions.AddRange(GetViewsFromAsysViewThatAreNotInAagView()); ICommands cmd = _dbContext.PowerPlant.CreateCommands(); IDbSchema schema = _dbContext.PowerPlant.CreateDbSchema(); IASTNodeFactory nodeFactory = new ASTNodeFactory(); IAParser parser = AParserFactory.CreateInstance(nodeFactory); if (_dbContext.DbType == DbTypeName.Oracle) { parser.ExpandEmptyStrings = true; } IATranslator translator = ATranslatorFactory.CreateInstance(_dbContext.DbType, nodeFactory); foreach (var view in viewDefinitions) { if (view.DbType != DbTypeName.Any && view.DbType != _dbContext.DbType) { continue; } totalViews++; try { schema.DropView(view.ViewName); CreateView(cmd, parser, translator, view); logger.Write(string.Format("View '{0}' created", view.ViewName)); } catch (Exception ex) { logger.Write(string.Format("ERROR: Can't create view '{0}'", view.ViewName)); logger.Write(ex.Message); failedViews++; } } }
protected void ParseParameters(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { SubNodes.Add(aParser.Accept(tokens, ASTStartParenthesesNode.KeyWord)); while (tokens.CurrentToken != null && !aParser.Acceptable(tokens, ASTEndParenthesesNode.KeyWord)) { IASTNode node = nodeFactory.CreateFunctionParameterNode(tokens.CurrentToken.AddSpace); node.Parse(nodeFactory, aParser, tokens); SubNodes.Add(node); if (aParser.Acceptable(tokens, ASTCommaNode.KeyWord)) { SubNodes.Add(aParser.Accept(tokens, ASTCommaNode.KeyWord)); } } SubNodes.Add(aParser.Accept(tokens, ASTEndParenthesesNode.KeyWord)); }
public void Setup() { _parser = AParserFactory.CreateInstance(new ASTNodeFactory()); }
public override IASTNode Parse(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { aParser.Accept(tokens, Text); ParseParameters(nodeFactory, aParser, tokens); return(this); }
public virtual IASTNode Parse(IASTNodeFactory nodeFactory, IAParser aParser, ATokens tokens) { tokens.GetNextToken(); return(this); }