Using PersonContainer for PersonDisplayDirectoryName

This commit is contained in:
Mike Phares 2024-12-29 11:38:24 -07:00
parent 1f8c4569ee
commit 17532d2698
4 changed files with 34 additions and 11 deletions

4
.vscode/launch.json vendored
View File

@ -5,7 +5,7 @@
"name": "Rename",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-Rename",
"preLaunchTask": "Build-Rename",
"program": "${workspaceFolder}/Rename/bin/Debug/net9.0/win-x64/AA.Rename.dll",
"args": [
"s"
@ -22,7 +22,7 @@
"name": "Compare",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build-Compare",
"preLaunchTask": "Build-Compare",
"program": "${workspaceFolder}/Compare/bin/Debug/net9.0/win-x64/AA.Compare.dll",
"args": [
"s"

View File

@ -17,6 +17,7 @@ internal static class MappedLogicA
private static List<MappedFile> GetDisplayDirectoryAllFiles(PeopleSettings peopleSettings, ICompareSettings compareSettings, ReadOnlyCollections readOnlyCollections)
{
List<MappedFile> results = [];
FilePath filePath;
MappedFile mappedFile;
string personKeyFormatted;
List<string> distinct = [];
@ -27,14 +28,15 @@ internal static class MappedLogicA
continue;
for (int i = personContainer.DisplayDirectoryAllFilePaths.Count - 1; i > -1; i--)
{
if (personContainer.DisplayDirectoryAllFilePaths[i].ExtensionLowered != compareSettings.FacesFileNameExtension)
filePath = personContainer.DisplayDirectoryAllFilePaths[i];
if (filePath.ExtensionLowered != compareSettings.FacesFileNameExtension)
continue;
if (distinct.Contains(personContainer.DisplayDirectoryAllFilePaths[i].Name))
if (distinct.Contains(filePath.Name))
continue;
distinct.Add(personContainer.DisplayDirectoryAllFilePaths[i].Name);
distinct.Add(filePath.Name);
personKeyFormatted = IPersonBirthday.GetFormatted(peopleSettings.PersonBirthdayFormat, personContainer.Key.Value);
personKeyFormattedAndKeyTicksAndDisplayDirectoryName = new(personKeyFormatted, personContainer.Key.Value, personContainer.DisplayDirectoryAllFilePaths[i].Name);
mappedFile = new(personKeyFormattedAndKeyTicksAndDisplayDirectoryName, personContainer.DisplayDirectoryName, personContainer.DisplayDirectoryAllFilePaths[i]);
personKeyFormattedAndKeyTicksAndDisplayDirectoryName = new(personKeyFormatted, personContainer.Key.Value, filePath.Name);
mappedFile = new(personKeyFormattedAndKeyTicksAndDisplayDirectoryName, personContainer.DisplayDirectoryName, filePath);
results.Add(mappedFile);
}
}
@ -51,8 +53,11 @@ internal static class MappedLogicA
MappedFile mappedFile;
List<string> distinct = [];
PersonBirthday? personBirthday;
PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName personKeyFormattedAndKeyTicksAndDisplayDirectoryName;
PersonContainer? personContainer;
string? personDisplayDirectoryName;
results.AddRange(GetDisplayDirectoryAllFiles(peopleSettings, compareSettings, readOnlyCollections));
ReadOnlyDictionary<long, PersonContainer> keyValuePairs = PersonContainer.Extract(readOnlyCollections.PersonContainers);
PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName personKeyFormattedAndKeyTicksAndDisplayDirectoryName;
foreach (MappedLogicB.Record record in records)
{
personBirthday = IPersonBirthday.GetPersonBirthday(peopleSettings.PersonBirthdayFormat, record.PersonKeyFormatted);
@ -62,8 +67,12 @@ internal static class MappedLogicA
continue;
distinct.Add(record.MappedFaceFilePath.Name);
personKey = personBirthday.Value.Ticks;
personKeyFormattedAndKeyTicksAndDisplayDirectoryName = new(record.PersonKeyFormatted, personKey, record.PersonDisplayDirectoryName);
mappedFile = new(personKeyFormattedAndKeyTicksAndDisplayDirectoryName, record.PersonDisplayDirectoryName, record.MappedFaceFilePath);
if (!keyValuePairs.TryGetValue(personKey, out personContainer))
personDisplayDirectoryName = record.PersonDisplayDirectoryName;
else
personDisplayDirectoryName = personContainer.DisplayDirectoryName;
personKeyFormattedAndKeyTicksAndDisplayDirectoryName = new(record.PersonKeyFormatted, personKey, personDisplayDirectoryName);
mappedFile = new(personKeyFormattedAndKeyTicksAndDisplayDirectoryName, personDisplayDirectoryName, record.MappedFaceFilePath);
results.Add(mappedFile);
}
for (int i = results.Count - 1; i > -1; i--)

View File

@ -40,6 +40,18 @@ public record PersonContainer(int? ApproximateYears,
public static bool? IsKeyIsMaxBirthday(PersonContainer personContainer) =>
personContainer.Birthdays is null || personContainer.Key is null ? null : personContainer.Key.Value == personContainer.Birthdays.First().Value.Ticks;
public static ReadOnlyDictionary<long, PersonContainer> Extract(ReadOnlyCollection<PersonContainer> personContainers)
{
Dictionary<long, PersonContainer> results = [];
foreach (PersonContainer personContainer in personContainers)
{
if (personContainer.Key is null || results.ContainsKey(personContainer.Key.Value))
continue;
results.Add(personContainer.Key.Value, personContainer);
}
return results.AsReadOnly();
}
}
[JsonSourceGenerationOptions(WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull)]

View File

@ -3,7 +3,9 @@ using System.Text.Json.Serialization;
namespace View_by_Distance.Shared.Models;
public record PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName(string KeyFormatted, long KeyTicks, string? DisplayDirectoryName)
public record PersonKeyFormattedAndKeyTicksAndDisplayDirectoryName(string KeyFormatted,
long KeyTicks,
string? DisplayDirectoryName)
{
public override string ToString()