Re-Write without checking mapped
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -3,12 +3,6 @@ namespace View_by_Distance.Map.Models.Stateless;
|
||||
public interface IMapLogic
|
||||
{ // ...
|
||||
|
||||
(bool?, string[]) TestStatic_IsWrongYear(Shared.Models.Item item);
|
||||
static (bool?, string[]) IsWrongYear(Shared.Models.Item item) =>
|
||||
MapLogic.IsWrongYear(item);
|
||||
|
||||
Dictionary<string, List<Shared.Models.MappingContainer>> TestStatic_GetKeyValuePairs(Shared.Models.Item[] items);
|
||||
static Dictionary<string, List<Shared.Models.MappingContainer>> GetKeyValuePairs(Shared.Models.Item[] items) =>
|
||||
MapLogic.GetKeyValuePairs(items);
|
||||
const int Sigma = 3;
|
||||
|
||||
}
|
@ -1,84 +1,6 @@
|
||||
using View_by_Distance.Shared.Models;
|
||||
|
||||
namespace View_by_Distance.Map.Models.Stateless;
|
||||
|
||||
internal abstract class MapLogic
|
||||
{
|
||||
|
||||
internal static string GetMappingSegmentB(long ticks, PersonBirthday personBirthday, int? approximateYears, DateTime minimumDateTime, bool? isWrongYear)
|
||||
{
|
||||
int years;
|
||||
string result;
|
||||
TimeSpan? timeSpan = Shared.Models.Stateless.Methods.IPersonBirthday.GetTimeSpan(minimumDateTime, isWrongYear, personBirthday);
|
||||
if (timeSpan.HasValue && timeSpan.Value.Ticks < 0)
|
||||
result = "!---";
|
||||
else if (timeSpan.HasValue)
|
||||
{
|
||||
(years, _) = Shared.Models.Stateless.Methods.IPersonBirthday.GetAge(minimumDateTime, personBirthday);
|
||||
result = $"^{years:000}";
|
||||
}
|
||||
else if (approximateYears.HasValue)
|
||||
{
|
||||
DateTime dateTime = new(ticks);
|
||||
(years, _) = Shared.Models.Stateless.Methods.IAge.GetAge(minimumDateTime, dateTime.AddYears(-approximateYears.Value));
|
||||
result = $"~{years:000}";
|
||||
}
|
||||
else
|
||||
{
|
||||
string isWrongYearFlag = Shared.Models.Stateless.Methods.IItem.GetWrongYearFlag(isWrongYear);
|
||||
result = $"{isWrongYearFlag}{minimumDateTime:yyyy}";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static Dictionary<string, List<MappingContainer>> GetKeyValuePairs(Item[] items)
|
||||
{
|
||||
Dictionary<string, List<MappingContainer>> results = new();
|
||||
string key;
|
||||
bool? isWrongYear;
|
||||
string personKeyFormatted;
|
||||
DateTime minimumDateTime;
|
||||
MappingContainer mappingContainer;
|
||||
foreach (Item item in items)
|
||||
{
|
||||
if (item.Property?.Id is null || item.ImageFileHolder is null || item.ResizedFileHolder is null)
|
||||
continue;
|
||||
if (!item.Mapping.Any())
|
||||
continue;
|
||||
foreach (Face face in item.Faces)
|
||||
{
|
||||
if (face.FaceEncoding is null || face.Location?.NormalizedPixelPercentage is null)
|
||||
continue;
|
||||
foreach (Mapping mapping in item.Mapping)
|
||||
{
|
||||
if (mapping.NormalizedPixelPercentage.HasValue && mapping.NormalizedPixelPercentage.Value != face.Location.NormalizedPixelPercentage.Value)
|
||||
continue;
|
||||
// if (named.NormalizedPixelPercentage is null && (Shared.Models.Stateless.INamed.OnlyUseNamedWithNormalizedPixelPercentagePopulatedForGetKeyValuePairs || item.Named.Count != 1 || item.Faces.Count != 1))
|
||||
// continue;
|
||||
minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
|
||||
(isWrongYear, _) = item.Property.IsWrongYear(item.ImageFileHolder.FullName, minimumDateTime);
|
||||
personKeyFormatted = Shared.Models.Stateless.Methods.IPersonBirthday.GetFormatted(mapping.PersonBirthday);
|
||||
key = string.Concat(personKeyFormatted, mapping.SegmentB);
|
||||
if (!results.ContainsKey(key))
|
||||
results.Add(key, new());
|
||||
mappingContainer = new(face, item.Property.Id.Value, isWrongYear, key, mapping, minimumDateTime);
|
||||
results[key].Add(mappingContainer);
|
||||
// if (named.NormalizedPixelPercentage is null)
|
||||
// break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static (bool?, string[]) IsWrongYear(Item item)
|
||||
{
|
||||
(bool?, string[]) result;
|
||||
if (item.Property is null || item.ImageFileHolder is null)
|
||||
throw new NullReferenceException();
|
||||
DateTime? minimumDateTime = Shared.Models.Stateless.Methods.IProperty.GetMinimumDateTime(item.Property);
|
||||
result = item.Property.IsWrongYear(item.ImageFileHolder.FullName, minimumDateTime);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
6
Map/Models/Stateless/Methods/IMapLogic.cs
Normal file
6
Map/Models/Stateless/Methods/IMapLogic.cs
Normal file
@ -0,0 +1,6 @@
|
||||
namespace View_by_Distance.Map.Models.Stateless.Methods;
|
||||
|
||||
public interface IMapLogic
|
||||
{ // ...
|
||||
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
using ShellProgressBar;
|
||||
using System.Globalization;
|
||||
using System.Text.Json;
|
||||
using View_by_Distance.Shared.Models;
|
||||
@ -7,11 +8,14 @@ namespace View_by_Distance.Map.Models.Stateless;
|
||||
public class ByDeterministicHashCode
|
||||
{
|
||||
|
||||
private static void SetOther(string resizeFilenameExtension, Person[] people, string deterministicHashCodePeopleDirectory, List<double> skipCollection, List<(string, int?, PersonBirthday[], long)> peopleCollection)
|
||||
private static void SetOther(string resizeFilenameExtension, Person[] people, string deterministicHashCodePeopleDirectory, List<double> skipCollection, Dictionary<long, long> personKeyAliases, List<(string, int?, PersonBirthday[], long)> peopleCollection)
|
||||
{
|
||||
long ticks;
|
||||
long pK;
|
||||
string json;
|
||||
long personKey;
|
||||
PersonBirthday pB;
|
||||
string[] segments;
|
||||
const int zero = 0;
|
||||
int? approximateYears;
|
||||
string groupDirectoryName;
|
||||
string personKeyFormatted;
|
||||
@ -37,12 +41,12 @@ public class ByDeterministicHashCode
|
||||
foreach (string groupDirectory in groupDirectories)
|
||||
{
|
||||
groupDirectoryName = Path.GetFileName(groupDirectory);
|
||||
if (groupDirectoryName[0] == '!')
|
||||
if (groupDirectoryName[zero] == '!')
|
||||
{
|
||||
skipCollection.AddRange(from l in Directory.GetFiles(groupDirectory, $"*{resizeFilenameExtension}", SearchOption.AllDirectories) select double.Parse(Path.GetFileNameWithoutExtension(l)));
|
||||
continue;
|
||||
}
|
||||
else if (groupDirectoryName[0] is not '_' and not '~' and not '^')
|
||||
else if (groupDirectoryName[zero] is not '_' and not '~' and not '^')
|
||||
continue;
|
||||
skipCollection.AddRange(from l in Directory.GetFiles(groupDirectory, $"*{resizeFilenameExtension}", SearchOption.AllDirectories) select double.Parse(Path.GetFileNameWithoutExtension(l)));
|
||||
personDisplayDirectories = Directory.GetDirectories(groupDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
@ -52,12 +56,12 @@ public class ByDeterministicHashCode
|
||||
personDisplayDirectoryName = Path.GetFileName(personDisplayDirectory);
|
||||
if (string.IsNullOrEmpty(personDisplayDirectoryName))
|
||||
continue;
|
||||
if (groupDirectoryName[0] != '~')
|
||||
if (groupDirectoryName[zero] != '~')
|
||||
approximateYears = null;
|
||||
else
|
||||
{
|
||||
segments = personDisplayDirectoryName.Split('~');
|
||||
if (segments.Length == 1 || !int.TryParse(segments[1].Split('-')[0], out int years))
|
||||
if (segments.Length == 1 || !int.TryParse(segments[1].Split('-')[zero], out int years))
|
||||
approximateYears = null;
|
||||
else
|
||||
approximateYears = years;
|
||||
@ -98,12 +102,22 @@ public class ByDeterministicHashCode
|
||||
_ = Shared.Models.Stateless.Methods.IPath.WriteAllText(personKeyJsonFileName, json, updateDateWhenMatches: false, compareBeforeWrite: true, updateToWhenMatches: null);
|
||||
}
|
||||
collection = personBirthdays.OrderByDescending(l => l.Value).ToArray();
|
||||
ticks = collection[0].Value.Ticks;
|
||||
peopleCollection.Add(new(personDisplayDirectoryName, approximateYears, collection, ticks));
|
||||
personKey = collection[zero].Value.Ticks;
|
||||
if (personBirthdays.Count > 1)
|
||||
{
|
||||
for (int i = 1; i < collection.Length; i++)
|
||||
{
|
||||
pB = collection[i];
|
||||
pK = pB.Value.Ticks;
|
||||
if (!personKeyAliases.ContainsKey(pK))
|
||||
personKeyAliases.Add(pK, personKey);
|
||||
}
|
||||
}
|
||||
peopleCollection.Add(new(personDisplayDirectoryName, approximateYears, collection, personKey));
|
||||
for (int i = 0; i < collection.Length; i++)
|
||||
{
|
||||
ticks = collection[i].Value.Ticks;
|
||||
personKeys.Add(ticks);
|
||||
personKey = collection[i].Value.Ticks;
|
||||
personKeys.Add(personKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -113,48 +127,62 @@ public class ByDeterministicHashCode
|
||||
DateTime incrementDate = new(Shared.Models.Stateless.IPersonBirthday.FirstYear, 1, 1);
|
||||
for (int i = 0; i < 500; i++)
|
||||
{
|
||||
ticks = incrementDate.Ticks;
|
||||
personKey = incrementDate.Ticks;
|
||||
personBirthday = new(incrementDate);
|
||||
incrementDate = incrementDate.AddDays(1);
|
||||
personKeyFormatted = Shared.Models.Stateless.Methods.IPersonBirthday.GetFormatted(personBirthday);
|
||||
if (personKeys.Contains(ticks))
|
||||
if (personKeys.Contains(personKey))
|
||||
continue;
|
||||
personKeys.Add(ticks);
|
||||
peopleCollection.Add(new(displayDirectoryName, approximateYears, new PersonBirthday[] { personBirthday }, ticks));
|
||||
personKeys.Add(personKey);
|
||||
peopleCollection.Add(new(displayDirectoryName, approximateYears, new PersonBirthday[] { personBirthday }, personKey));
|
||||
}
|
||||
}
|
||||
|
||||
internal static void SetKeyValuePairs(string zPropertyHolderContentDirectory, List<(PersonBirthday, double)> deterministicHashCodeCollection, List<(PersonBirthday, double)> incorrectDeterministicHashCodeCollection, Dictionary<int, List<Face>> keyValuePairs)
|
||||
internal static void SetCollections(int maxDegreeOfParallelism, long ticks, string zPropertyHolderContentDirectory, Dictionary<long, long> personKeyAliases, List<(PersonBirthday, int, int)> idThenNormalizedPixelPercentageCollection, List<(PersonBirthday, double)> incorrectDeterministicHashCodeCollection, Dictionary<int, List<Face>> keyValuePairs)
|
||||
{
|
||||
int? id;
|
||||
string[] files;
|
||||
string personKey;
|
||||
long personKey;
|
||||
const int zero = 0;
|
||||
string[] yearDirectories;
|
||||
string personKeyFormatted;
|
||||
string ticksDirectoryName;
|
||||
string? personFirstInitial;
|
||||
string[] personKeyDirectories;
|
||||
int? normalizedPixelPercentage;
|
||||
string[] personNameDirectories;
|
||||
PersonBirthday? personBirthday;
|
||||
string[] personNameLinkDirectories;
|
||||
string? personFirstInitialDirectory;
|
||||
double? reversedDeterministicHashCodeKey;
|
||||
bool keyValuePairsAny = keyValuePairs.Any();
|
||||
ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = maxDegreeOfParallelism };
|
||||
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||
string[] ticksDirectories = Directory.GetDirectories(zPropertyHolderContentDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
string message = $") {ticksDirectories.Length:000} ticks Director(ies) - {totalSeconds} total second(s)";
|
||||
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
|
||||
using ProgressBar progressBar = new(ticksDirectories.Length, message, options);
|
||||
foreach (string ticksDirectory in ticksDirectories)
|
||||
{
|
||||
progressBar.Tick();
|
||||
ticksDirectoryName = Path.GetFileName(ticksDirectory);
|
||||
if (ticksDirectoryName.Length < 3 || ticksDirectoryName[0] != '(' || ticksDirectoryName[^1] != ')')
|
||||
if (ticksDirectoryName.Length < 3 || ticksDirectoryName[zero] != '(' || ticksDirectoryName[^1] != ')')
|
||||
continue;
|
||||
personKeyDirectories = Directory.GetDirectories(ticksDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string personKeyDirectory in personKeyDirectories)
|
||||
{
|
||||
personKey = Path.GetFileName(personKeyDirectory);
|
||||
if (personKey.Length != Shared.Models.Stateless.IPersonBirthday.Format.Length)
|
||||
personKeyFormatted = Path.GetFileName(personKeyDirectory);
|
||||
if (personKeyFormatted.Length != Shared.Models.Stateless.IPersonBirthday.Format.Length)
|
||||
personBirthday = null;
|
||||
else
|
||||
{
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(personKey);
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(personKeyFormatted);
|
||||
if (personBirthday is null)
|
||||
continue;
|
||||
personKey = personBirthday.Value.Ticks;
|
||||
if (personKeyAliases.ContainsKey(personKey))
|
||||
{
|
||||
personKey = personKeyAliases[personKey];
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(personKey);
|
||||
}
|
||||
}
|
||||
yearDirectories = Directory.GetDirectories(personKeyDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string yearDirectory in yearDirectories)
|
||||
@ -170,18 +198,20 @@ public class ByDeterministicHashCode
|
||||
continue;
|
||||
personFirstInitialDirectory = Path.Combine(yearDirectory, personFirstInitial);
|
||||
files = Directory.GetFiles(personNameDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
if (personKey == nameof(Closest) && files.Any())
|
||||
throw new Exception($"Move personKey directories up one from {nameof(Closest)} and delete {nameof(Closest)} directory!");
|
||||
if (personKeyFormatted == nameof(Models.MapLogic.ForceSingleImage) && files.Any())
|
||||
throw new Exception($"Move personKey directories up one from {nameof(Models.MapLogic.ForceSingleImage)} and delete {nameof(Models.MapLogic.ForceSingleImage)} directory!");
|
||||
if (personKeyFormatted == nameof(Sorting) && files.Any())
|
||||
throw new Exception($"Move personKey directories up one from {nameof(Sorting)} and delete {nameof(Sorting)} directory!");
|
||||
if (personBirthday is null)
|
||||
continue;
|
||||
foreach (string file in files)
|
||||
{
|
||||
if (file.EndsWith(".lnk") || file.EndsWith(".json"))
|
||||
continue;
|
||||
reversedDeterministicHashCodeKey = Shared.Models.Stateless.Methods.IMapping.GetReversedDeterministicHashCodeKey(keyValuePairsAny, keyValuePairs, file);
|
||||
if (reversedDeterministicHashCodeKey is null)
|
||||
(id, normalizedPixelPercentage) = Shared.Models.Stateless.Methods.IMapping.GetReversedDeterministicHashCodeKey(keyValuePairsAny, keyValuePairs, file);
|
||||
if (id is null || normalizedPixelPercentage is null)
|
||||
continue;
|
||||
deterministicHashCodeCollection.Add(new(personBirthday, reversedDeterministicHashCodeKey.Value));
|
||||
idThenNormalizedPixelPercentageCollection.Add(new(personBirthday, id.Value, normalizedPixelPercentage.Value));
|
||||
}
|
||||
personNameLinkDirectories = Directory.GetDirectories(personNameDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string personNameLinkDirectory in personNameLinkDirectories)
|
||||
@ -209,7 +239,7 @@ public class ByDeterministicHashCode
|
||||
}
|
||||
}
|
||||
|
||||
private static List<long> GetTicks(Dictionary<int, PersonBirthday[]> deterministicHashCodeUnknownFaceKeyValuePairs)
|
||||
private static List<long> GetPersonKeys(Dictionary<int, PersonBirthday[]> deterministicHashCodeUnknownFaceKeyValuePairs)
|
||||
{
|
||||
List<long> results = new();
|
||||
long personKey;
|
||||
@ -225,58 +255,86 @@ public class ByDeterministicHashCode
|
||||
return results;
|
||||
}
|
||||
|
||||
private static void Set(List<(PersonBirthday PersonBirthday, double IdAndNormalizedPixelPercentage)> deterministicHashCodeCollection, List<long> deterministicHashCodePersonKeys, Dictionary<double, List<PersonBirthday>> deterministicHashCodeScope)
|
||||
private static void SetKeyValuePairs(List<(PersonBirthday, int, int)> idThenNormalizedPixelPercentageCollection, List<(PersonBirthday PersonBirthday, double IdAndNormalizedPixelPercentage)> incorrectDeterministicHashCodeCollection, Dictionary<double, PersonBirthday[]> incorrectDeterministicHashCodeKeyValuePairs, Dictionary<int, Dictionary<int, PersonBirthday[]>> idThenNormalizedPixelPercentageKeyValuePairs)
|
||||
{
|
||||
long personKey;
|
||||
deterministicHashCodeCollection = (from l in deterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
foreach ((PersonBirthday personBirthday, double idAndNormalizedPixelPercentage) in deterministicHashCodeCollection)
|
||||
{
|
||||
if (!deterministicHashCodeScope.ContainsKey(idAndNormalizedPixelPercentage))
|
||||
deterministicHashCodeScope.Add(idAndNormalizedPixelPercentage, new());
|
||||
deterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personBirthday);
|
||||
personKey = personBirthday.Value.Ticks;
|
||||
deterministicHashCodePersonKeys.Add(personKey);
|
||||
}
|
||||
}
|
||||
|
||||
internal static void SetByRef(string resizeFilenameExtension, Person[] people, List<double> skipCollection, Dictionary<long, (string, int?, PersonBirthday[], long)> peopleKeyValuePairs, List<long> notMappedTicks, Dictionary<int, PersonBirthday[]> deterministicHashCodeUnknownFaceKeyValuePairs, Dictionary<double, PersonBirthday[]> deterministicHashCodeKeyValuePairs, Dictionary<double, PersonBirthday[]> incorrectDeterministicHashCodeKeyValuePairs, string zPropertyHolderContentDirectory, string zPropertyHolderPeopleContentDirectory)
|
||||
{
|
||||
Dictionary<int, List<Face>> keyValuePairs = new();
|
||||
List<long> deterministicHashCodePersonKeys = new();
|
||||
List<(string, int?, PersonBirthday[], long)> peopleCollection = new();
|
||||
Dictionary<double, List<PersonBirthday>> deterministicHashCodeScope = new();
|
||||
Dictionary<double, List<PersonBirthday>> incorrectDeterministicHashCodeScope = new();
|
||||
List<long> deterministicHashCodeUnknownFacePersonKeys = GetTicks(deterministicHashCodeUnknownFaceKeyValuePairs);
|
||||
List<(PersonBirthday PersonBirthday, double IdAndNormalizedPixelPercentage)> incorrectDeterministicHashCodeCollection = new();
|
||||
List<(PersonBirthday PersonBirthday, double IdAndNormalizedPixelPercentage)> deterministicHashCodeCollection = new();
|
||||
SetOther(resizeFilenameExtension, people, zPropertyHolderPeopleContentDirectory, skipCollection, peopleCollection);
|
||||
SetKeyValuePairs(zPropertyHolderContentDirectory, deterministicHashCodeCollection, incorrectDeterministicHashCodeCollection, keyValuePairs);
|
||||
Set(deterministicHashCodeCollection, deterministicHashCodePersonKeys, deterministicHashCodeScope);
|
||||
incorrectDeterministicHashCodeCollection = (from l in incorrectDeterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
deterministicHashCodePersonKeys = deterministicHashCodePersonKeys.Distinct().ToList();
|
||||
Dictionary<int, Dictionary<int, List<PersonBirthday>>> idThenNormalizedPixelPercentageScope = new();
|
||||
foreach ((PersonBirthday personBirthday, double idAndNormalizedPixelPercentage) in incorrectDeterministicHashCodeCollection)
|
||||
{
|
||||
if (!incorrectDeterministicHashCodeScope.ContainsKey(idAndNormalizedPixelPercentage))
|
||||
incorrectDeterministicHashCodeScope.Add(idAndNormalizedPixelPercentage, new());
|
||||
incorrectDeterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personBirthday);
|
||||
}
|
||||
foreach (KeyValuePair<double, List<PersonBirthday>> keyValuePair in deterministicHashCodeScope)
|
||||
deterministicHashCodeKeyValuePairs.Add(keyValuePair.Key, keyValuePair.Value.Distinct().ToArray());
|
||||
foreach (KeyValuePair<double, List<PersonBirthday>> keyValuePair in incorrectDeterministicHashCodeScope)
|
||||
incorrectDeterministicHashCodeKeyValuePairs.Add(keyValuePair.Key, keyValuePair.Value.Distinct().ToArray());
|
||||
if (peopleCollection.Any())
|
||||
string check;
|
||||
int normalizedPixelPercentageInDecimalForm;
|
||||
foreach ((PersonBirthday personBirthday, int id, int normalizedPixelPercentage) in idThenNormalizedPixelPercentageCollection)
|
||||
{
|
||||
foreach ((string displayDirectoryName, int? approximateYears, PersonBirthday[] personBirthdays, long ticks) in peopleCollection)
|
||||
if (!idThenNormalizedPixelPercentageScope.ContainsKey(id))
|
||||
idThenNormalizedPixelPercentageScope.Add(id, new());
|
||||
check = normalizedPixelPercentage.ToString();
|
||||
if (check.Length == Shared.Models.Stateless.ILocation.Digits)
|
||||
{
|
||||
if (peopleKeyValuePairs.ContainsKey(ticks) && peopleKeyValuePairs[ticks].Item1 != displayDirectoryName)
|
||||
throw new NotImplementedException();
|
||||
if (deterministicHashCodeUnknownFacePersonKeys.Contains(ticks) || deterministicHashCodePersonKeys.Contains(ticks))
|
||||
peopleKeyValuePairs.Add(ticks, new(displayDirectoryName, approximateYears, personBirthdays, ticks));
|
||||
else
|
||||
notMappedTicks.Add(ticks);
|
||||
if (!idThenNormalizedPixelPercentageScope[id].ContainsKey(normalizedPixelPercentage))
|
||||
idThenNormalizedPixelPercentageScope[id].Add(normalizedPixelPercentage, new());
|
||||
idThenNormalizedPixelPercentageScope[id][normalizedPixelPercentage].Add(personBirthday);
|
||||
}
|
||||
else
|
||||
{
|
||||
normalizedPixelPercentageInDecimalForm = int.Parse(check.PadRight(Shared.Models.Stateless.ILocation.Digits, '0'));
|
||||
if (!idThenNormalizedPixelPercentageScope[id].ContainsKey(normalizedPixelPercentageInDecimalForm))
|
||||
idThenNormalizedPixelPercentageScope[id].Add(normalizedPixelPercentageInDecimalForm, new());
|
||||
idThenNormalizedPixelPercentageScope[id][normalizedPixelPercentageInDecimalForm].Add(personBirthday);
|
||||
}
|
||||
}
|
||||
if (deterministicHashCodeUnknownFacePersonKeys.Any() || deterministicHashCodePersonKeys.Any())
|
||||
foreach (KeyValuePair<int, Dictionary<int, List<PersonBirthday>>> keyValuePair in idThenNormalizedPixelPercentageScope)
|
||||
{
|
||||
idThenNormalizedPixelPercentageKeyValuePairs.Add(keyValuePair.Key, new());
|
||||
foreach (KeyValuePair<int, List<PersonBirthday>> innerKeyValuePair in keyValuePair.Value)
|
||||
idThenNormalizedPixelPercentageKeyValuePairs[keyValuePair.Key].Add(innerKeyValuePair.Key, innerKeyValuePair.Value.Distinct().ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
internal static void SetByRef(int maxDegreeOfParallelism, long ticks, string resizeFilenameExtension, Person[] people, List<double> skipCollection, Dictionary<long, (string DisplayDirectoryName, int? ApproximateYears, PersonBirthday[] PersonBirthdays, long PersonKey)> peopleKeyValuePairs, List<long> notMappedPersonKeys, Dictionary<int, PersonBirthday[]> deterministicHashCodeUnknownFaceKeyValuePairs, Dictionary<int, Dictionary<int, PersonBirthday[]>> idThenNormalizedPixelPercentageKeyValuePairs, Dictionary<double, PersonBirthday[]> incorrectDeterministicHashCodeKeyValuePairs, string zPropertyHolderContentDirectory, string zPropertyHolderPeopleContentDirectory)
|
||||
{
|
||||
Dictionary<long, long> personKeyAliases = new();
|
||||
Dictionary<int, List<Face>> keyValuePairs = new();
|
||||
List<long> idThenNormalizedPixelPercentagePersonKeys = new();
|
||||
List<(string, int?, PersonBirthday[], long)> peopleCollection = new();
|
||||
List<(PersonBirthday, int, int)> idThenNormalizedPixelPercentageCollection = new();
|
||||
List<long> deterministicHashCodeUnknownFacePersonKeys = GetPersonKeys(deterministicHashCodeUnknownFaceKeyValuePairs);
|
||||
List<(PersonBirthday PersonBirthday, double IdAndNormalizedPixelPercentage)> incorrectDeterministicHashCodeCollection = new();
|
||||
SetOther(resizeFilenameExtension, people, zPropertyHolderPeopleContentDirectory, skipCollection, personKeyAliases, peopleCollection);
|
||||
SetCollections(maxDegreeOfParallelism, ticks, zPropertyHolderContentDirectory, personKeyAliases, idThenNormalizedPixelPercentageCollection, incorrectDeterministicHashCodeCollection, keyValuePairs);
|
||||
SetKeyValuePairs(idThenNormalizedPixelPercentageCollection, incorrectDeterministicHashCodeCollection, incorrectDeterministicHashCodeKeyValuePairs, idThenNormalizedPixelPercentageKeyValuePairs);
|
||||
incorrectDeterministicHashCodeCollection = (from l in incorrectDeterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
foreach (KeyValuePair<int, Dictionary<int, PersonBirthday[]>> keyValuePair in idThenNormalizedPixelPercentageKeyValuePairs)
|
||||
{
|
||||
foreach (KeyValuePair<int, PersonBirthday[]> keyValue in keyValuePair.Value)
|
||||
idThenNormalizedPixelPercentagePersonKeys.AddRange(from l in keyValue.Value select l.Value.Ticks);
|
||||
}
|
||||
idThenNormalizedPixelPercentagePersonKeys = idThenNormalizedPixelPercentagePersonKeys.Distinct().ToList();
|
||||
foreach (KeyValuePair<int, PersonBirthday[]> keyValuePair in deterministicHashCodeUnknownFaceKeyValuePairs)
|
||||
deterministicHashCodeUnknownFacePersonKeys.AddRange(from l in keyValuePair.Value select l.Value.Ticks);
|
||||
deterministicHashCodeUnknownFacePersonKeys = deterministicHashCodeUnknownFacePersonKeys.Distinct().ToList();
|
||||
if (peopleCollection.Any())
|
||||
{
|
||||
foreach ((string displayDirectoryName, int? approximateYears, PersonBirthday[] personBirthdays, long personKey) in peopleCollection)
|
||||
{
|
||||
if (peopleKeyValuePairs.ContainsKey(personKey))
|
||||
{
|
||||
if (peopleKeyValuePairs[personKey].DisplayDirectoryName == displayDirectoryName)
|
||||
continue;
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
if (!deterministicHashCodeUnknownFacePersonKeys.Contains(personKey) && !idThenNormalizedPixelPercentagePersonKeys.Contains(personKey))
|
||||
notMappedPersonKeys.Add(personKey);
|
||||
else
|
||||
peopleKeyValuePairs.Add(personKey, new(displayDirectoryName, approximateYears, personBirthdays, personKey));
|
||||
}
|
||||
}
|
||||
if (deterministicHashCodeUnknownFacePersonKeys.Any() || idThenNormalizedPixelPercentagePersonKeys.Any())
|
||||
{
|
||||
int? approximateYears = null;
|
||||
PersonBirthday? personBirthday;
|
||||
@ -289,7 +347,7 @@ public class ByDeterministicHashCode
|
||||
peopleKeyValuePairs.Add(personKey, new(displayDirectoryName, approximateYears, new PersonBirthday[] { personBirthday }, personKey));
|
||||
}
|
||||
}
|
||||
foreach (long personKey in deterministicHashCodePersonKeys)
|
||||
foreach (long personKey in idThenNormalizedPixelPercentagePersonKeys)
|
||||
{
|
||||
if (!peopleKeyValuePairs.ContainsKey(personKey))
|
||||
{
|
||||
|
Reference in New Issue
Block a user