/// <summary>
        /// Gets records from a file
        /// </summary>
        /// <typeparam name="BusinessObjectT">Class type</typeparam>
        /// <param name="fileName">Name of the file (no path, no extension, we know where stuff should be!)</param>
        /// <returns>List of items</returns>
        public static async Task <IReadOnlyList <BusinessObjectT> > GetRecords <BusinessObjectT>(string fileName)
            where BusinessObjectT : class, new()
        {
            bool hasUsableFile = await EnsureLatestFile(fileName);

            if (!hasUsableFile)
            {
                return(null);
            }

            DelimitedFileReader reader = new DelimitedFileReader(Path.Combine(Startup.Environment.ContentRootPath, "_data", (fileName + ".csv")), DelimitedFileReader.DELIMITER_COMMA, hasHeaders: true);

            return(reader.GetRecordsList <BusinessObjectT>().AsReadOnly());
        }
Пример #2
0
        static void TestWriter()
        {
            Console.WriteLine("Testing SujaySarma.Sdk.FormattedIO.Csv.DelimitedFileWriter...");
            Console.WriteLine();

            DelimitedFileWriter writer = new DelimitedFileWriter(@"C:\Users\Sujay Sarma\Desktop\airports_test.txt", DelimitedFileWriter.DELIMITER_COMMA);
            DelimitedFileReader reader = new DelimitedFileReader(@"D:\Src\products\SujaySarma.Api.OurAirports\src\_data\airports.csv", DelimitedFileReader.DELIMITER_COMMA, hasHeaders: true);
            IList <Airport>     list1  = reader.GetRecordsList <Airport>(0, -1);

            Console.WriteLine($"Airports: Read -- [{list1.Count}] row(s)...");

            DateTime startTime = DateTime.Now, endTime;

            writer.WriteRecords(list1, true);
            endTime = DateTime.Now;
            Console.WriteLine($"Airports: Wrote -- [{list1.Count}] row(s) in {(endTime - startTime).ToString(@"mm\:ss\.ffff")}");
            Console.WriteLine();
        }
Пример #3
0
        static void TestReader()
        {
            Console.WriteLine("Testing SujaySarma.Sdk.FormattedIO.Csv.DelimitedFileReader...");
            Console.WriteLine();

            //https://ourairports.com/data/countries.csv

            DelimitedFileReader reader;
            DateTime            startTime, endTime;

            reader = new DelimitedFileReader(@"D:\Src\products\SujaySarma.Api.OurAirports\src\_data\airports.csv", hasHeaders: true);
            string iata = null;

            do
            {
                Console.WriteLine("Enter airport IATA to search for (blank+ENTER to stop): ");
                iata = Console.ReadLine()?.ToUpper();
                if (!string.IsNullOrWhiteSpace(iata))
                {
                    foreach (Airport airport in reader.GetRecords <Airport>())
                    {
                        if ((airport.Iata == iata))
                        {
                            Console.WriteLine(
                                JsonSerializer.Serialize(airport, new JsonSerializerOptions()
                            {
                                Encoder          = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
                                IgnoreNullValues = false,
                                WriteIndented    = true
                            })
                                );

                            break;
                        }
                    }
                    Console.WriteLine();
                }
            } while (!string.IsNullOrWhiteSpace(iata));

            return;

            for (int i = 0; i < 4; i++)
            {
                reader    = new DelimitedFileReader(@"D:\Src\products\SujaySarma.Api.OurAirports\src\_data\countries.csv", hasHeaders: true);
                startTime = DateTime.Now;
                IList <Country> list1 = reader.GetRecordsList <Country>(0, -1);
                endTime = DateTime.Now;
                Console.WriteLine($"Countries: Run #{i} -- [{list1.Count}] row(s) in {(endTime - startTime).ToString(@"mm\:ss\.ffff")}");
                Console.WriteLine();
            }

            Console.WriteLine();
            Console.WriteLine("----> Press ENTER to continue...");
            Console.ReadLine();

            for (int i = 0; i < 3; i++)
            {
                reader    = new DelimitedFileReader(@"D:\Src\products\SujaySarma.Api.OurAirports\src\_data\regions.csv", hasHeaders: true);
                startTime = DateTime.Now;
                IList <Region> list2 = new List <Region>(reader.GetRecords <Region>(0, -1));
                endTime = DateTime.Now;
                Console.WriteLine($"Regions: Run #{i} -- [{list2.Count}] row(s) in {(endTime - startTime).ToString(@"mm\:ss\.ffff")}");
                Console.WriteLine();
            }
            Console.WriteLine();
            Console.WriteLine("----> Press ENTER to continue...");
            Console.ReadLine();

            for (int i = 0; i < 3; i++)
            {
                reader    = new DelimitedFileReader(@"D:\Src\products\SujaySarma.Api.OurAirports\src\_data\airports.csv", hasHeaders: true);
                startTime = DateTime.Now;
                IList <Airport> list3 = new List <Airport>(reader.GetRecords <Airport>(0, -1));
                endTime = DateTime.Now;
                Console.WriteLine($"Airports: Run #{i} -- [{list3.Count}] row(s) in {(endTime - startTime).ToString(@"mm\:ss\.ffff")}");
                Console.WriteLine();
            }
            Console.WriteLine();
            Console.WriteLine("----> Press ENTER to continue...");
            Console.ReadLine();


            //Country c = reader.GetRecord<Country>(19);
            //Console.WriteLine("Country at position #19:");
            //foreach(PropertyInfo p in (typeof(Country).GetProperties()))
            //{
            //    Console.Write($"\t{p.Name}\t\t");
            //    if (p.PropertyType.IsEnumerable())
            //    {
            //        foreach(object o in (IEnumerable<object>)p.GetValue(c))
            //        {
            //            Console.Write($" ,{o}");
            //        }
            //    }
            //    else
            //    {
            //        Console.WriteLine(p.GetValue(c));
            //    }
            //}
            //Console.WriteLine();

            //string[] columns = reader.GetRow();
            //int row = 0;
            //while ((columns != null) && (columns.Length > 0))
            //{
            //    Console.Write($"{row.ToString()}. [Fields: {columns.Length}]\t");
            //    for (int i = 0; i < columns.Length; i++)
            //    {
            //        Console.Write($"\t{columns[i]}");
            //    }
            //    Console.WriteLine();

            //    columns = reader.GetRow();
            //    row++;
            //}
        }