protected override void Handle(FindDuplicatesRequest request) { Snapshot snapshotLeft = projectRepository.GetSnapshot(request.PathLeft); Snapshot snapshotRight = null; if (request.PathRight != null) { snapshotRight = projectRepository.GetSnapshot(request.PathRight); } FileDuplicates fileDuplicates = new FileDuplicates { SnapshotLeft = snapshotLeft, SnapshotRight = snapshotRight, CheckFilesExist = request.CheckFilesExist }; IEnumerable <FileDuplicate> duplicates = fileDuplicates.Compare(); int duplicateCount = 0; long totalSize = 0; foreach (FileDuplicate duplicate in duplicates) { if (duplicate.AreEqual) { duplicateCount++; totalSize += duplicate.Size; request.Exporter.WriteDuplicate(duplicate.FullPath1, duplicate.FullPath2, duplicate.Size); } } request.Exporter.WriteSummary(duplicateCount, totalSize); }
protected override void Handle(RemoveDuplicatesRequest request) { Snapshot snapshotLeft = projectRepository.GetSnapshot(request.PathLeft); Snapshot snapshotRight = null; if (request.PathRight != null) { snapshotRight = projectRepository.GetSnapshot(request.PathRight); } FileDuplicates fileDuplicates = new FileDuplicates { SnapshotLeft = snapshotLeft, SnapshotRight = snapshotRight, CheckFilesExist = true }; IEnumerable <FileDuplicate> duplicates = fileDuplicates.Compare(); int removeCount = 0; long totalSize = 0; foreach (FileDuplicate duplicate in duplicates) { if (!duplicate.AreEqual) { continue; } bool file1Exists = duplicate.File1Exists; bool file2Exists = duplicate.File2Exists; if (file1Exists && file2Exists) { switch (request.FileToRemove) { case ComparisonSide.Left: File.Delete(duplicate.FullPath1); removeCount++; totalSize += duplicate.Size; request.Exporter.WriteRemove(duplicate.FullPath1); break; case ComparisonSide.Right: File.Delete(duplicate.FullPath2); removeCount++; totalSize += duplicate.Size; request.Exporter.WriteRemove(duplicate.FullPath2); break; } } } request.Exporter.WriteSummary(removeCount, totalSize); }