|
| 1 | +using System; |
| 2 | +using System.Collections.Generic; |
| 3 | +using System.Data; |
| 4 | +using System.Linq; |
| 5 | +using System.Text; |
| 6 | +using System.Threading.Tasks; |
| 7 | +using eBirdDataVisualizer.Core.Models; |
| 8 | + |
| 9 | +namespace eBirdDataVisualizer.Core.Services; |
| 10 | +public class BirdDataService |
| 11 | +{ |
| 12 | + static DataSet DataSet = new DataSet(); |
| 13 | + static DataTable Birds = new DataTable(nameof(Birds)); |
| 14 | + static DataColumn BirdId = new DataColumn(nameof(BirdId), typeof(Int32)); |
| 15 | + static DataColumn CommonName = new DataColumn(nameof(CommonName), typeof(string)); |
| 16 | + static DataColumn ScientificName = new DataColumn(nameof(ScientificName), typeof(string)); |
| 17 | + static DataColumn Frequency = new DataColumn(nameof(Frequency), typeof(List<double>)); |
| 18 | + |
| 19 | + private static List<Bird> allBirds; |
| 20 | + |
| 21 | + static BirdDataService() |
| 22 | + { |
| 23 | + Birds.Columns.Add(BirdId); |
| 24 | + Birds.Columns.Add(CommonName); |
| 25 | + Birds.Columns.Add(ScientificName); |
| 26 | + Birds.Columns.Add(Frequency); |
| 27 | + |
| 28 | + Birds.Rows.Add(0, "Black-bellied Whistling-Duck", "Dendrocygna autumnalis", new List<double>() { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.655E-4, 2.082E-4, 4.693E-4, 4.624E-4, 8.357E-4, 9.092E-4, 8.3E-5, 0.0012603, 0.0012944, 4.97E-5, 0.0015, 0.0010597, 4.18E-4, 7.671E-4, 1.218E-4, 6.09E-5, 0.0, 0.0, 0.0019542, 0.0, 4.4E-5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }); |
| 29 | + |
| 30 | + Birds.Rows.Add(1, "Emu", "Dromaius novaehollandiae", new List<double>() { 0.0, 0.0, 0.0, 0.0, 4.44E-5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }); |
| 31 | + |
| 32 | + Birds.Rows.Add(1, "Snow Goose", "Anser caerulescens", new List<double>() { 0.0164127, 0.0130752, 0.0147944, 0.0115589, 0.0134523, 0.0070272, 0.0060272, 0.0100091, 0.0097213, 0.0075751, 0.0053493, 0.0031462, 0.0010052, 6.83E-4, 6.52E-4, 4.76E-4, 4.164E-4, 7.41E-5, 3.391E-4, 2.279E-4, 1.186E-4, 8.3E-5, 1.8E-4, 0.0, 1.491E-4, 5.39E-5, 5.89E-5, 4.18E-5, 1.18E-4, 1.828E-4, 1.218E-4, 7.95E-5, 2.555E-4, 6.514E-4, 9.051E-4, 0.0011868, 0.0010745, 0.0026718, 0.0040783, 0.0059102, 0.0064931, 0.0110383, 0.0122762, 0.0232245, 0.0200967, 0.0151272, 0.0184791, 0.030209 }); |
| 33 | + |
| 34 | + DataSet.Tables.Add(Birds); |
| 35 | + } |
| 36 | + |
| 37 | + public BirdDataService() |
| 38 | + { |
| 39 | + |
| 40 | + } |
| 41 | + |
| 42 | + private static IEnumerable<Bird> AllBirds() |
| 43 | + { |
| 44 | + List<Bird> birds = new List<Bird>(); |
| 45 | + foreach (DataRow row in DataSet.Tables[DataSet.Tables.IndexOf(Birds)].Rows) |
| 46 | + { |
| 47 | + birds.Add(new Bird() |
| 48 | + { |
| 49 | + BirdId = (int)row[BirdId], |
| 50 | + CommonName = (string)row[CommonName], |
| 51 | + ScientificName = (string)row[ScientificName], |
| 52 | + Frequency = (List<double>)row[Frequency] |
| 53 | + }); |
| 54 | + } |
| 55 | + return birds; |
| 56 | + } |
| 57 | + |
| 58 | + public async Task<IEnumerable<Bird>> GetGridDataAsync() |
| 59 | + { |
| 60 | + if (allBirds == null) |
| 61 | + { |
| 62 | + allBirds = new List<Bird>(AllBirds()); |
| 63 | + } |
| 64 | + |
| 65 | + await Task.CompletedTask; |
| 66 | + return allBirds; |
| 67 | + } |
| 68 | +} |
0 commit comments