Tested first run
This commit is contained in:
@ -7,7 +7,7 @@ namespace View_by_Distance.Map.Models.Stateless;
|
||||
public class ByDeterministicHashCode
|
||||
{
|
||||
|
||||
private static void SetOther(string outputExtension, Dictionary<string, Person> personKeyValuePairs, string deterministicHashCodePeopleDirectory, List<double> skipCollection, List<(string, int?, string, PersonBirthday[])> peopleCollection)
|
||||
private static void SetOther(string resizeFilenameExtension, Person[] people, string deterministicHashCodePeopleDirectory, List<double> skipCollection, List<(string, int?, string, PersonBirthday[])> peopleCollection)
|
||||
{
|
||||
string json;
|
||||
string personKey;
|
||||
@ -18,22 +18,31 @@ public class ByDeterministicHashCode
|
||||
string[] personKeyDirectories;
|
||||
string personKeyJsonDirectory;
|
||||
PersonBirthday? personBirthday;
|
||||
List<string> personKeys = new();
|
||||
string[] personDisplayDirectories;
|
||||
string convertedPersonKeyDirectory;
|
||||
string? personDisplayDirectoryName;
|
||||
List<PersonBirthday> personBirthdays;
|
||||
Dictionary<string, Person> personKeyValuePairs = new();
|
||||
foreach (Person person in people)
|
||||
{
|
||||
personKey = Shared.Models.Stateless.Methods.IPersonBirthday.GetFormatted(person.Birthday);
|
||||
if (personKeyValuePairs.ContainsKey(personKey))
|
||||
break;
|
||||
personKeyValuePairs.Add(personKey, person);
|
||||
}
|
||||
string[] groupDirectories = Directory.GetDirectories(deterministicHashCodePeopleDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string groupDirectory in groupDirectories)
|
||||
{
|
||||
groupDirectoryName = Path.GetFileName(groupDirectory);
|
||||
if (groupDirectoryName[0] == '!')
|
||||
{
|
||||
skipCollection.AddRange(from l in Directory.GetFiles(groupDirectory, $"*{outputExtension}", SearchOption.AllDirectories) select double.Parse(Path.GetFileNameWithoutExtension(l)));
|
||||
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 '^')
|
||||
continue;
|
||||
skipCollection.AddRange(from l in Directory.GetFiles(groupDirectory, $"*{outputExtension}", SearchOption.AllDirectories) select double.Parse(Path.GetFileNameWithoutExtension(l)));
|
||||
skipCollection.AddRange(from l in Directory.GetFiles(groupDirectory, $"*{resizeFilenameExtension}", SearchOption.AllDirectories) select double.Parse(Path.GetFileNameWithoutExtension(l)));
|
||||
personDisplayDirectories = Directory.GetDirectories(groupDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string personDisplayDirectory in personDisplayDirectories)
|
||||
{
|
||||
@ -84,10 +93,24 @@ public class ByDeterministicHashCode
|
||||
json = JsonSerializer.Serialize(personKeyValuePairs[personKey], new JsonSerializerOptions() { WriteIndented = true });
|
||||
_ = Shared.Models.Stateless.Methods.IPath.WriteAllText(personKeyJsonFileName, json, updateDateWhenMatches: false, compareBeforeWrite: true, updateToWhenMatches: null);
|
||||
}
|
||||
personKeys.Add(personKey);
|
||||
peopleCollection.Add(new(personDisplayDirectoryName, approximateYears, personKey, personBirthdays.OrderByDescending(l => l.Value).ToArray()));
|
||||
}
|
||||
}
|
||||
}
|
||||
approximateYears = null;
|
||||
const string displayDirectoryName = Property.Models.Stateless.IResult.AllInOne;
|
||||
DateTime incrementDate = new(Shared.Models.Stateless.IPersonBirthday.FirstYear, 1, 1);
|
||||
for (int i = 0; i < 500; i++)
|
||||
{
|
||||
incrementDate = incrementDate.AddDays(1);
|
||||
personBirthday = new(incrementDate);
|
||||
personKey = Shared.Models.Stateless.Methods.IPersonBirthday.GetFormatted(personBirthday);
|
||||
if (personKeys.Contains(personKey))
|
||||
continue;
|
||||
personKeys.Add(personKey);
|
||||
peopleCollection.Add(new(displayDirectoryName, approximateYears, personKey, new PersonBirthday[] { personBirthday }));
|
||||
}
|
||||
}
|
||||
|
||||
internal static void SetKeyValuePairs(string deterministicHashCodeContentDirectory, List<(string, double)> deterministicHashCodeCollection, List<(string, double)> incorrectDeterministicHashCodeCollection, Dictionary<int, List<Face>> keyValuePairs)
|
||||
@ -138,8 +161,6 @@ public class ByDeterministicHashCode
|
||||
continue;
|
||||
deterministicHashCodeCollection.Add(new(personKey, reversedDeterministicHashCodeKey.Value));
|
||||
}
|
||||
if (personNameDirectory == personFirstInitialDirectory)
|
||||
continue;
|
||||
personNameLinkDirectories = Directory.GetDirectories(personNameDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string personNameLinkDirectory in personNameLinkDirectories)
|
||||
{
|
||||
@ -152,6 +173,8 @@ public class ByDeterministicHashCode
|
||||
}
|
||||
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(personNameLinkDirectory);
|
||||
}
|
||||
if (personNameDirectory == personFirstInitialDirectory)
|
||||
continue;
|
||||
Directory.Move(personNameDirectory, personFirstInitialDirectory);
|
||||
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(personNameDirectory);
|
||||
}
|
||||
@ -163,56 +186,90 @@ public class ByDeterministicHashCode
|
||||
}
|
||||
}
|
||||
|
||||
internal static string SetByRef(string outputExtension, Dictionary<string, Person> personKeyValuePairs, List<double> skipCollection, Dictionary<string, (string, int?, string, PersonBirthday[])> peopleKeyValuePairs, Dictionary<int, string[]> deterministicHashCodeUnknownFaceKeyValuePairs, Dictionary<double, string[]> deterministicHashCodeKeyValuePairs, Dictionary<double, string[]> incorrectDeterministicHashCodeKeyValuePairs, string deterministicHashCodeRootDirectory)
|
||||
internal static string SetByRef(string resizeFilenameExtension, Person[] people, List<double> skipCollection, Dictionary<string, (string, int?, string, PersonBirthday[])> peopleKeyValuePairs, List<string> notMappedPersonKeys, Dictionary<int, string[]> deterministicHashCodeUnknownFaceKeyValuePairs, Dictionary<double, string[]> deterministicHashCodeKeyValuePairs, Dictionary<double, string[]> incorrectDeterministicHashCodeKeyValuePairs, string deterministicHashCodeRootDirectory)
|
||||
{
|
||||
string result;
|
||||
string[] distinctPersonKeys;
|
||||
Dictionary<int, List<Face>> keyValuePairs = new();
|
||||
List<string> deterministicHashCodePersonKeys = new();
|
||||
List<string> deterministicHashCodeUnknownFacePersonKeys = new();
|
||||
Dictionary<double, List<string>> deterministicHashCodeScope = new();
|
||||
Dictionary<double, List<string>> incorrectDeterministicHashCodeScope = new();
|
||||
List<(string PersonKey, double IdAndNormalizedPixelPercentage)> deterministicHashCodeCollection = new();
|
||||
string deterministicHashCodePeopleDirectory = Path.Combine(deterministicHashCodeRootDirectory, "People");
|
||||
List<(string PersonKey, double IdAndNormalizedPixelPercentage)> incorrectDeterministicHashCodeCollection = new();
|
||||
foreach (KeyValuePair<int, string[]> keyValuePair in deterministicHashCodeUnknownFaceKeyValuePairs)
|
||||
deterministicHashCodeUnknownFacePersonKeys.AddRange(keyValuePair.Value);
|
||||
deterministicHashCodeUnknownFacePersonKeys = deterministicHashCodeUnknownFacePersonKeys.Distinct().ToList();
|
||||
List<(string, int?, string, PersonBirthday[])> peopleCollection = new();
|
||||
string deterministicHashCodePeopleDirectory = Path.Combine(deterministicHashCodeRootDirectory, "People");
|
||||
if (Directory.Exists(deterministicHashCodePeopleDirectory))
|
||||
SetOther(outputExtension, personKeyValuePairs, deterministicHashCodePeopleDirectory, skipCollection, peopleCollection);
|
||||
if (!Directory.Exists(deterministicHashCodePeopleDirectory))
|
||||
_ = Directory.CreateDirectory(deterministicHashCodePeopleDirectory);
|
||||
else
|
||||
SetOther(resizeFilenameExtension, people, deterministicHashCodePeopleDirectory, skipCollection, peopleCollection);
|
||||
result = Path.Combine(deterministicHashCodeRootDirectory, "()");
|
||||
if (!Directory.Exists(result))
|
||||
result = string.Empty;
|
||||
else
|
||||
_ = Directory.CreateDirectory(result);
|
||||
SetKeyValuePairs(result, deterministicHashCodeCollection, incorrectDeterministicHashCodeCollection, keyValuePairs);
|
||||
deterministicHashCodeCollection = (from l in deterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
incorrectDeterministicHashCodeCollection = (from l in incorrectDeterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
foreach ((string personKey, double idAndNormalizedPixelPercentage) in deterministicHashCodeCollection)
|
||||
{
|
||||
Dictionary<int, List<Face>> keyValuePairs = new();
|
||||
Dictionary<double, List<string>> deterministicHashCodeScope = new();
|
||||
Dictionary<double, List<string>> incorrectDeterministicHashCodeScope = new();
|
||||
List<(string PersonKey, double IdAndNormalizedPixelPercentage)> deterministicHashCodeCollection = new();
|
||||
List<(string PersonKey, double IdAndNormalizedPixelPercentage)> incorrectDeterministicHashCodeCollection = new();
|
||||
SetKeyValuePairs(result, deterministicHashCodeCollection, incorrectDeterministicHashCodeCollection, keyValuePairs);
|
||||
deterministicHashCodeCollection = (from l in deterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
incorrectDeterministicHashCodeCollection = (from l in incorrectDeterministicHashCodeCollection orderby l.IdAndNormalizedPixelPercentage select l).ToList();
|
||||
foreach ((string personKey, double idAndNormalizedPixelPercentage) in deterministicHashCodeCollection)
|
||||
{
|
||||
if (!deterministicHashCodeScope.ContainsKey(idAndNormalizedPixelPercentage))
|
||||
deterministicHashCodeScope.Add(idAndNormalizedPixelPercentage, new());
|
||||
deterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personKey);
|
||||
deterministicHashCodePersonKeys.Add(personKey);
|
||||
}
|
||||
deterministicHashCodePersonKeys = deterministicHashCodePersonKeys.Distinct().ToList();
|
||||
foreach ((string personKey, double idAndNormalizedPixelPercentage) in incorrectDeterministicHashCodeCollection)
|
||||
{
|
||||
if (!incorrectDeterministicHashCodeScope.ContainsKey(idAndNormalizedPixelPercentage))
|
||||
incorrectDeterministicHashCodeScope.Add(idAndNormalizedPixelPercentage, new());
|
||||
incorrectDeterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personKey);
|
||||
}
|
||||
foreach (KeyValuePair<double, List<string>> keyValuePair in deterministicHashCodeScope)
|
||||
deterministicHashCodeKeyValuePairs.Add(keyValuePair.Key, keyValuePair.Value.Distinct().ToArray());
|
||||
foreach (KeyValuePair<double, List<string>> keyValuePair in incorrectDeterministicHashCodeScope)
|
||||
incorrectDeterministicHashCodeKeyValuePairs.Add(keyValuePair.Key, keyValuePair.Value.Distinct().ToArray());
|
||||
if (!deterministicHashCodeScope.ContainsKey(idAndNormalizedPixelPercentage))
|
||||
deterministicHashCodeScope.Add(idAndNormalizedPixelPercentage, new());
|
||||
deterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personKey);
|
||||
deterministicHashCodePersonKeys.Add(personKey);
|
||||
}
|
||||
foreach ((string personDisplayDirectoryName, int? approximateYears, string personKey, PersonBirthday[] personBirthdays) in peopleCollection)
|
||||
deterministicHashCodePersonKeys = deterministicHashCodePersonKeys.Distinct().ToList();
|
||||
foreach ((string personKey, double idAndNormalizedPixelPercentage) in incorrectDeterministicHashCodeCollection)
|
||||
{
|
||||
if (peopleKeyValuePairs.ContainsKey(personKey) && peopleKeyValuePairs[personKey].Item1 != personDisplayDirectoryName)
|
||||
throw new NotImplementedException();
|
||||
if (deterministicHashCodeUnknownFacePersonKeys.Contains(personKey) || deterministicHashCodePersonKeys.Contains(personKey))
|
||||
peopleKeyValuePairs.Add(personKey, new(personDisplayDirectoryName, approximateYears, personKey, personBirthdays));
|
||||
if (!incorrectDeterministicHashCodeScope.ContainsKey(idAndNormalizedPixelPercentage))
|
||||
incorrectDeterministicHashCodeScope.Add(idAndNormalizedPixelPercentage, new());
|
||||
incorrectDeterministicHashCodeScope[idAndNormalizedPixelPercentage].Add(personKey);
|
||||
}
|
||||
foreach (KeyValuePair<double, List<string>> keyValuePair in deterministicHashCodeScope)
|
||||
{
|
||||
distinctPersonKeys = keyValuePair.Value.Distinct().ToArray();
|
||||
deterministicHashCodeKeyValuePairs.Add(keyValuePair.Key, distinctPersonKeys);
|
||||
}
|
||||
foreach (KeyValuePair<double, List<string>> keyValuePair in incorrectDeterministicHashCodeScope)
|
||||
incorrectDeterministicHashCodeKeyValuePairs.Add(keyValuePair.Key, keyValuePair.Value.Distinct().ToArray());
|
||||
if (peopleCollection.Any())
|
||||
{
|
||||
foreach ((string displayDirectoryName, int? approximateYears, string personKey, PersonBirthday[] personBirthdays) in peopleCollection)
|
||||
{
|
||||
if (peopleKeyValuePairs.ContainsKey(personKey) && peopleKeyValuePairs[personKey].Item1 != displayDirectoryName)
|
||||
throw new NotImplementedException();
|
||||
if (deterministicHashCodeUnknownFacePersonKeys.Contains(personKey) || deterministicHashCodePersonKeys.Contains(personKey))
|
||||
peopleKeyValuePairs.Add(personKey, new(displayDirectoryName, approximateYears, personKey, personBirthdays));
|
||||
else
|
||||
notMappedPersonKeys.Add(personKey);
|
||||
}
|
||||
}
|
||||
if (deterministicHashCodeUnknownFacePersonKeys.Any() || deterministicHashCodePersonKeys.Any())
|
||||
{
|
||||
int? approximateYears = null;
|
||||
PersonBirthday? personBirthday;
|
||||
const string displayDirectoryName = Property.Models.Stateless.IResult.AllInOne;
|
||||
foreach (string personKey in deterministicHashCodeUnknownFacePersonKeys)
|
||||
{
|
||||
if (!peopleKeyValuePairs.ContainsKey(personKey))
|
||||
{
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(personKey);
|
||||
if (personBirthday is null)
|
||||
continue;
|
||||
peopleKeyValuePairs.Add(personKey, new(displayDirectoryName, approximateYears, personKey, new PersonBirthday[] { personBirthday }));
|
||||
}
|
||||
}
|
||||
foreach (string personKey in deterministicHashCodePersonKeys)
|
||||
{
|
||||
if (!peopleKeyValuePairs.ContainsKey(personKey))
|
||||
{
|
||||
personBirthday = Shared.Models.Stateless.Methods.IPersonBirthday.GetPersonBirthday(personKey);
|
||||
if (personBirthday is null)
|
||||
continue;
|
||||
peopleKeyValuePairs.Add(personKey, new(displayDirectoryName, approximateYears, personKey, new PersonBirthday[] { personBirthday }));
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
Reference in New Issue
Block a user