public BackupDirectoryNamingConvention( ITimePeriodFromFilesystemNameExtractor timePeriodExtractor , IBackupFileNamingConvention backupFileNamingConvention) { TimePeriodExtractor = timePeriodExtractor; BackupFileNamingConvention = backupFileNamingConvention; }
/// <summary> /// Add new backup type mapping. /// </summary> /// <param name="nameSuffix"> /// Suffix of backup files, including extension, case insensitive /// </param> /// <param name="backupType"> /// Backup type /// </param> /// <param name="timePeriodExtractor"> /// Object implementing extraction of relevant information from file name, such as time period. /// </param> public void AddType(string nameSuffix, SupportedBackupType backupType, ITimePeriodFromFilesystemNameExtractor timePeriodExtractor) { Check.DoRequireArgumentNotNull(nameSuffix, "nameSuffix"); Check.DoRequireArgumentNotNull(timePeriodExtractor, "timePeriodExtractor"); Check.DoCheckArgument(null == GetTypeInfo(backupType), string.Format("Parser for {0} already mapped", backupType)); Check.DoCheckArgument(backupType != SupportedBackupType.None, "Invalid backup type (None)"); var intersectedType = _backupTypes.Values.Where( i => i.FileNameSuffix.EndsWith(nameSuffix, StringComparison.InvariantCultureIgnoreCase) || nameSuffix.EndsWith(i.FileNameSuffix, StringComparison.InvariantCultureIgnoreCase)) .FirstOrDefault(); Check.DoCheckArgument( intersectedType == null , () => string.Format("Suffix {0} for {1} conflicts with suffix {2} for type {3}" , nameSuffix, backupType, intersectedType.FileNameSuffix, intersectedType.BackupType)); var newTypeInfo = new BackupTypeInfo() { FileNameSuffix = nameSuffix, BackupType = backupType, TimePeriodExtractor = timePeriodExtractor }; _backupTypes.Add(backupType, newTypeInfo); }