private static TableFileResult GetTablesToCompare(string fileName) { if (string.IsNullOrWhiteSpace(fileName)) { fileName = $"{InputFile.TablesToCompare}.supersecret"; } List <string> lines = GetFileLines(fileName); const char separator = '.'; List <Table> tablesToCompare = lines.Select(line => line.Split(separator)) .Where(parts => parts.Length == Enum.GetValues(typeof(TablePart)).Length) .Select(parts => new Table(parts[(int)TablePart.SchemaName], parts[(int)TablePart.TableName])) .ToList(); List <string> errorMessages = GetFileErrors(lines, separator, Enum.GetValues(typeof(TablePart)).Length, "schema/table format"); if (errorMessages.Any()) { Console.WriteLine($"Error: Invalid schema/table format in {InputFile.TablesToCompare} file."); } TableFileResult result = new TableFileResult(tablesToCompare, errorMessages); return(result); }
private static void CompareTables(string tableFileName, string databaseFileName) { TableFileResult result = GetTablesToCompare(tableFileName); if (result.Tables.Any()) { CompareDatabasePairs(databaseFileName, result.Tables); } if (result.Errors.Any()) { HandleTopLevelError(AppendLines(result.Errors), false); } else if (!result.Tables.Any()) { HandleTopLevelError("No tables to compare!"); } }
private static TableFileResult GetTablesToPopulate() { const string fileName = "TablesToPopulate.supersecret"; List<string> lines = GetFileLines(fileName); const char period = '.'; List<Table> tables = lines.Select(line => line.Split(period).ToList()) .Where(parts => parts.Count == Enum.GetValues(typeof(TablePart)).Length) .Select(parts => new Table(parts)) .ToList(); List<string> errorMessages = GetFileErrors(lines, period, Enum.GetValues(typeof(TablePart)).Length, "schema/table format"); if (errorMessages.Any()) { //TODO: Write error messages to file Console.WriteLine("Error: Invalid schema/table format in TablesToPopulate file."); } TableFileResult result = new TableFileResult(tables, errorMessages); return result; }