Example #1
0
        public void TestReadTable()
        {
            SCBClient reader = new SCBClient("api.scb.se/OV0104");

            SCBNode node = new SCBNode
            {
                path = "http://api.scb.se/OV0104/v1/doris/en/ssd/BE/BE0401/BE0401A/BefolkPrognRevN",
                type = "t",
                id   = "BefProgFoddaMedel19"
            };

            SCBMetaData meta = reader.GetMetaData(node.path).Result;

            SCBQuery query = new SCBQuery {
                response = new SCBResponse("json")
            };

            query.SetUp(meta.variables);

            query.SetSelection(meta.variables.Find(s => s.code == "Fodelseregion"), SCBQuery.Filter.item, new List <string>()
            {
                "13"
            });
            query.SetSelection(meta.variables.Find(s => s.code == "Kon"), SCBQuery.Filter.item, new List <string>()
            {
                "1"
            });
            query.SetSelection(meta.variables.Find(s => s.code == "Tid"), SCBQuery.Filter.item, new List <string>()
            {
                "2020"
            });

            SCBTable table = reader.GetTable(node, query).Result;
        }
Example #2
0
        static void PresentTable(SCBTable table)
        {
            foreach (SCBColumn tableColumn in table.columns)
            {
                if (tableColumn.type == "c" && !string.IsNullOrEmpty(tableColumn.unit))
                {
                    Console.Write($"{tableColumn.text} [{tableColumn.unit}] ");
                }
                else
                {
                    Console.Write($"{tableColumn.text} ");
                }
            }
            Console.WriteLine();
            foreach (SCBTableEntry scbTableEntry in table.data)
            {
                foreach (string s in scbTableEntry.key)
                {
                    Console.Write($"{s} ");
                }

                foreach (string s in scbTableEntry.values)
                {
                    Console.Write($"{s} ");
                }
                Console.WriteLine();
            }
        }
Example #3
0
        private async Task <bool> QueryDatabase(SCBTreeNode node)
        {
            _currentTable = await _controller.GetTable(node.Node, _currentQuery);

            if (_currentTable.columns == null)
            {
                MessageBox.Show("Error: no data", "Alert!", MessageBoxButtons.OK);
                return(false);
            }

            _currentTable.Setup();

            return(true);
        }
Example #4
0
        private static void QueryTable(SCBMetaData metaData, SCBClient client, SCBNode current)
        {
            SCBQuery query = new SCBQuery();

            foreach (SCBVariable variable in metaData.variables)
            {
                SCBQueryItem qi = new SCBQueryItem
                {
                    code      = variable.code,
                    selection = new SCBSelection {
                        filter = "top"
                    }
                };

                Console.Out.Write($"{variable.code} : ");
                Console.Out.Write("Filter [item,all,top,agg,quit] = ");
                bool ok = false;
                while (!ok)
                {
                    string ans = Console.In.ReadLine();

                    string shortString = (ans.Length < 2) ? String.Empty : (ans ?? string.Empty).Substring(0, 2).ToLower();

                    switch (shortString)
                    {
                    case "it":
                        qi.selection.values.AddRange(GetItems(variable));
                        qi.selection.filter = "item";
                        ok = true;
                        break;

                    case "al":
                        qi.selection.values.Add("*");
                        qi.selection.filter = "all";
                        ok = true;
                        break;

                    case "to":
                        qi.selection.values.Add(GetTop().ToString());
                        qi.selection.filter = "top";
                        ok = true;
                        break;

                    case "ag":
                        qi.selection.filter = "agg";
                        ok = true;
                        break;

                    case "qu":
                        ok = true;
                        break;

                    default:
                        break;
                    }

                    if (!ok)
                    {
                        Console.Out.WriteLine("Invalid input, please try again, or Quit!");
                        Console.Out.Write("Filter [Item,All,Top,Agg,Quit] = ");
                    }

                    ;
                }


                query.query.Add(qi);
            }


            SCBTable table = client.GetTable(current, query);

            PresentTable(table);
        }