// Create 2 files // 1. Series - Books // 2. Books - Sales public static void AssembleSalesData(string pathDataDir) { Console.WriteLine("Starting to assemble comics sales data . . ."); SeriesSalesData seriesSales = new SeriesSalesData(); string pathSalesData = Path.Combine(pathDataDir, FileManager.DEFAULT_SALES_DIR); foreach (string pathSalesFile in Directory.EnumerateFiles(pathSalesData, "*", SearchOption.TopDirectoryOnly)) { Console.WriteLine(String.Format("Processing data from {0}.", pathSalesFile)); FileManager.ReadSalesDataFromCSV(pathSalesFile, ref seriesSales); } Console.WriteLine("Saving assembled data . . ."); string pathResultsDir = Path.Combine(pathDataDir, FileManager.DEFAULT_RESULTS_DIR); FileManager.WriteToCSV(seriesSales, Path.Combine(pathResultsDir, FileManager.RESULT_SERIES_COMICS_SALES), true); FileManager.WriteToCSV(seriesSales, Path.Combine(pathResultsDir, FileManager.RESULT_COMICS_SALES), false); Console.WriteLine(String.Format("---=== Statistics ===---\n# Series: {0}", seriesSales.Count())); Console.WriteLine("Finished comics sales data assembling."); }
public static void WriteToCSV(SeriesSalesData dataToWrite, string pathWrittenFile, bool groupBySeries) { using (StreamWriter writer = new StreamWriter(pathWrittenFile, false)) { foreach (KeyValuePair <string, ComicsSalesData> seriesSales in dataToWrite.Sales) { if (groupBySeries) { string allComicsAsString = String.Empty; int totalSales = 0; writer.Write(seriesSales.Key); foreach (KeyValuePair <string, int> comicSales in seriesSales.Value.Sales) { allComicsAsString += "," + comicSales.Key; totalSales += comicSales.Value; } writer.Write("," + totalSales); writer.WriteLine(allComicsAsString); } else { foreach (KeyValuePair <string, int> comicSales in seriesSales.Value.Sales) { writer.WriteLine(String.Format("{0},{1},{2}", seriesSales.Key, comicSales.Key, comicSales.Value)); } } } } }
public static void ReadSalesDataFromCSV(string pathDataDir, ref SeriesSalesData seriesSalesData) { using (StreamReader reader = new StreamReader(pathDataDir)) { while (!reader.EndOfStream) { string input = reader.ReadLine(); if (!input.Equals(String.Empty)) { string[] data = input.Split(','); seriesSalesData.Add(data[0], new Comic(data[1], Int32.Parse(data[2]))); } } } }