DistanceLimits

This commit is contained in:
2023-02-25 23:01:08 -07:00
parent db43eb5459
commit 0f025b5e2e
26 changed files with 426 additions and 392 deletions

View File

@ -14,6 +14,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
protected readonly List<PersonContainer> _NotMappedPersonContainers;
protected readonly ReadOnlyDictionary<int, List<int>> _SkipCollection;
protected readonly ReadOnlyDictionary<int, List<int>> _SkipNotSkipCollection;
protected readonly ReadOnlyDictionary<long, PersonContainer> _PersonKeyToPersonContainer;
protected readonly ReadOnlyDictionary<int, Dictionary<int, PersonContainer[]>> _IdThenNormalizedRectangleToPersonContainers;
@ -45,6 +46,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
List<KeyValuePair<int, int[]>>? collection;
Dictionary<int, List<int>> skipCollection = new();
List<PersonContainer> notMappedPersonContainers = new();
Dictionary<int, List<int>> skipNotSkipCollection = new();
Dictionary<long, PersonContainer> personKeyToPersonContainer = new();
string? rootDirectoryParent = Path.GetDirectoryName(propertyConfiguration.RootDirectory);
string eDistanceContentTicksDirectory = Path.Combine(eDistanceContentDirectory, $"({ticks})");
@ -69,6 +71,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
personKeyToPersonContainer,
notMappedPersonContainers,
skipCollection,
skipNotSkipCollection,
idThenNormalizedRectangleToPersonContainers);
if (personContainerCollection.Count == personContainers.Length)
throw new NotSupportedException();
@ -86,6 +89,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
throw new NullReferenceException(nameof(collection));
}
_SkipCollection = new(skipCollection);
_SkipNotSkipCollection = new(skipNotSkipCollection);
_PersonKeyToPersonContainer = new(personKeyToPersonContainer);
_EDistanceContentTicksDirectory = eDistanceContentTicksDirectory;
_NotMappedPersonContainers = notMappedPersonContainers.OrderByDescending(l => l.Key).ToList();
@ -441,6 +445,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
FileHolder hiddenFaceFileHolder;
List<int>? normalizedRectangles;
Dictionary<int, Mapping>? normalizedRectangleToMapping;
bool skipNotSkipDirectoriesAny = _Configuration.SkipNotSkipDirectories.Any();
string forceSingleImageHumanized = nameof(Shared.Models.Stateless.IMapLogic.ForceSingleImage).Humanize(LetterCasing.Title);
foreach (Mapping mapping in mappingCollection)
{
@ -451,6 +456,8 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
throw new NotSupportedException();
if (_SkipCollection.TryGetValue(mapping.MappingFromItem.Id, out normalizedRectangles) && normalizedRectangles.Contains(mapping.MappingFromLocation.NormalizedRectangle))
continue;
if (mapping.By is null && skipNotSkipDirectoriesAny)
continue;
(by, isByMapping, isBySorting) = Get(useFiltersCounter, sortingContainersAny, forceSingleImageHumanized, mapping);
if (isByMapping && !saveMapped)
continue;
@ -593,6 +600,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
Sorting sorting;
FaceDistance faceDistanceLength;
List<int>? normalizedRectangles;
bool skipNotSkipCollectionAny = _SkipNotSkipCollection.Any();
Dictionary<int, PersonContainer[]>? normalizedRectangleToPersonContainers;
for (int j = 0; j < faceDistanceLengths.Count; j++)
{
@ -602,6 +610,8 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
continue;
if (_SkipCollection.TryGetValue(faceDistanceEncoding.Id, out normalizedRectangles) && normalizedRectangles.Contains(faceDistanceEncoding.NormalizedRectangle.Value))
continue;
if (skipNotSkipCollectionAny && (!_SkipNotSkipCollection.TryGetValue(faceDistanceEncoding.Id, out normalizedRectangles) || !normalizedRectangles.Contains(faceDistanceEncoding.NormalizedRectangle.Value)))
continue;
if (_IdThenNormalizedRectangleToPersonContainers.TryGetValue(faceDistanceEncoding.Id, out normalizedRectangleToPersonContainers))
{
if (normalizedRectangleToPersonContainers.ContainsKey(faceDistanceEncoding.NormalizedRectangle.Value))
@ -626,13 +636,13 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
return results;
}
public int UpdateFromSortingContainers(Shared.Models.Methods.IMapLogicSupport mapLogicSupport, SortingContainer[] sortingContainers)
public int UpdateFromSortingContainers(Shared.Models.Methods.IDistanceLimits distanceLimits, SortingContainer[] sortingContainers)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
if (mapLogicSupport is not null)
if (distanceLimits is not null)
{
string counts = mapLogicSupport.GetCounts();
string counts = distanceLimits.GetCounts();
_ = Directory.CreateDirectory(Path.Combine(_EDistanceContentTicksDirectory, counts));
}
int result = 0;
@ -1319,19 +1329,4 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
return results;
}
public List<Face> GetFurtherFilterBySkipCollection(List<Face> distinctFilteredFaces)
{
List<Face> results = new();
List<int>? normalizedRectangles;
foreach (Face face in distinctFilteredFaces)
{
if (face.Mapping?.MappingFromLocation is null)
continue;
if (_SkipCollection.TryGetValue(face.Mapping.MappingFromItem.Id, out normalizedRectangles) && normalizedRectangles.Contains(face.Mapping.MappingFromLocation.NormalizedRectangle))
continue;
results.Add(face);
}
return results;
}
}