public override Symbol VisitTable([NotNull] PageInterpreterParser.TableContext context) { var tableColumns = context.tableColumn().Select(x => (TableColumn)x.Accept(this).Value).ToArray(); var tableAnalyzer = new TableAnalyzer(); var result = tableAnalyzer.AnalyzeTable(page, queryLabel, tableColumns); if (result != null || result?.Results?.Count > 0) { Result.Results.Add(queryLabel, result.Results.First().Value); } return(new Symbol(SymbolType.Success)); }
protected async Task <AnalysisResult> AnalyzeTable(string tableForTest) { var testTable = new List <string>() { tableForTest }; var ticSource = new TablesInfoCollector(_config.SourceConnectionString, testTable, _logger); var ticDestination = new TablesInfoCollector(_config.DestinationConnectionString, testTable, _logger); var tiSource = await ticSource.CollectTablesInfoAsync(); var tiDestination = await ticDestination.CollectTablesInfoAsync(); var ta = new TableAnalyzer(_config, _logger); return(ta.Analyze(testTable, tiSource, tiDestination)); }
IEnumerator FetchHandle() { var detail = this.detail; string body; switch (type) { case FetchType.Teacher: body = $"STR={detail.teacher}&MM2={detail.date.Month}&YY2={detail.date.Year}&item2=教師"; break; case FetchType.ClassCode: body = $"STR={detail.classCode}&MM2={detail.date.Month}&YY2={detail.date.Year}&item2=班級"; break; default: OnFetchCompleted(null); yield break; } var uploadHandler = new UploadHandlerRaw(big5.GetBytes(body)); var downloadHandler = new DownloadHandlerBuffer(); using (var request = new UnityWebRequest(API_ENTERPOINT, UnityWebRequest.kHttpVerbPOST, downloadHandler, uploadHandler)) { request.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded"); yield return(request.SendWebRequest()); if (request.error != null) { OnFetchCompleted(null); yield break; } var sourceText = big5.GetString(request.downloadHandler.data); analyzer = new TableAnalyzer(sourceText, type); OnFetchCompleted(this); } }
public IReadOnlyList <TableColumnInfo> AnalyzeTable(IEnumerable <MElement> rows) { return(TableAnalyzer.Analyze(rows, Settings, _writer.FormatProvider)?.AsReadOnly()); }
private void ProcessQuerySpec(Notation notation, Symbol sym, QueryContext context) { context.tables.Clear(); TableAnalyzer analyzer = new TableAnalyzer(notation); analyzer.WalkFromClause(sym); foreach (String name in analyzer.Tables) context.tables.Add(name); ProcessSelectList(notation, sym, context); ProcessFromClause(notation, sym, context); ProcessWhereClause(notation, sym, context); ProcessHavingClause(notation, sym, context); }
public void Can_Analyze_Basic_Table() { var fakePage = new TestPageCreator(5, 10); fakePage.SetValue(0, 0, "Number", "ItemNo"); fakePage.SetValue(1, 0, "Text", "Description"); fakePage.SetValue(2, 0, "Number", "Quantity"); fakePage.SetValue(3, 0, "Amount", "Unit price"); fakePage.SetValue(4, 0, "Amount", "Amount"); fakePage.SetValue(0, 1, "Number", "22"); fakePage.SetValue(0, 2, "Number", "33"); fakePage.SetValue(0, 3, "Number", "44"); fakePage.SetValue(1, 1, "Text", "A"); fakePage.SetValue(1, 2, "Text", "B"); fakePage.SetValue(1, 3, "Text", "C"); fakePage.SetValue(2, 1, "Number", "3"); fakePage.SetValue(2, 2, "Number", "2"); fakePage.SetValue(2, 3, "Number", "5"); fakePage.SetValue(3, 1, "Amount", "500.0"); fakePage.SetValue(3, 2, "Amount", "245.5"); fakePage.SetValue(3, 3, "Amount", "899.99"); fakePage.SetValue(4, 1, "Amount", "1250.5"); fakePage.SetValue(4, 2, "Amount", "1500.2"); fakePage.SetValue(4, 3, "Amount", "1345.3"); // var script = @" //AnalyzedTable: //Table //'ItemNumber': [Number(ItemNo)] //'ItemDescription': [Text(Description)] //'Quantity': [Number(Quantity)] //'ItemPrice': [Amount(Unit price)] //'TotalAmount': [Amount(Amount)]; //"; // var result = Visit(script, fakePage.Page); var tableAnalyzer = new TableAnalyzer(); var analysis = tableAnalyzer.AnalyzeTable(fakePage.Page, "Test", new PageInterpreter.DataModel.TableColumn[] { new PageInterpreter.DataModel.TableColumn() { ColumnName = "ItemNumber", LabelParameters = new string[] { "ItemNo" }, TextType = "Number" }, new PageInterpreter.DataModel.TableColumn() { ColumnName = "Description", LabelParameters = new string[] { "Description" }, TextType = "Text" }, new PageInterpreter.DataModel.TableColumn() { ColumnName = "Quantity", LabelParameters = new string[] { "Quantity" }, TextType = "Number" }, new PageInterpreter.DataModel.TableColumn() { ColumnName = "UnitPrice", LabelParameters = new string[] { "Unit price" }, TextType = "Amount" }, new PageInterpreter.DataModel.TableColumn() { ColumnName = "Total", LabelParameters = new string[] { "Amount" }, TextType = "Amount" } }); Assert.IsNotNull(analysis); }