From 9c4767d454979f0fb9501ea39ea09133dd9e4d56 Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Sat, 10 Jun 2023 21:30:27 -0700 Subject: [PATCH] Get all before throwing --- .../Stateless/Methods/PersonContainer.cs | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/Shared/Models/Stateless/Methods/PersonContainer.cs b/Shared/Models/Stateless/Methods/PersonContainer.cs index ff29a4e..886a83c 100644 --- a/Shared/Models/Stateless/Methods/PersonContainer.cs +++ b/Shared/Models/Stateless/Methods/PersonContainer.cs @@ -189,7 +189,7 @@ internal abstract class PersonContainer } } - private static List GetPersonContainersGroup(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary> individuals, PersonDirectory personDirectory, string[] personDisplayDirectories) + private static (List, List) GetPersonContainersGroup(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary> individuals, PersonDirectory personDirectory, string[] personDisplayDirectories) { List results = new(); string? minusOne; @@ -234,18 +234,18 @@ internal abstract class PersonContainer results.Add(personContainer); } } - if (changes.Any(l => l is not null)) - throw new NotImplementedException($"A directory was changed restart to look for more! {string.Join(Environment.NewLine, (from l in changes where l is not null select l).ToArray())}"); - return results; + return new(changes, results); } - private static List GetPersonContainersInnerGroups(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary> individuals, string groupDirectory, string groupDirectoryName) + private static (List, List) GetPersonContainersInnerGroups(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary> individuals, string groupDirectory, string groupDirectoryName) { List results = new(); string[] segments; const int zero = 0; + List changes; string innerGroupDirectoryName; PersonDirectory personDirectory; + List allChanges = new(); string[] personDisplayDirectories; const char exclamationPoint = '!'; char @char = groupDirectoryName[zero]; @@ -254,7 +254,8 @@ internal abstract class PersonContainer if (@char == exclamationPoint) { personDirectory = new(@char, "Ignore", 'U', 'U', 'U'); - collection = GetPersonContainersGroup(mappingDefaultName, personBirthdayFormat, facesFileNameExtension, personCharacters, individuals, personDirectory, innerGroupDirectories); + (changes, collection) = GetPersonContainersGroup(mappingDefaultName, personBirthdayFormat, facesFileNameExtension, personCharacters, individuals, personDirectory, innerGroupDirectories); + allChanges.AddRange(changes); results.AddRange(collection); } else @@ -275,18 +276,21 @@ internal abstract class PersonContainer continue; personDirectory = new(@char, innerGroupDirectoryName, segments[zero][zero], segments[1][zero], segments[2][zero]); personDisplayDirectories = Directory.GetDirectories(innerGroupDirectory, "*", SearchOption.TopDirectoryOnly); - collection = GetPersonContainersGroup(mappingDefaultName, personBirthdayFormat, facesFileNameExtension, personCharacters, individuals, personDirectory, personDisplayDirectories); + (changes, collection) = GetPersonContainersGroup(mappingDefaultName, personBirthdayFormat, facesFileNameExtension, personCharacters, individuals, personDirectory, personDisplayDirectories); + allChanges.AddRange(changes); results.AddRange(collection); } } - return results; + return new(allChanges, results); } private static List GetPersonContainersGroups(string mappingDefaultName, string personBirthdayFormat, string facesFileNameExtension, char[] personCharacters, Dictionary> individuals, string[] groupDirectories) { List results; const int zero = 0; + List changes; string groupDirectoryName; + List allChanges = new(); List collection; List personContainers = new(); foreach (string groupDirectory in groupDirectories) @@ -294,9 +298,12 @@ internal abstract class PersonContainer groupDirectoryName = Path.GetFileName(groupDirectory); if (!personCharacters.Contains(groupDirectoryName[zero])) continue; - collection = GetPersonContainersInnerGroups(mappingDefaultName, personBirthdayFormat, facesFileNameExtension, personCharacters, individuals, groupDirectory, groupDirectoryName); + (changes, collection) = GetPersonContainersInnerGroups(mappingDefaultName, personBirthdayFormat, facesFileNameExtension, personCharacters, individuals, groupDirectory, groupDirectoryName); + allChanges.AddRange(changes); personContainers.AddRange(collection); } + if (allChanges.Any(l => l is not null)) + throw new NotImplementedException($"A directory was changed restart to look for more! {string.Join(Environment.NewLine, (from l in allChanges where l is not null select l).ToArray())}"); results = (from l in personContainers orderby l.Key is not null, l.Key select l).ToList(); return results; }