DistanceLimits
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user