static void UserInteraction() { bool validIDSupplied = false; int targetID = -1; do { Console.ForegroundColor = ConsoleColor.Black; Console.BackgroundColor = ConsoleColor.Yellow; Console.WriteLine("Please enter an ID, or press return to classify latest entry."); Console.ResetColor(); string input = Console.ReadLine(); if (input == "") { break; } else { if (int.TryParse(input, out targetID)) { validIDSupplied = targetID < warehouse.GetRecords().Count() && targetID >= 0; } if (!validIDSupplied) { Console.ForegroundColor = ConsoleColor.Black; Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine("Invalid ID supplied."); Console.ResetColor(); } } }while (!validIDSupplied); Console.Clear(); DataWarehouse translatedWarehouse = translator.TranslateWarehouse(warehouse); translator.SaveTranslatorToFile(); DataRecord targetRecord = null; if (targetID > -1) { targetRecord = warehouse.GetRecord(targetID); } else { targetRecord = warehouse.GetLatestRecord(); } List <string> classificationStrings = new List <string>(); foreach (Classification c in cm.ThreadedClassify(targetRecord)) { string s = c.ToString(); classificationStrings.Add(s); Console.WriteLine(s); Console.WriteLine(); } DataRecord targetRecordTranslated = translator.TranslateRecord(targetRecord); ConcurrentBag <string> visualizationBag = new ConcurrentBag <string>(); if (Visualizers.Count > 0) { if (!Directory.Exists(VisualizerOutputDir + "\\" + translatedWarehouse.FileName + "\\" + targetRecord.ID)) { Directory.CreateDirectory(VisualizerOutputDir + "\\" + translatedWarehouse.FileName + "\\" + targetRecord.ID); } Parallel.ForEach(Visualizers, (v) => { string[] paths = v.Visualize(VisualizerOutputDir + "\\" + translatedWarehouse.FileName + "\\" + targetRecord.ID + "\\" + v.GetType().Name.ToString(), translatedWarehouse, targetRecordTranslated); foreach (string path in paths) { visualizationBag.Add(path); } }); } ReportGenerator.GenerateReport(VisualizerOutputDir + "\\" + translatedWarehouse.FileName + "\\" + targetRecord.ID + "\\Report.html", targetRecord.ID, classificationStrings.ToArray(), visualizationBag.ToArray()); Process.Start(VisualizerOutputDir + "\\" + translatedWarehouse.FileName + "\\" + targetRecord.ID + "\\Report.html"); }