public void Parse2() { XElement el = XElement.Parse(@"<f>select [System.Id], [Phoenix.DueDate], [Phoenix.MagicDueDate], [System.WorkItemType], [System.State], [System.Title], [System.IterationPath] from WorkItems where ([System.State] = 'New' or [System.State] = 'Active') and ([System.AssignedTo] = 'Ventsislav Mladenov' or [System.TeamProject] = @project) order by [System.Id]</f>"); var parser = new LexalParser(el.Value); var nodes = parser.ProcessWherePart(); Assert.True(nodes[0].NodeType == NodeType.OpenBracket); Assert.True(nodes[1].NodeType == NodeType.Field); Assert.True(nodes[2].NodeType == NodeType.Condition); Assert.True(nodes[3].NodeType == NodeType.Constant); Assert.True(nodes[4].NodeType == NodeType.Operator); Assert.True(nodes[5].NodeType == NodeType.Field); Assert.True(nodes[6].NodeType == NodeType.Condition); Assert.True(nodes[7].NodeType == NodeType.Constant); Assert.True(nodes[8].NodeType == NodeType.CloseBracket); Assert.True(nodes[9].NodeType == NodeType.Operator); Assert.True(nodes[10].NodeType == NodeType.OpenBracket); Assert.True(nodes[11].NodeType == NodeType.Field); Assert.True(nodes[12].NodeType == NodeType.Condition); Assert.True(nodes[13].NodeType == NodeType.Constant); Assert.True(nodes[14].NodeType == NodeType.Operator); Assert.True(nodes[15].NodeType == NodeType.Field); Assert.True(nodes[16].NodeType == NodeType.Condition); Assert.True(nodes[17].NodeType == NodeType.Parameter); Assert.True(nodes[18].NodeType == NodeType.CloseBracket); }
public void Optimize1() { XElement el = XElement.Parse(@"<f>SELECT [System.Id], [System.WorkItemType], [Microsoft.VSTS.Common.Rank], [System.Title], [System.State], [System.AssignedTo], [Microsoft.VSTS.Common.RoughOrderOfMagnitude], [Microsoft.VSTS.Common.ExitCriteria], [System.Description] FROM WorkItems WHERE [System.TeamProject] = @project AND [System.WorkItemType] = 'Scenario' AND [System.State] = 'Active' ORDER BY [Microsoft.VSTS.Common.Rank], [System.State], [System.Id]</f>"); var parser = new LexalParser(el.Value); var nodes = parser.ProcessWherePart(); nodes.Optimize(); Assert.True(nodes[0].NodeType == NodeType.Condition); Assert.True(((ConditionNode)nodes[0]).Right.NodeType == NodeType.Parameter); Assert.True(nodes[1].NodeType == NodeType.Operator); Assert.True(nodes[2].NodeType == NodeType.Condition); Assert.True(((ConditionNode)nodes[2]).Right.NodeType == NodeType.Constant); Assert.True(nodes[3].NodeType == NodeType.Operator); Assert.True(nodes[4].NodeType == NodeType.Condition); Assert.True(((ConditionNode)nodes[4]).Right.NodeType == NodeType.Constant); }
public XElement GetSortingXml() { var parser = new LexalParser(this.QueryText); var sortList = parser.ProcessOrderBy(); return(XElement.Parse(sortList.WriteToXml())); }
public void Parse1() { XElement el = XElement.Parse(@"<f>SELECT [System.Id], [System.WorkItemType], [System.AssignedTo], [System.CreatedBy], [Microsoft.VSTS.Common.Priority], [System.Title], [System.Description] FROM WorkItems WHERE [System.TeamProject] = @project AND [System.State] <> 'Closed' AND [Microsoft.VSTS.Common.Issue] = 'Yes' ORDER BY [Microsoft.VSTS.Common.Priority], [System.Id]</f>"); var parser = new LexalParser(el.Value); var nodes = parser.ProcessWherePart(); Assert.True(nodes[0].NodeType == NodeType.Field); Assert.True(string.Equals(((FieldNode)nodes[0]).Field, "System.TeamProject")); Assert.True(nodes[1].NodeType == NodeType.Condition); Assert.True(((ConditionNode)nodes[1]).Condition == Condition.Equals); Assert.True(nodes[2].NodeType == NodeType.Parameter); Assert.True(string.Equals(((ParameterNode)nodes[2]).ParameterName, "project")); Assert.True(nodes[3].NodeType == NodeType.Operator); Assert.True(((OperatorNode)nodes[3]).Operator == Operator.And); Assert.True(nodes[4].NodeType == NodeType.Field); Assert.True(nodes[5].NodeType == NodeType.Condition); Assert.True(nodes[6].NodeType == NodeType.Constant); Assert.True(nodes[7].NodeType == NodeType.Operator); Assert.True(nodes[8].NodeType == NodeType.Field); Assert.True(nodes[9].NodeType == NodeType.Condition); Assert.True(nodes[10].NodeType == NodeType.Constant); }
public void ParseTest4() { string value = " where [a] = @me"; var parser = new LexalParser(value); var nodes = parser.ProcessWherePart(); AssertNodesTypes(nodes, NodeType.Field, NodeType.Condition, NodeType.Parameter); }
public void ParseTest3() { string value = " where ([a] <> '')"; var parser = new LexalParser(value); var nodes = parser.ProcessWherePart(); AssertNodesTypes(nodes, NodeType.OpenBracket, NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.CloseBracket); }
public void ParseTest2() { string value = " where ( ([a] = '3' or [b]<@c) and [d]> 40 )"; var parser = new LexalParser(value); var nodes = parser.ProcessWherePart(); //or [h] in(10,20) AssertNodesTypes(nodes, NodeType.OpenBracket, NodeType.OpenBracket, NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.Operator, NodeType.Field, NodeType.Condition, NodeType.Parameter, NodeType.CloseBracket, NodeType.Operator, NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.CloseBracket); }
public void RemoveUnUsedBrackets4() { string val = "where (([a] = 2) and (([b] = @p)))"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); nodes.Optimize(); Console.WriteLine(nodes); Assert.Equal("( [a] = 2 ) And ( ( [b] = @p ) )", nodes.ToString()); }
public void GetSubList2() { string val = "where (([a] = 2) and [b] = @p)"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); var list = nodes.GetSubList(0); Console.WriteLine(list); Assert.Equal("( [a] = 2 ) And [b] = @p", list.ToString()); }
public void ExtractOperatorForward1() { string val = "where [a] = 2 and [b] = 3 and [c] = 4 or [d] = 5"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); Console.WriteLine(nodes); Assert.Equal("Or ( And [a] = 2 [b] = 3 [c] = 4 ) [d] = 5", nodes.ToString()); }
public void ParseTest1() { string value = "select * from a where ([a]=10 and [c]<30)and([d] <> 3 or [e] >@s )"; var parser = new LexalParser(value); var nodes = parser.ProcessWherePart(); //or [h] in(10,20) AssertNodesTypes(nodes, NodeType.OpenBracket, NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.Operator, NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.CloseBracket, NodeType.Operator, NodeType.OpenBracket, NodeType.Field, NodeType.Condition, NodeType.Constant, NodeType.Operator, NodeType.Field, NodeType.Condition, NodeType.Parameter); }
public void ExtractOperatorForward6() { string val = "where [f] = 2"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); Console.WriteLine(nodes); Assert.Equal("[f] = 2", nodes.ToString()); }
public void ExtractOperatorForward5() { string val = "where ([f] = 2 and [a] = 2) or ([b] = 3 and [x] = 1)"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); Console.WriteLine(nodes); Assert.Equal("Or ( And [f] = 2 [a] = 2 ) ( And [b] = 3 [x] = 1 )", nodes.ToString()); }
public void ExtractOperatorForward4() { string val = "where (([f] = 2 and [a] = 2) or [s] = 1) and ([b] = 3 or ([x] = 1 and [s] = 3))"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); Console.WriteLine(nodes); Assert.Equal("And ( Or ( And [f] = 2 [a] = 2 ) [s] = 1 ) ( Or [b] = 3 ( And [x] = 1 [s] = 3 ) )", nodes.ToString()); }
public void RPN2() { string val = "where [Microsoft.VSTS.Common.ResolvedBy] = 'Ventsislav Mladenov' or [Microsoft.VSTS.Common.ClosedBy] = 'Ventsislav Mladenov'"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); var xmlTransformer = new NodesToXml(nodes); var result = xmlTransformer.WriteXml(); Console.WriteLine(result); }
public void NodesToXml3() { string val = "where (([f] = 2 and [a] = 2) or [s] = 1) and ([b] = 3 or ([x] = 1 and [s] = 3))"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); var xmlTransformer = new NodesToXml(nodes); var output = xmlTransformer.WriteXml(); Console.WriteLine(output); }
public void NodesToXml2() { string val = "where ([f] = 2 and [a] = 2) or ([b] = 3 and [x] = 1)"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); var xmlTransformer = new NodesToXml(nodes); var output = xmlTransformer.WriteXml(); Console.WriteLine(output); Assert.Equal("<Group GroupOperator=\"Or\">\r\n <Group GroupOperator=\"And\">\r\n <Expression Column=\"f\" FieldType=\"0\" Operator=\"equals\">\r\n <Number>2</Number>\r\n </Expression>\r\n <Expression Column=\"a\" FieldType=\"0\" Operator=\"equals\">\r\n <Number>2</Number>\r\n </Expression>\r\n </Group>\r\n <Group GroupOperator=\"And\">\r\n <Expression Column=\"b\" FieldType=\"0\" Operator=\"equals\">\r\n <Number>3</Number>\r\n </Expression>\r\n <Expression Column=\"x\" FieldType=\"0\" Operator=\"equals\">\r\n <Number>1</Number>\r\n </Expression>\r\n </Group>\r\n</Group>", output); }
public void NodesToXml1() { string val = "where [f] = 2"; var parser = new LexalParser(val); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); var xmlTransformer = new NodesToXml(nodes); var output = xmlTransformer.WriteXml(); Console.WriteLine(output); Assert.Equal("<Expression Column=\"f\" FieldType=\"0\" Operator=\"equals\">\r\n <Number>2</Number>\r\n</Expression>", output); }
public void OrderByParse1() { XElement el = XElement.Parse(@"<f>select [System.Id], [Phoenix.DueDate], [Phoenix.MagicDueDate], [System.WorkItemType], [System.State], [System.Title], [System.IterationPath] from WorkItems where ([System.State] = 'New' or [System.State] = 'Active') and ([System.AssignedTo] = 'Ventsislav Mladenov' or [System.TeamProject] = @project) order by [System.Id]</f>"); var parser = new LexalParser(el.Value); var nodes = parser.ProcessOrderBy(); Console.WriteLine(nodes); Assert.Equal("[System.Id] Asc", nodes.ToString()); }
public void OrderByParse2() { XElement el = XElement.Parse(@"<f>SELECT [System.Id], [System.WorkItemType], [System.AssignedTo], [System.CreatedBy], [Microsoft.VSTS.Common.Priority], [System.Title], [System.Description] FROM WorkItems WHERE [System.TeamProject] = @project AND [System.State] <> 'Closed' AND [Microsoft.VSTS.Common.Issue] = 'Yes' ORDER BY [Microsoft.VSTS.Common.Priority], [System.Id] desc</f>"); var parser = new LexalParser(el.Value); var nodes = parser.ProcessOrderBy(); Console.WriteLine(nodes); Assert.Equal("[Microsoft.VSTS.Common.Priority] Asc, [System.Id] Desc", nodes.ToString()); }
public XElement GetQueryXml(WorkItemContext context, FieldList fields) { var parser = new LexalParser(this.QueryText); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); nodes.FixFields(fields); nodes.FillFieldTypes(fields); var manager = new ParameterManager(context); manager.EvalParameters(nodes); var xmlTransformer = new NodesToXml(nodes); return(XElement.Parse(xmlTransformer.WriteXml())); }
public void RPN1() { XElement el = XElement.Parse(@"<f>select [System.Id], [Phoenix.DueDate], [Phoenix.MagicDueDate], [System.WorkItemType], [System.State], [System.Title], [System.IterationPath] from WorkItems where ([System.State] = 'New' or [System.State] = 'Active') and ([System.AssignedTo] = 'Ventsislav Mladenov' or [System.TeamProject] = 'TestProject') order by [System.Id]</f>"); var parser = new LexalParser(el.Value); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); var xmlTransformer = new NodesToXml(nodes); var result = xmlTransformer.WriteXml(); Console.WriteLine(result); Assert.Equal("<Group GroupOperator=\"And\">\r\n <Group GroupOperator=\"Or\">\r\n <Expression Column=\"System.State\" FieldType=\"0\" Operator=\"equals\">\r\n <String>New</String>\r\n </Expression>\r\n <Expression Column=\"System.State\" FieldType=\"0\" Operator=\"equals\">\r\n <String>Active</String>\r\n </Expression>\r\n </Group>\r\n <Group GroupOperator=\"Or\">\r\n <Expression Column=\"System.AssignedTo\" FieldType=\"0\" Operator=\"equals\">\r\n <String>Ventsislav Mladenov</String>\r\n </Expression>\r\n <Expression Column=\"System.TeamProject\" FieldType=\"0\" Operator=\"equals\">\r\n <String>TestProject</String>\r\n </Expression>\r\n </Group>\r\n</Group>", result); }
public void RPN4() { XElement el = XElement.Parse(@"<f>select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] from WorkItems where [System.TeamProject] = 'TestProject' and [System.WorkItemType] <> '' and [Microsoft.VSTS.Common.ResolvedBy] = 'Ventsislav Mladenov' and [System.WorkItemType] in ('Bug', 'Task') and [System.State] <> '' order by [System.Id]</f>"); var parser = new LexalParser(el.Value); var nodes = parser.ProcessWherePart(); nodes.Optimize(); nodes.ExtractOperatorForward(); var xmlTransformer = new NodesToXml(nodes); var result = xmlTransformer.WriteXml(); Console.WriteLine(result); }
public List <string> GetSelectColumns() { var parser = new LexalParser(this.QueryText); return(parser.ProcessSelect().Select(x => x.ColumnName).ToList()); }