This commit is contained in:
2025-06-30 16:33:14 -07:00
parent c7ded16e50
commit 5d11335eda
38 changed files with 901 additions and 960 deletions

View File

@ -82,8 +82,8 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
List<string> personKeyFormattedCollection = [];
Dictionary<string, string> personKeyFormattedToNewestPersonKeyFormatted = [];
Stateless.MapLogic.SetPersonCollectionsAfterSetSkipCollections(configuration, personContainers, personKeyFormattedToNewestPersonKeyFormatted, personKeyFormattedCollection);
readOnlyPersonKeyFormattedCollection = new(personKeyFormattedCollection);
readOnlyPersonKeyFormattedToNewestPersonKeyFormatted = new(personKeyFormattedToNewestPersonKeyFormatted);
readOnlyPersonKeyFormattedCollection = personKeyFormattedCollection.AsReadOnly();
readOnlyPersonKeyFormattedToNewestPersonKeyFormatted = personKeyFormattedToNewestPersonKeyFormatted.AsReadOnly();
}
List<Stateless.Record> records = Stateless.DistanceLogic.DeleteEmptyDirectoriesAndGetCollection(propertyConfiguration, configuration, ticks, eDistanceContentDirectory, readOnlyPersonKeyFormattedToNewestPersonKeyFormatted, readOnlyPersonKeyFormattedCollection);
ReadOnlyCollection<(Stateless.MapLogic.PersonKeyFormattedIdThenWholePercentages, PersonContainer)> readOnlyPossiblyNewPersonDisplayDirectoryNamesAndPersonContainer;
@ -103,10 +103,10 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
personKeyFormattedToPersonContainer,
personKeyToPersonContainerCollection,
possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
readOnlyPersonKeyToCount = new(personKeyToCount);
readOnlyPersonKeyFormattedToPersonContainer = new(personKeyFormattedToPersonContainer);
readOnlyPersonKeyToPersonContainerCollection = new(personKeyToPersonContainerCollection);
readOnlyPossiblyNewPersonDisplayDirectoryNamesAndPersonContainer = new(possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
readOnlyPersonKeyToCount = personKeyToCount.AsReadOnly();
readOnlyPersonKeyFormattedToPersonContainer = personKeyFormattedToPersonContainer.AsReadOnly();
readOnlyPersonKeyToPersonContainerCollection = personKeyToPersonContainerCollection.AsReadOnly();
readOnlyPossiblyNewPersonDisplayDirectoryNamesAndPersonContainer = possiblyNewPersonDisplayDirectoryNamesAndPersonContainer.AsReadOnly();
Stateless.MapLogic.SetPersonKeyToPersonContainer(configuration,
personContainers,
readOnlyPersonKeyToCount,
@ -320,7 +320,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
public ReadOnlyCollection<LocationContainer> GetLocationContainers(Item item)
{
LocationContainer[] results;
if (item.ExifDirectory?.FilePath.Id is null)
if (item.ExifDirectory?.FilePath?.Id is null)
results = [];
else
{
@ -921,16 +921,16 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
return result;
}
public void LookForAbandoned(IDlibDotNet dlibDotNet, Property.Models.Configuration propertyConfiguration, string bResultsFullGroupDirectory, ReadOnlyCollection<Container.Models.Container> readOnlyContainers, string cResultsFullGroupDirectory, string dResultsFullGroupDirectory, string d2ResultsFullGroupDirectory)
public void LookForAbandoned(Property.Models.Configuration propertyConfiguration, string bResultsFullGroupDirectory, ReadOnlyCollection<Container.Models.Container> readOnlyContainers, string cResultsFullGroupDirectory, string dResultsFullGroupDirectory, string d2ResultsFullGroupDirectory, Action? tick)
{
string[] directories;
string? directoryName;
List<int> distinctFilteredIds = Container.Models.Stateless.Methods.IContainer.GetFilteredDistinctIds(propertyConfiguration, readOnlyContainers);
LookForAbandoned(propertyConfiguration, distinctFilteredIds);
dlibDotNet.Tick();
tick?.Invoke();
List<string> distinctFilteredFileNameFirstSegments = Container.Models.Stateless.Methods.IContainer.GetFilteredDistinctFileNameFirstSegments(propertyConfiguration, readOnlyContainers);
Stateless.LookForAbandonedLogic.LookForAbandoned(propertyConfiguration, bResultsFullGroupDirectory, distinctFilteredFileNameFirstSegments);
dlibDotNet.Tick();
tick?.Invoke();
directories = Directory.GetDirectories(cResultsFullGroupDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string directory in directories)
{
@ -939,7 +939,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
continue;
Stateless.LookForAbandonedLogic.LookForAbandoned(propertyConfiguration, distinctFilteredFileNameFirstSegments, directory, directoryName);
}
dlibDotNet.Tick();
tick?.Invoke();
directories = Directory.GetDirectories(dResultsFullGroupDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string directory in directories)
{
@ -948,7 +948,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
continue;
Stateless.LookForAbandonedLogic.LookForAbandoned(propertyConfiguration, distinctFilteredFileNameFirstSegments, directory, directoryName);
}
dlibDotNet.Tick();
tick?.Invoke();
directories = Directory.GetDirectories(d2ResultsFullGroupDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string directory in directories)
{
@ -957,7 +957,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
continue;
Stateless.LookForAbandonedLogic.LookForAbandoned(propertyConfiguration, distinctFilteredFileNameFirstSegments, directory, directoryName);
}
dlibDotNet.Tick();
tick?.Invoke();
}
private void LookForAbandoned(Property.Models.Configuration propertyConfiguration, List<int> distinctFilteredIds)

View File

@ -53,9 +53,9 @@ internal abstract class MapLogic
continue;
personContainers.Add(personContainer);
}
keyValuePairs.Add(wholePercentagesTo.Key, new(personContainers));
keyValuePairs.Add(wholePercentagesTo.Key, personContainers.AsReadOnly());
}
results.Add(idTo.Key, new(keyValuePairs));
results.Add(idTo.Key, keyValuePairs.AsReadOnly());
}
return results.AsReadOnly();
}
@ -110,7 +110,7 @@ internal abstract class MapLogic
List<Face> results = [];
foreach (Item item in items)
{
if (item.ExifDirectory?.FilePath.Id is null || item.ResizedFileHolder is null)
if (item.ExifDirectory?.FilePath?.Id is null || item.ResizedFileHolder is null)
continue;
foreach (Face face in item.Faces)
{
@ -384,7 +384,7 @@ internal abstract class MapLogic
{
Dictionary<int, ReadOnlyDictionary<int, Mapping>> results = [];
foreach (KeyValuePair<int, Dictionary<int, Mapping>> keyValuePair in keyValuePairs)
results.Add(keyValuePair.Key, new(keyValuePair.Value));
results.Add(keyValuePair.Key, keyValuePair.Value.AsReadOnly());
return results.AsReadOnly();
}
@ -602,7 +602,7 @@ internal abstract class MapLogic
if (check)
continue;
personBirthday = IPersonBirthday.GetPersonBirthday(personKey + (oneHour * 2));
personContainer = PersonContainer.Get(approximateYears, [personBirthday], new(personDisplayDirectoryAllFilePaths), configuration.MappingDefaultName, personKey);
personContainer = PersonContainer.Get(approximateYears, [personBirthday], personDisplayDirectoryAllFilePaths.AsReadOnly(), configuration.MappingDefaultName, personKey);
results.Add(personContainer);
if (results.Count > 99)
break;
@ -1095,7 +1095,7 @@ internal abstract class MapLogic
}
if (string.IsNullOrEmpty(configuration.LocationContainerDebugDirectory))
{
ReadOnlyCollection<LocationContainer> locationContainers = new(results.OrderBy(l => l.DirectoryNumber).ToArray());
ReadOnlyCollection<LocationContainer> locationContainers = results.OrderBy(l => l.DirectoryNumber).ToArray().AsReadOnly();
LookForPossibleDuplicates(configuration, locationContainers);
}
return results;