SaveParents
Removed GetFilteredOutMapped Removed GetNonSpecificPeopleCollection
This commit is contained in:
@ -261,7 +261,12 @@ internal abstract class MapLogic
|
||||
if (newestPersonKeyFormatted is null)
|
||||
{
|
||||
if (!IPerson.IsDefaultName(configuration.MappingDefaultName, personDisplayDirectoryNames[^1]))
|
||||
{
|
||||
foreach (string file in files)
|
||||
File.Move(file, $"{file}.unk");
|
||||
continue;
|
||||
throw new NotImplementedException("Should this happen?");
|
||||
}
|
||||
}
|
||||
if (personKeyFormatted.Length != configuration.PersonBirthdayFormat.Length)
|
||||
continue;
|
||||
@ -708,6 +713,92 @@ internal abstract class MapLogic
|
||||
}
|
||||
}
|
||||
|
||||
private static void SaveParents(ReadOnlyDictionary<int, List<GenealogicalDataCommunicationRelation>> familyIndexToCollection, List<GenealogicalDataCommunicationRelation> collection, string personKeyFormatted, string[] filteredDisplayDirectoryAllFiles)
|
||||
{
|
||||
string? directory;
|
||||
string checkDirectory;
|
||||
string? mergeWithLineTwo;
|
||||
List<GenealogicalDataCommunicationRelation>? relations;
|
||||
const string wife = IGenealogicalDataCommunication.Wife;
|
||||
const string child = IGenealogicalDataCommunication.Child;
|
||||
const string husband = IGenealogicalDataCommunication.Husband;
|
||||
foreach (GenealogicalDataCommunicationRelation genealogicalDataCommunicationRelation in collection)
|
||||
{
|
||||
if (!filteredDisplayDirectoryAllFiles.Any())
|
||||
continue;
|
||||
directory = Path.GetDirectoryName(filteredDisplayDirectoryAllFiles.First());
|
||||
if (string.IsNullOrEmpty(directory))
|
||||
continue;
|
||||
if (genealogicalDataCommunicationRelation.Relation != child)
|
||||
continue;
|
||||
if (genealogicalDataCommunicationRelation.NickName != personKeyFormatted)
|
||||
continue;
|
||||
if (!familyIndexToCollection.TryGetValue(genealogicalDataCommunicationRelation.FamilyIndex, out relations))
|
||||
continue;
|
||||
foreach (GenealogicalDataCommunicationRelation relation in relations)
|
||||
{
|
||||
if (relation.FamilyIndex != genealogicalDataCommunicationRelation.FamilyIndex)
|
||||
continue;
|
||||
if (relation.Relation is not husband and not wife)
|
||||
continue;
|
||||
checkDirectory = Path.Combine(directory, relation.NickName);
|
||||
if (!Directory.Exists(checkDirectory))
|
||||
{
|
||||
_ = Directory.CreateDirectory(checkDirectory);
|
||||
mergeWithLineTwo = IGenealogicalDataCommunication.GetMergeWithLineTwo(genealogicalDataCommunicationRelation, relation);
|
||||
File.WriteAllText(Path.Combine(checkDirectory, $"{mergeWithLineTwo}.rel"), relation.FullName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void SaveOne(Configuration configuration, ReadOnlyDictionary<int, List<GenealogicalDataCommunicationRelation>> familyIndexToCollection, List<LocationContainer<MetadataExtractor.Directory>> locationContainers, Dictionary<long, List<PersonContainer>> personKeyToPersonContainerCollection)
|
||||
{
|
||||
string checkFile;
|
||||
string? directory;
|
||||
string personKeyFormatted;
|
||||
List<long> distinct = new();
|
||||
List<PersonContainer>? personContainers;
|
||||
string[] filteredDisplayDirectoryAllFiles;
|
||||
List<GenealogicalDataCommunicationRelation>? collection;
|
||||
string checkExtension = $"{configuration.FacesFileNameExtension}{configuration.FacesHiddenFileNameExtension}";
|
||||
ReadOnlyDictionary<long, List<GenealogicalDataCommunicationRelation>> personKeyToCollection = IGenealogicalDataCommunication.GetCollection(configuration.PersonBirthdayFormat, familyIndexToCollection);
|
||||
foreach (LocationContainer<MetadataExtractor.Directory> locationContainer in locationContainers)
|
||||
{
|
||||
if (!locationContainer.File.EndsWith(configuration.FacesFileNameExtension))
|
||||
continue;
|
||||
if (distinct.Contains(locationContainer.PersonKey))
|
||||
continue;
|
||||
if (!personKeyToPersonContainerCollection.TryGetValue(locationContainer.PersonKey, out personContainers))
|
||||
continue;
|
||||
foreach (PersonContainer personContainer in personContainers)
|
||||
{
|
||||
if (personContainer.Key is null)
|
||||
continue;
|
||||
if (personKeyToCollection.TryGetValue(personContainer.Key.Value, out collection))
|
||||
{
|
||||
personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personContainer.Key.Value);
|
||||
SaveParents(familyIndexToCollection, collection, personKeyFormatted, personContainer.DisplayDirectoryAllFiles.Where(l => l.EndsWith(checkExtension)).ToArray());
|
||||
}
|
||||
if (personContainer.DisplayDirectoryAllFiles.Any(l => l.EndsWith(checkExtension)))
|
||||
continue;
|
||||
filteredDisplayDirectoryAllFiles = personContainer.DisplayDirectoryAllFiles.Where(l => l.EndsWith(".pged")).ToArray();
|
||||
if (!filteredDisplayDirectoryAllFiles.Any())
|
||||
continue;
|
||||
directory = Path.GetDirectoryName(filteredDisplayDirectoryAllFiles.First());
|
||||
if (string.IsNullOrEmpty(directory))
|
||||
continue;
|
||||
checkFile = Path.Combine(directory, $"{Path.GetFileName(locationContainer.File)}{configuration.FacesHiddenFileNameExtension}");
|
||||
if (File.Exists(checkFile))
|
||||
break;
|
||||
File.Copy(locationContainer.File, checkFile);
|
||||
File.Delete(filteredDisplayDirectoryAllFiles.First());
|
||||
break;
|
||||
}
|
||||
distinct.Add(locationContainer.PersonKey);
|
||||
}
|
||||
}
|
||||
|
||||
private static void LookForPossibleDuplicates(Configuration configuration, List<LocationContainer<MetadataExtractor.Directory>> locationContainers)
|
||||
{
|
||||
string key;
|
||||
@ -775,7 +866,7 @@ internal abstract class MapLogic
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static void Set(int maxDegreeOfParallelism, Configuration configuration, long ticks, ReadOnlyCollection<PersonContainer> personContainers, string? a2PeopleSingletonDirectory, string eDistanceContentDirectory, Dictionary<long, PersonContainer> personKeyToPersonContainer, List<PersonContainer> notMappedPersonContainers, Dictionary<int, List<int>> skipCollection, Dictionary<int, List<int>> skipNotSkipCollection, List<LocationContainer<MetadataExtractor.Directory>> locationContainers, Dictionary<int, Dictionary<int, PersonContainer[]>> idThenWholePercentagesToPersonContainers)
|
||||
internal static void Set(int maxDegreeOfParallelism, Configuration configuration, long ticks, ReadOnlyDictionary<int, List<GenealogicalDataCommunicationRelation>> familyIndexToCollection, ReadOnlyCollection<PersonContainer> personContainers, string? a2PeopleSingletonDirectory, string eDistanceContentDirectory, Dictionary<long, PersonContainer> personKeyToPersonContainer, List<PersonContainer> notMappedPersonContainers, Dictionary<int, List<int>> skipCollection, Dictionary<int, List<int>> skipNotSkipCollection, List<LocationContainer<MetadataExtractor.Directory>> locationContainers, Dictionary<int, Dictionary<int, PersonContainer[]>> idThenWholePercentagesToPersonContainers)
|
||||
{
|
||||
string message;
|
||||
int totalSeconds;
|
||||
@ -808,6 +899,8 @@ internal abstract class MapLogic
|
||||
}
|
||||
long[] personKeyCollection = (from l in nullablePersonKeyCollection where l is not null select l.Value).Distinct().ToArray();
|
||||
SetPersonKeyToPersonContainer(configuration, personContainers, personKeyCollection, personKeyToPersonContainer, personKeyToPersonContainerCollection);
|
||||
ReadOnlyDictionary<string, string> personKeyFormattedToPersonFullName = IPersonContainer.GetPersonKeyFormattedToPersonFullName(configuration.PersonBirthdayFormat, personContainers);
|
||||
SaveOne(configuration, familyIndexToCollection, locationContainers, personKeyToPersonContainerCollection);
|
||||
notMappedPersonContainers.AddRange(GetNotMappedPersonContainers(configuration, personContainers, personKeyCollection));
|
||||
if (possiblyNewPersonDisplayDirectoryNamesAndPersonContainer.Any())
|
||||
SavePossiblyNewPersonContainers(configuration.PersonBirthdayFormat, configuration.FacesFileNameExtension, a2PeopleSingletonDirectory, possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
|
||||
|
Reference in New Issue
Block a user