From 8b4d5248cb76f6fe230d2f32eb137210fd0a1b47 Mon Sep 17 00:00:00 2001 From: Mike Phares Date: Mon, 7 Aug 2023 22:50:03 -0700 Subject: [PATCH] Rebuilt and moved CopyManualFiles closer --- Map/Models/MapLogic.cs | 16 ++++- Map/Models/Stateless/MapLogic.cs | 94 ++++++++++++++----------- Shared/.kanbn/index.md | 1 + Shared/.kanbn/tasks/reload-slideshow.md | 10 +++ 4 files changed, 78 insertions(+), 43 deletions(-) create mode 100644 Shared/.kanbn/tasks/reload-slideshow.md diff --git a/Map/Models/MapLogic.cs b/Map/Models/MapLogic.cs index 7239fed..b91023e 100644 --- a/Map/Models/MapLogic.cs +++ b/Map/Models/MapLogic.cs @@ -54,12 +54,24 @@ public class MapLogic : Shared.Models.Methods.IMapLogic } else { + ReadOnlyCollection readOnlyPersonKeyFormattedCollection; + ReadOnlyDictionary readOnlyPersonKeyFormattedToNewestPersonKeyFormatted; ReadOnlyDictionary readOnlyPersonKeyFormattedToPersonContainer; ReadOnlyDictionary> readOnlyPersonKeyToPersonContainerCollection; + int copied = Stateless.MapLogic.CopyManualFiles(configuration, ticks, personContainers, eDistanceContentTicksDirectory); + if (copied > 0) + throw new Exception("Confirm Manual files and then restart!"); Stateless.MapLogic.SetSkipCollections(configuration, personContainers, a2PeopleSingletonDirectory, skipCollection, skipNotSkipCollection); - List records = Stateless.MapLogic.SetPersonCollectionsAndGetRecords(configuration, ticks, personContainers, eDistanceContentDirectory); + { + List personKeyFormattedCollection = new(); + Dictionary personKeyFormattedToNewestPersonKeyFormatted = new(); + Stateless.MapLogic.SetPersonCollections(configuration, personContainers, personKeyFormattedToNewestPersonKeyFormatted, personKeyFormattedCollection); + readOnlyPersonKeyFormattedCollection = new(personKeyFormattedCollection); + readOnlyPersonKeyFormattedToNewestPersonKeyFormatted = new(personKeyFormattedToNewestPersonKeyFormatted); + } + List records = Stateless.MapLogic.DeleteEmptyDirectoriesAndGetCollection(configuration, ticks, eDistanceContentDirectory, readOnlyPersonKeyFormattedToNewestPersonKeyFormatted, readOnlyPersonKeyFormattedCollection); ReadOnlyCollection<(Stateless.MapLogic.PersonKeyFormattedIdThenWholePercentages, PersonContainer)> readOnlyPossiblyNewPersonDisplayDirectoryNamesAndPersonContainer; - locationContainers.AddRange(Stateless.MapLogic.GetLocationContainers(distance, maxDegreeOfParallelism, configuration, ticks, personContainers, eDistanceContentDirectory, eDistanceContentTicksDirectory, skipCollection, records)); + locationContainers.AddRange(Stateless.MapLogic.GetLocationContainers(distance, maxDegreeOfParallelism, configuration, ticks, personContainers, eDistanceContentDirectory, skipCollection, records)); int lossCount = records.Count - locationContainers.Count; ReadOnlyCollection personKeyFormattedIdThenWholePercentagesCollection = Stateless.MapLogic.GetPersonKeyFormattedIdThenWholePercentages(configuration, ticks, records); int unableToMatchCount = records.Count - personKeyFormattedIdThenWholePercentagesCollection.Count; diff --git a/Map/Models/Stateless/MapLogic.cs b/Map/Models/Stateless/MapLogic.cs index ae34a5e..4251b3f 100644 --- a/Map/Models/Stateless/MapLogic.cs +++ b/Map/Models/Stateless/MapLogic.cs @@ -80,7 +80,7 @@ internal abstract class MapLogic } } - private static void SetPersonCollections(Configuration configuration, ReadOnlyCollection personContainers, Dictionary personKeyFormattedToNewestPersonKeyFormatted, List personKeyFormattedCollection) + internal static void SetPersonCollections(Configuration configuration, ReadOnlyCollection personContainers, Dictionary personKeyFormattedToNewestPersonKeyFormatted, List personKeyFormattedCollection) { string personKeyFormatted; string newestPersonKeyFormatted; @@ -246,7 +246,7 @@ internal abstract class MapLogic } } - private static List DeleteEmptyDirectoriesAndGetCollection(Configuration configuration, long ticks, string eDistanceContentDirectory, ReadOnlyDictionary personKeyFormattedToNewestPersonKeyFormatted, ReadOnlyCollection personKeyFormattedCollection) + internal static List DeleteEmptyDirectoriesAndGetCollection(Configuration configuration, long ticks, string eDistanceContentDirectory, ReadOnlyDictionary personKeyFormattedToNewestPersonKeyFormatted, ReadOnlyCollection personKeyFormattedCollection) { List results = new(); int? id; @@ -826,20 +826,11 @@ internal abstract class MapLogic return results; } - private static List<(long, int?, string)> GetDisplayDirectoryAllFiles(string fileNameExtension, string personBirthdayFormat, long ticks, string eDistanceContentTicksDirectory, ReadOnlyCollection personContainers) + private static List<(long, int?, string)> GetDisplayDirectoryAllFiles(string fileNameExtension, ReadOnlyCollection personContainers) { List<(long, int?, string)> results = new(); string fileName; - string checkFile; - string? directory; - string dateDirectory; - string directoryName; - string checkDirectory; - string personKeyFormatted; - PersonBirthday personBirthday; List distinct = new(); - DateTime dateTime = new(ticks); - string by = nameof(Shared.Models.Stateless.IMapLogic.ManualCopy); foreach (PersonContainer personContainer in personContainers) { if (personContainer.Key is null) @@ -853,30 +844,12 @@ internal abstract class MapLogic continue; distinct.Add(fileName); results.Add(new(personContainer.Key.Value, null, personContainer.DisplayDirectoryAllFiles[i])); - directory = Path.GetDirectoryName(personContainer.DisplayDirectoryAllFiles[i]); - if (string.IsNullOrEmpty(directory)) - continue; - directoryName = Path.GetFileName(directory); - if (directoryName != personContainer.DisplayDirectoryName) - continue; - personBirthday = IPersonBirthday.GetPersonBirthday(personContainer.Key.Value); - personKeyFormatted = IPersonBirthday.GetFormatted(personBirthdayFormat, personBirthday); - dateDirectory = Path.Combine(eDistanceContentTicksDirectory, by, personKeyFormatted, dateTime.ToString("yyyy")); - checkDirectory = Path.Combine(dateDirectory, personContainer.DisplayDirectoryName); - if (!Directory.Exists(checkDirectory)) - _ = Directory.CreateDirectory(checkDirectory); - checkFile = Path.Combine(dateDirectory, fileName); - if (File.Exists(checkFile)) - continue; - File.Move(personContainer.DisplayDirectoryAllFiles[i], checkFile); - results.RemoveAt(results.Count - 1); - personContainer.DisplayDirectoryAllFiles[i] = string.Empty; } } return results; } - private static List<(long PersonKey, int? DirectoryNumber, string File)> GetCollection(Configuration configuration, long ticks, string eDistanceContentTicksDirectory, ReadOnlyCollection personContainers, List records) + private static List<(long PersonKey, int? DirectoryNumber, string File)> GetCollection(Configuration configuration, ReadOnlyCollection personContainers, List records) { List<(long PersonKey, int? DirectoryNumber, string File)> results = new(); string file; @@ -884,7 +857,7 @@ internal abstract class MapLogic string fileName; List distinct = new(); PersonBirthday? personBirthday; - results.AddRange(GetDisplayDirectoryAllFiles(configuration.FacesFileNameExtension, configuration.PersonBirthdayFormat, ticks, eDistanceContentTicksDirectory, personContainers)); + results.AddRange(GetDisplayDirectoryAllFiles(configuration.FacesFileNameExtension, personContainers)); foreach (Record record in records) { personBirthday = IPersonBirthday.GetPersonBirthday(configuration.PersonBirthdayFormat, record.PersonKeyFormatted); @@ -1021,10 +994,10 @@ internal abstract class MapLogic } } - internal static List> GetLocationContainers(Shared.Models.Methods.IDistance distance, int maxDegreeOfParallelism, Configuration configuration, long ticks, ReadOnlyCollection personContainers, string eDistanceContentDirectory, string eDistanceContentTicksDirectory, Dictionary> skipCollection, List records) + internal static List> GetLocationContainers(Shared.Models.Methods.IDistance distance, int maxDegreeOfParallelism, Configuration configuration, long ticks, ReadOnlyCollection personContainers, string eDistanceContentDirectory, Dictionary> skipCollection, List records) { List> results = new(); - List<(long PersonKey, int? DirectoryNumber, string File)> collection = GetCollection(configuration, ticks, eDistanceContentTicksDirectory, personContainers, records); + List<(long PersonKey, int? DirectoryNumber, string File)> collection = GetCollection(configuration, personContainers, records); if (collection.Count > 0 && (configuration.DistanceMoveUnableToMatch || configuration.DistanceRenameToMatch)) { int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds); @@ -1045,14 +1018,53 @@ internal abstract class MapLogic return results; } - internal static List SetPersonCollectionsAndGetRecords(Configuration configuration, long ticks, ReadOnlyCollection personContainers, string eDistanceContentDirectory) + internal static int CopyManualFiles(Configuration configuration, long ticks, ReadOnlyCollection personContainers, string eDistanceContentTicksDirectory) { - List results; - List personKeyFormattedCollection = new(); - Dictionary personKeyFormattedToNewestPersonKeyFormatted = new(); - SetPersonCollections(configuration, personContainers, personKeyFormattedToNewestPersonKeyFormatted, personKeyFormattedCollection); - results = DeleteEmptyDirectoriesAndGetCollection(configuration, ticks, eDistanceContentDirectory, new(personKeyFormattedToNewestPersonKeyFormatted), new(personKeyFormattedCollection)); - return results; + int result = 0; + string fileName; + string checkFile; + string? directory; + string dateDirectory; + string directoryName; + string checkDirectory; + string personKeyFormatted; + PersonBirthday personBirthday; + List distinct = new(); + DateTime dateTime = new(ticks); + string by = nameof(Shared.Models.Stateless.IMapLogic.ManualCopy); + foreach (PersonContainer personContainer in personContainers) + { + if (personContainer.Key is null) + continue; + for (int i = personContainer.DisplayDirectoryAllFiles.Length - 1; i > -1; i--) + { + if (!personContainer.DisplayDirectoryAllFiles[i].EndsWith(configuration.FacesFileNameExtension)) + continue; + fileName = Path.GetFileName(personContainer.DisplayDirectoryAllFiles[i]); + if (distinct.Contains(fileName)) + continue; + distinct.Add(fileName); + directory = Path.GetDirectoryName(personContainer.DisplayDirectoryAllFiles[i]); + if (string.IsNullOrEmpty(directory)) + continue; + directoryName = Path.GetFileName(directory); + if (directoryName != personContainer.DisplayDirectoryName) + continue; + personBirthday = IPersonBirthday.GetPersonBirthday(personContainer.Key.Value); + personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personBirthday); + dateDirectory = Path.Combine(eDistanceContentTicksDirectory, by, personKeyFormatted, dateTime.ToString("yyyy")); + checkDirectory = Path.Combine(dateDirectory, personContainer.DisplayDirectoryName); + if (!Directory.Exists(checkDirectory)) + _ = Directory.CreateDirectory(checkDirectory); + checkFile = Path.Combine(dateDirectory, fileName); + if (File.Exists(checkFile)) + continue; + File.Move(personContainer.DisplayDirectoryAllFiles[i], checkFile); + personContainer.DisplayDirectoryAllFiles[i] = string.Empty; + result++; + } + } + return result; } private static string GetMappingSegmentB(long ticks, PersonBirthday personBirthday, int? approximateYears, long dateTimeOriginalThenMinimumDateTimeTicks, bool? isWrongYear) diff --git a/Shared/.kanbn/index.md b/Shared/.kanbn/index.md index d1cbe57..d9d3327 100644 --- a/Shared/.kanbn/index.md +++ b/Shared/.kanbn/index.md @@ -30,6 +30,7 @@ taskTemplate: '^+^_${overdue ? ''^R'' : ''''}${name}^: ${relations ? (''\n^-^/^g - [use-eyes-to-find-orientation](tasks/use-eyes-to-find-orientation.md) - [find-incorrectly-mapped-faces](tasks/find-incorrectly-mapped-faces.md) - [nef-support](tasks/nef-support.md) +- [reload-slideshow](tasks/reload-slideshow.md) - [set-date-taken-when-missing](tasks/set-date-taken-when-missing.md) ## In Progress diff --git a/Shared/.kanbn/tasks/reload-slideshow.md b/Shared/.kanbn/tasks/reload-slideshow.md new file mode 100644 index 0000000..39fdb54 --- /dev/null +++ b/Shared/.kanbn/tasks/reload-slideshow.md @@ -0,0 +1,10 @@ +--- +created: 2023-08-08T05:37:00.125Z +updated: 2023-08-08T05:37:14.241Z +assigned: "" +progress: 0 +tags: [] +started: 2023-08-08T05:37:10.651Z +--- + +# Reload slideshow