示例#1
0
        public static List <TableConfigElement> CreateValidatedTableConfigCollection(DatabaseConfigElement dbConfig)
        {
            var validatedTableConfigs = new List <TableConfigElement>();

            var dbConfigValidationResult = ConfigurationValidator.IsDbConfigValid(dbConfig);

            if (!dbConfigValidationResult.IsValid)
            {
                logger.Error($"The anonymization of the database with the following connection string was skipped: {dbConfig.ConnectionString}. " +
                             $"Reason: {dbConfigValidationResult.ValidationMessage}");
                return(validatedTableConfigs);
            }


            for (int i = 0; i < dbConfig.Tables.Count; i++)
            {
                var tableConfig = dbConfig.Tables[i];

                var tableConfigValidationResult = ConfigurationValidator.IsTableConfigValid(dbConfig, tableConfig);
                if (!tableConfigValidationResult.IsValid)
                {
                    logger.Error($"The anonymization of the table {tableConfigValidationResult.TableNameWithSchema} " +
                                 $"with the following connection string was skipped: {tableConfigValidationResult.ConnectionString}. " +
                                 $"Reason: {tableConfigValidationResult.ValidationMessage}");
                }
                else
                {
                    validatedTableConfigs.Add(tableConfig);
                }
            }

            return(validatedTableConfigs);
        }
        public static DatabaseValidationResult IsDbConfigValid(DatabaseConfigElement dbConfig)
        {
            try
            {
                var connectionStringBuilder = new SqlConnectionStringBuilder(dbConfig.ConnectionString);


                if (connectionStringBuilder.InitialCatalog == string.Empty)
                {
                    return(new DatabaseValidationResult(false, $"The following connection string doesn't contain an initial catalog: {dbConfig.ConnectionString}.", dbConfig.ConnectionString));
                }

                if (connectionStringBuilder.DataSource == string.Empty)
                {
                    return(new DatabaseValidationResult(false, $"The following connection string doesn't contain a data source {dbConfig.ConnectionString}.", dbConfig.ConnectionString));
                }

                if (dbConfig.Tables == null)
                {
                    return(new DatabaseValidationResult(false, $"The database with the connection string {dbConfig.ConnectionString} has a Tables property of null.", dbConfig.ConnectionString));
                }
            }
            catch (Exception ex)
            {
                return(new DatabaseValidationResult(false, $"The connection string : {dbConfig.ConnectionString} has an invalid format. Error message: {ex.Message}.", dbConfig.ConnectionString));
            }

            return(new DatabaseValidationResult(true, "", dbConfig.ConnectionString));
        }
        public static TableValidationResult IsTableConfigValid(DatabaseConfigElement dbConfig, TableConfigElement tableConfig)
        {
            var dbConfigValidationResult = IsDbConfigValid(dbConfig);

            if (!dbConfigValidationResult.IsValid)
            {
                return(new TableValidationResult(false, dbConfigValidationResult.ValidationMessage, tableConfig.NameWithSchema, dbConfig.ConnectionString));
            }

            var tableAndSchemaName = tableConfig.NameWithSchema.Split('.');

            if (tableAndSchemaName.Length != 2)
            {
                return(new TableValidationResult(false, $"The following schema and name config parameter is invalid {tableConfig.NameWithSchema}.", tableConfig.NameWithSchema, dbConfig.ConnectionString));
            }

            if (tableConfig.ScrambledColumns.Count == 0 && tableConfig.ConstantColumns.Count == 0)
            {
                return(new TableValidationResult(false, $"The following table has no columns to anonymize: {tableConfig.NameWithSchema}", tableConfig.NameWithSchema, dbConfig.ConnectionString));
            }

            return(new TableValidationResult(true, "", tableConfig.NameWithSchema, dbConfig.ConnectionString));
        }
示例#4
0
 public TableInfoBuilder(DatabaseConfigElement dbConfig, TableConfigElement tableConfig)
 {
     TableConfig    = tableConfig;
     DatabaseConfig = dbConfig;
 }