コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
    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);
        }
    }
コード例 #4
0
 public IReadOnlyList <TableColumnInfo> AnalyzeTable(IEnumerable <MElement> rows)
 {
     return(TableAnalyzer.Analyze(rows, Settings, _writer.FormatProvider)?.AsReadOnly());
 }
コード例 #5
0
 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);            
 }
コード例 #6
0
        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);
        }