public void Clean(ICleanAlgorithm cleanAlgorithm) { int count = cleanAlgorithm.GetForRemove(_restorePoints); if (count == _restorePoints.Count) { count--; } if (count == 0) { return; } IEnumerable <RestorePoint> restorePointsForRemove = _restorePoints.Take(count); if (_restorePoints[count].RestoreType == RestoreType.Increment) { restorePointsForRemove = restorePointsForRemove .Reverse() .SkipWhile(x => x.RestoreType == RestoreType.Increment) .Skip(1); } _restorePoints = _restorePoints.Skip(restorePointsForRemove.Count()).ToList(); }
public Backup(IStorageAlgorithm storageAlgorithm, ICleanAlgorithm cleanAlgorithm, IFileRepository fileRepository, DateTimeProvider dateTimeProvider) { _storageAlgorithm = storageAlgorithm ?? throw new ArgumentNullException(nameof(storageAlgorithm)); _cleanAlgorithm = cleanAlgorithm ?? throw new ArgumentNullException(nameof(cleanAlgorithm)); _fileRepository = fileRepository ?? throw new ArgumentNullException(nameof(fileRepository)); _dateTimeProvider = dateTimeProvider ?? throw new ArgumentNullException(nameof(dateTimeProvider)); Id = Guid.NewGuid(); _watchedFilePaths = new List <String>(); _restorePoints = new List <RestorePoint>(); }