示例#1
0
        private static DatabaseFileResult GetDatabasePairs(string fileName)
        {
            if (string.IsNullOrWhiteSpace(fileName))
            {
                fileName = $"{InputFile.DatabasePairs}.supersecret";
            }

            List <string> lines     = GetFileLines(fileName);
            const char    separator = ',';

            List <DatabasePair> databasePairs = lines.Where(line => line.Split(separator).Length == Enum.GetValues(typeof(DatabasePairPart)).Length)
                                                .Select(validLine => validLine.Split(separator))
                                                .Select(parts => new DatabasePair(new Database(parts[(int)DatabasePairPart.FriendlyName1],
                                                                                               parts[(int)DatabasePairPart.ServerName1],
                                                                                               parts[(int)DatabasePairPart.DatabaseName1]),
                                                                                  new Database(parts[(int)DatabasePairPart.FriendlyName2],
                                                                                               parts[(int)DatabasePairPart.ServerName2],
                                                                                               parts[(int)DatabasePairPart.DatabaseName2])))
                                                .ToList();

            List <string> errorMessages = GetFileErrors(lines, separator, Enum.GetValues(typeof(DatabasePairPart)).Length, "database pair format");

            //TODO: Make sure no database pair has the same server name and same table name

            if (errorMessages.Any())
            {
                Console.WriteLine($"Error: Invalid database pair format in {InputFile.DatabasePairs} file.");
            }

            DatabaseFileResult result = new DatabaseFileResult(databasePairs, errorMessages);

            return(result);
        }
示例#2
0
        private static void CompareDatabasePairs(string databaseFileName, List <Table> tablesToCompare)
        {
            DatabaseFileResult result = GetDatabasePairs(databaseFileName);

            if (result.DatabasePairs.Any())
            {
                foreach (DatabasePair dbPair in result.DatabasePairs)
                {
                    DisplayProgressMessage($"Comparing {dbPair.Database1.FriendlyName} to {dbPair.Database2.FriendlyName}...");
                    CompareDatabasePair(tablesToCompare, dbPair);
                }

                Console.WriteLine("Done!");
            }

            if (result.Errors.Any())
            {
                HandleTopLevelError(AppendLines(result.Errors), false);
            }
            else if (!result.DatabasePairs.Any())
            {
                HandleTopLevelError("No databases to compare!");
            }
        }