From 9f9fdac66a7ec257833aaea60dcad1ba1f9ea303 Mon Sep 17 00:00:00 2001 From: Admin Date: Sun, 6 Dec 2020 17:08:38 -0600 Subject: [PATCH] Fixed a duplication bug in the Snapshot Merge function. --- .vs/DataOrganizer/v16/.suo | Bin 145920 -> 145920 bytes DataOrganizer/FileViewer.cs | 4 +--- DataOrganizer/Snapshot.cs | 29 ++++++++++++++++------------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.vs/DataOrganizer/v16/.suo b/.vs/DataOrganizer/v16/.suo index 0880bae859efc0e38d0c90983b61ad47c7bc9e6c..b70aa90c747e2c65847bb1fbc788f3904dd38b0b 100644 GIT binary patch delta 1726 zcmZqp!qM=BV?z!T+X0E^)hcH;7cpI9WE7d~$>Pl@ws|Vcbw*Bu$`gSqXRa}NPA+At zXIwP-D^oqA;p9^0dd9HLU)k-MWcnBw82T9)7$z_pArq7#KttK<*Wk5uPj{ zlVB^$z`!8Kz`!8Sz`&ruz`&r$z`&ryz`&r)z`&rw05M&Sfq_Atfq_ATfq_Ajfq_Ab zfq_Arfq_A1GRTw$85RvA1_lOW1_lNb1_lOG1_lN*1_lOm1_lNTXed}g>B(p!FQ z=C8r;IU|2DFfjaPU|{&ez`(!(3Kj+ihW`u<3`~p+42+Bn4E&4?49tuS3@nTc46KX{ z3~Y=H4D29v|NsBzga#WomSFogF;SfpGwc#>J?34@z`(%6z`y{am9{^3X4GQh0|g=! z7cekPRxFif)nf=|$eV8O#uyF?AO;2oMg|6kA4!4s$Jj3mP6%c=;J=t@AxIBM97Kcg z_5*H=WlY@33|0&=45bXk42;tqT^a3}85kI*^SUxBPhaNBD8&mVEO}B zM%n52T^U7~4HyizePg`Asj(U&3yQk~7a15BA{ZDLT(&a0SQ%IuSXCRl8W}non;YvI zEb3v~&KSig#Vj}ru0!Mi$X`6ubz&K>FeWdW#I&6;f$={hW9GIbM!8-_rs?v|jEdY4 z->@(+F!W457*agFfQ3nHxvkSB5gMNC|@@LlHwdLotH_Ln=6Vf}#rMJ5W&n5WyA) z6BQ*U%ks#JgH#}^W`c00OFJ{FBKf)lAo{1* zyE3XzH*jSXnC|4nD8$Gx`C*9k^gLHaA(jX4{{NrO=gO!APGr*$I5Ub&zvs#*4@z8I zpu{!Jh0%yNl_7^Al_3!v0X5t0T^KJhP8alG)SvF)#uzqT!ktkIl!hA^w>$7LH84(h z@L>GL4GMq~hD3%G2FA&PD)!3+nHZOOF|sXVVq)1Az<85cY#GFHpyKGjaRvqkP{HJ~ zb-H0JW9RmYD8|K1I1=dg|Ljatn5JLJWX#zn$aH{lvH=sz#gxOy zRGhhthly$W5=BOZ?FtG^4;Uv4_^?b)E3g51%z#%s9h`(S8LGgM8^ZugDD3%+mIAva z4ea7n_U1jyIQf6~P=MNHQi8O0`hvUoE}Y@W(;osl!(K>q*8)7Kb1H&U~a*1TmCW9U(M#0IwM*55b zoA(-(Gg|U7GB8LpGBEu6|NlP-3o$Y<2s1J;h%hoRh%z!T2r@7*h%+)Us4_4x@G>$m z{D*?glNDLTHx|?|ZZa!j-CQEw$F!Nru83)KiChokCZ`g%$t4OQlTUc8*<7O7!?elg z3mfCF&0n>+88?MI;f!QuWMKHsz`*c_fq~&K0|Uc91_p-z3=9lRj0_Bnj0_C?j0_CS zj0_AcP=~QGGBB_+GB9v3GB9vL9mS30D7YskCh9XHT$XU_G4C4&1_llW1_lt#IsM~D zM#*h1jDk$l1zi{wdGi@c7&I8%7%~}h7*eO(yD^4yrZN;W6f-a~h)lo0%p}4KvW<~} zfdPaIwjXd~EMwv}W-w%Z8>2CM#Ca}| z==9_6jFya(w=;S%@^DV)o>41&{jc$uy&n#8n>kBMnp5~E!2bUA0n zJ-i@q4zPE(c`@GL6k7yxD;NtM*b7QKU~f)07ryCeCUD)nm!1RG}x`6_d1Bfp$O_51tdgxC^ zne7EeOaY9Oi$WB(D=08MV4NnvG-dllKBgSfjhVnW&4|fhdVvL#00$G;BMc1NJ1m$g F7y)ud;xqsN diff --git a/DataOrganizer/FileViewer.cs b/DataOrganizer/FileViewer.cs index 5639f24..472f9e2 100644 --- a/DataOrganizer/FileViewer.cs +++ b/DataOrganizer/FileViewer.cs @@ -171,13 +171,11 @@ namespace DataOrganizer var snapShot = new Snapshot(files, folderGroup); ActiveSnapshotForPrimaryTree.MergeSnapshot(snapShot); - var newFiles = snapShot.Files.Values.Except(ActiveSnapshotForPrimaryTree.Files.Values); - var existingFiles = ActiveSnapshotForPrimaryTree.Files.Values.Except(snapShot.Files.Values); var newFilesCount = 0; var modifiedFilesCount = 0; var deletedFilesCount = 0; - foreach(var f in newFiles) + foreach(var f in ActiveSnapshotForPrimaryTree.Files.Values.Where(x => x.Status == FileSnapshot.FileStatus.PendingInsert))//newFiles) { var newNode = new TreeNode(f.Name) { Name = f.FullPath, BackColor = Color.LightBlue, ToolTipText = "New File Found!" }; var folders = ProcessFileFolders(f); diff --git a/DataOrganizer/Snapshot.cs b/DataOrganizer/Snapshot.cs index 0d501ae..799da53 100644 --- a/DataOrganizer/Snapshot.cs +++ b/DataOrganizer/Snapshot.cs @@ -167,44 +167,47 @@ namespace DataOrganizer public void MergeSnapshot(Snapshot snapshot) { - //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 newFiles = new List(); var existingFiles = Files.Values.Except(snapshot.Files.Values); + foreach(var file in snapshot.Files) + if (!Files.ContainsKey(file.Key)) newFiles.Add(file.Value); + + foreach (var folder in snapshot.OrganizationFolders) + { + if (!OrganizationFolders.ContainsKey(folder.Key) && folder.Key != Root.FullPath) + { + Root.AddDirectory(snapshot.Directories[folder.Key]); + OrganizationFolders.Add(folder.Key, new List()); + } + } + 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); + 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; } + + OrganizationFolders[newFile.OrganizationalFolder.FullPath].Add(newFile); } }