Added a function to allow a snapshot object to handle dealing with the diff on its own.

This commit is contained in:
Admin
2020-12-05 17:00:08 -06:00
parent 8a1be37434
commit d758e42afb
3 changed files with 46 additions and 25 deletions
Binary file not shown.
+7 -25
View File
@@ -164,37 +164,19 @@ namespace DataOrganizer
var folderGroup = GetActiveFolderGroup(); var folderGroup = GetActiveFolderGroup();
var files = new List<FileInfo>(); var files = new List<FileInfo>();
var rootFolder = new DirectoryInfo(folderGroup.Path); var rootFolder = new DirectoryInfo(folderGroup.Path);
var pendingChanges = 0;
foreach (var dir in rootFolder.EnumerateDirectories()) foreach (var dir in rootFolder.EnumerateDirectories())
files.AddRange(ScanDirectory(dir)); files.AddRange(ScanDirectory(dir));
var snapShot = new Snapshot(files, folderGroup); var snapShot = new Snapshot(files, folderGroup);
ActiveSnapshotForPrimaryTree.MergeSnapshot(snapShot);
var newFiles = snapShot.Files.Values.Except(ActiveSnapshotForPrimaryTree.Files.Values); var newFiles = snapShot.Files.Values.Except(ActiveSnapshotForPrimaryTree.Files.Values);
var existingFiles = ActiveSnapshotForPrimaryTree.Files.Values.Except(snapShot.Files.Values); var existingFiles = ActiveSnapshotForPrimaryTree.Files.Values.Except(snapShot.Files.Values);
var deletedFiles = new List<FileSnapshot>();
var modifiedFiles = new List<FileSnapshot>();
var newFilesCount = 0; var newFilesCount = 0;
var modifiedFilesCount = 0; var modifiedFilesCount = 0;
var deletedFilesCount = 0; var deletedFilesCount = 0;
foreach(var existingFile in existingFiles)
{
if (!snapShot.Files.ContainsKey(existingFile.FullPath))
{
existingFile.Status = FileSnapshot.FileStatus.PendingDelete;
deletedFiles.Add(existingFile);
pendingChanges++;
}
else if (existingFile.ModifiedDate != snapShot.Files[existingFile.FullPath].ModifiedDate)
{
existingFile.ModifiedDate = snapShot.Files[existingFile.FullPath].ModifiedDate;
modifiedFiles.Add(snapShot.Files[existingFile.FullPath]);
pendingChanges++;
}
}
foreach(var f in newFiles) foreach(var f in newFiles)
{ {
var newNode = new TreeNode(f.Name) { Name = f.FullPath, BackColor = Color.LightBlue, ToolTipText = "New File Found!" }; var newNode = new TreeNode(f.Name) { Name = f.FullPath, BackColor = Color.LightBlue, ToolTipText = "New File Found!" };
@@ -224,17 +206,17 @@ namespace DataOrganizer
} }
} }
foreach(var f in deletedFiles) foreach(var f in ActiveSnapshotForPrimaryTree.Files.Where(x => x.Value.Status == FileSnapshot.FileStatus.PendingDelete))
{ {
PrimaryTreeNodes[f.FullPath].BackColor = Color.Red; PrimaryTreeNodes[f.Key].BackColor = Color.Red;
PrimaryTreeNodes[f.FullPath].ToolTipText = "This file has been deleted."; PrimaryTreeNodes[f.Key].ToolTipText = "This file has been deleted.";
deletedFilesCount++; deletedFilesCount++;
} }
foreach(var f in modifiedFiles) foreach(var f in ActiveSnapshotForPrimaryTree.Files.Where(x => x.Value.Status == FileSnapshot.FileStatus.PendingUpdate))
{ {
PrimaryTreeNodes[f.FullPath].BackColor = Color.DarkBlue; PrimaryTreeNodes[f.Key].BackColor = Color.DarkBlue;
PrimaryTreeNodes[f.FullPath].ToolTipText = "This file has been modified."; PrimaryTreeNodes[f.Key].ToolTipText = "This file has been modified.";
modifiedFilesCount++; modifiedFilesCount++;
} }
+39
View File
@@ -168,6 +168,44 @@ namespace DataOrganizer
public void MergeSnapshot(Snapshot snapshot) public void MergeSnapshot(Snapshot snapshot)
{ {
//TODO: build this out //TODO: build this out
var newFiles = Files.Values.Except(snapshot.Files.Values);
var newFolders = Directories.Values.Except(snapshot.Directories.Values);
var newOrgFolders = OrganizationFolders.Values.Except(snapshot.OrganizationFolders.Values);
var existingFiles = Files.Values.Except(snapshot.Files.Values);
foreach (var existingFile in existingFiles)
{
if (!snapshot.Files.ContainsKey(existingFile.FullPath))
{
existingFile.Status = FileSnapshot.FileStatus.PendingDelete;
//deletedFiles.Add(existingFile);
//pendingChanges++;
}
else if (existingFile.ModifiedDate != snapshot.Files[existingFile.FullPath].ModifiedDate)
{
existingFile.ModifiedDate = snapshot.Files[existingFile.FullPath].ModifiedDate;
//modifiedFiles.Add(snapShot.Files[existingFile.FullPath]);
//pendingChanges++;
}
}
foreach(var newFile in newFiles)
{
if(!Files.ContainsKey(newFile.FullPath)) Files.Add(newFile.FullPath, newFile);
Folder folder = newFile.ParentFolder;
while(folder != null)
{
if (!Directories.ContainsKey(folder.FullPath))
{
Directories.Add(folder.FullPath, folder);
}
if (folder.Parent == null && !OrganizationFolders.ContainsKey(folder.FullPath)) OrganizationFolders.Add(folder.FullPath, folder.Files.Values.ToList());
folder = folder.Parent;
}
}
} }
public struct Duplicate public struct Duplicate
@@ -344,6 +382,7 @@ namespace DataOrganizer
PendingInsert, PendingInsert,
PendingUpdate, PendingUpdate,
PendingDelete, PendingDelete,
Deleted,
None None
} }
} }