Added a function to allow a snapshot object to handle dealing with the diff on its own.
This commit is contained in:
Binary file not shown.
@@ -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++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user