static void Main(string[] args) { StringBuilder errors = new StringBuilder(); try { var inputFilesLocation = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"FeedData"); var inputFiles = Directory.GetFiles(inputFilesLocation); foreach (var inputFile in inputFiles) { var inputFileType = GetFileType(inputFile); var context = FileParserFactory.CreateContext(inputFileType); if (context != null) { var horses = context.Parse(inputFile); var sortedHorsesList = SortHorseList(horses); string raceName = Path.GetFileNameWithoutExtension(inputFile); WriteHorseNames(raceName, sortedHorsesList); } } } catch (Exception ex) { errors.AppendFormat("{0};", ex.Message); // log exception using log4net } }
static void Main(string[] args) { Console.WriteLine("Horse names in price ascending order"); try { var fileParserFactory = new FileParserFactory(); var feedDataFilePaths = Directory.GetFiles(@"FeedData"); var horsesInAllRaces = new List <HorseInformation>(); foreach (var dataFilePath in feedDataFilePaths) { var parser = fileParserFactory.GetParser(dataFilePath); if (parser != null) { var horses = parser.GetHorses(dataFilePath); parser.DisplayHorseData(horses); horsesInAllRaces.AddRange(horses); } else { Console.WriteLine($"Unknown file type: Failed to parse {dataFilePath}"); } } Console.WriteLine("Horse list from all races in price ascending order:"); foreach (var horse in horsesInAllRaces.OrderBy(horse => horse.Price)) { Console.WriteLine($"HorseName: {horse.Name}, HorsePrice: {horse.Price}"); } } catch (IOException e) { Console.WriteLine($"IO Error: {e.ToString()}"); } catch (UnauthorizedAccessException e) { Console.WriteLine($"Unauthorized access: {e.ToString()}"); } catch (ArgumentException e) { Console.WriteLine($"Invalid arguments: {e.ToString()}"); } catch (InvalidOperationException e) { Console.WriteLine($"Invalid operation: {e.ToString()}"); } catch (JsonReaderException e) { Console.WriteLine($"Invalid operation: {e.ToString()}"); } }