More Individually and bug fix

This commit is contained in:
2023-04-10 14:51:43 -07:00
parent dd2c51a093
commit 4d0739dee6
6 changed files with 75 additions and 49 deletions

View File

@ -28,7 +28,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
private readonly string _EDistanceContentTicksDirectory;
private readonly Shared.Models.Properties.IPropertyConfiguration _PropertyConfiguration;
public MapLogic(int maxDegreeOfParallelism, Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, bool saveIndividually, Configuration? configuration, PersonContainer[] personContainers, long ticks, string a2PeopleSingletonDirectory, string eDistanceContentDirectory)
public MapLogic(int maxDegreeOfParallelism, Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, Configuration? configuration, PersonContainer[] personContainers, long ticks, string a2PeopleSingletonDirectory, string eDistanceContentDirectory)
{
_Ticks = ticks;
_Configuration = configuration;
@ -51,12 +51,6 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
string? rootDirectoryParent = Path.GetDirectoryName(propertyConfiguration.RootDirectory);
string eDistanceContentTicksDirectory = Path.Combine(eDistanceContentDirectory, $"({ticks})");
Dictionary<int, Dictionary<int, PersonContainer[]>> idThenNormalizedRectangleToPersonContainers = new();
if (!saveIndividually)
{
for (int i = 1; i < 5; i++)
_ = IPath.DeleteEmptyDirectories(eDistanceContentDirectory);
_ = IPath.DeleteEmptyDirectories(eDistanceContentDirectory);
}
if (string.IsNullOrEmpty(rootDirectoryParent))
throw new NullReferenceException(nameof(rootDirectoryParent));
if (!Directory.Exists(eDistanceContentDirectory))
@ -200,12 +194,13 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
return result;
}
public void SaveContainers(int totalNotMapped, int? updated, List<SaveContainer> saveContainers)
public void SaveContainers(bool saveIndividually, int totalNotMapped, int? updated, List<SaveContainer> saveContainers)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
string checkFile;
string sourceFile;
List<string> distinct = new();
WindowsShortcut windowsShortcut;
string[] directories = (from l in saveContainers select l.Directory).Distinct().ToArray();
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - _Ticks).TotalSeconds);
@ -245,6 +240,12 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
}
else
continue;
if (saveIndividually)
{
if (distinct.Contains(checkFile))
continue;
distinct.Add(checkFile);
}
if (File.Exists(checkFile))
continue;
File.Copy(sourceFile, checkFile);
@ -414,7 +415,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
{
if (sortingContainersAny)
continue;
mapping.UpdateMappingFromUnknownPerson(new(mapping, new(mapping, mapping.MappingFromLocation)));
mapping.UpdateMappingFromUnknownPerson(saveIndividually, new(mapping, new(mapping, mapping.MappingFromLocation)));
if (mapping.SortingContainer is null)
continue;
}
@ -519,7 +520,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
results.Add(saveContainer);
}
if (!saveIndividually)
saveContainer = Stateless.MapLogic.GetDebugSaveContainer(directory, mapping.SortingContainer, keyMapping);
saveContainer = Stateless.MapLogic.GetDebugSaveContainer(directory, mapping.MappingFromPerson, mapping.SortingContainer, keyMapping);
else
{
(saveContainer, SaveContainer? extraSaveContainer) = Stateless.MapLogic.GetContainers(_Configuration.FacesFileNameExtension, _Configuration.FacePartsFileNameExtension, dFacesContentDirectory, d2FacePartsContentCollectionDirectory, directory, mapping.SortingContainer, keyMapping);
@ -550,9 +551,10 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
int? updated = null;
bool saveMapped = true;
int? useFiltersCounter = null;
bool saveIndividually = false;
string mappingDirectory = Path.Combine(_EDistanceContentTicksDirectory, nameof(Shared.Models.Stateless.IMapLogic.Mapping));
List<SaveContainer> saveContainers = GetSaveContainers(dFacesContentDirectory, d2FacePartsContentDirectory, d2FacePartsContentCollectionDirectory, mappingCollection, idToNormalizedRectangleToMapping, personKeyToIds, useFiltersCounter, saveMapped, sortingContainersAny: true, saveIndividually: false);
SaveContainers(totalNotMapped, updated, saveContainers);
SaveContainers(saveIndividually, totalNotMapped, updated, saveContainers);
if (!string.IsNullOrEmpty(_EDistanceContentTicksDirectory) && Directory.Exists(mappingDirectory))
Stateless.MapLogic.SaveMappingShortcuts(mappingDirectory);
}
@ -662,7 +664,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
continue;
if (normalizedRectangleCollectionForA.Contains(sortingContainer.Mapping.MappingFromLocation.NormalizedRectangle))
continue;
sortingContainer.Mapping.UpdateMappingFromUnknownPerson(sortingContainer);
sortingContainer.Mapping.UpdateMappingFromUnknownPerson(saveIndividually, sortingContainer);
normalizedRectangleCollectionForA.Add(sortingContainer.Mapping.MappingFromLocation.NormalizedRectangle);
result += 1;
}
@ -1017,6 +1019,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
SaveContainer? saveContainer;
bool saveIndividually = false;
List<SaveContainer> saveContainers = new();
Stateless.MapLogic.BeforeSaveFilteredOriginalImagesFromJLinks(jLinks, a2PeopleContentDirectory);
(int, FileHolder, int, string, string, string, string)[] collection = GetCollectionForSaveFilteredOriginalImagesFromJLinks(jLinks, a2PeopleContentDirectory, personContainers, mappingCollection, personKeyToIds);
@ -1027,7 +1030,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
saveContainer = new(imageFileHolder, checkFile, directory);
saveContainers.Add(saveContainer);
}
SaveContainers(totalNotMapped, null, saveContainers);
SaveContainers(saveIndividually, totalNotMapped, null, saveContainers);
}
private List<SaveShortcutsForOutputResolutions> GetCollectionForSaveShortcutsForOutputResolutionsPreMapLogic(string eDistanceContentDirectory, Dictionary<long, List<int>> personKeyToIds, Dictionary<int, List<LocationContainer<MetadataExtractor.Directory>>> idToLocationContainers, Mapping[] mappingCollection)