Copy Manual Files

This commit is contained in:
2022-09-19 17:08:17 -07:00
parent 5fb99aac45
commit 179dc1253b
11 changed files with 170 additions and 98 deletions

View File

@ -8,20 +8,20 @@ public class PersonContainer : Properties.IPersonContainer
public int? ApproximateYears { init; get; }
public Person? Person { init; get; }
public PersonBirthday[]? PersonBirthdays { init; get; }
public string[] PersonDisplayDirectoryAllFiles { init; get; }
public string PersonDisplayDirectoryName { init; get; }
public long? PersonKey { init; get; }
public PersonBirthday[]? Birthdays { init; get; }
public string[] DisplayDirectoryAllFiles { init; get; }
public string DisplayDirectoryName { init; get; }
public long? Key { init; get; }
[JsonConstructor]
public PersonContainer(int? approximateYears, Person? person, PersonBirthday[]? personBirthdays, string[] personDisplayDirectoryAllFiles, string personDisplayDirectoryName, long? personKey)
{
ApproximateYears = approximateYears;
Person = person;
PersonBirthdays = personBirthdays;
PersonDisplayDirectoryAllFiles = personDisplayDirectoryAllFiles;
PersonDisplayDirectoryName = personDisplayDirectoryName;
PersonKey = personKey;
Birthdays = personBirthdays;
DisplayDirectoryAllFiles = personDisplayDirectoryAllFiles;
DisplayDirectoryName = personDisplayDirectoryName;
Key = personKey;
}
public PersonContainer(int? approximateYears, string[] personDisplayDirectoryAllFiles, string personDisplayDirectoryName) :

View File

@ -5,9 +5,9 @@ public interface IPersonContainer
public int? ApproximateYears { init; get; }
public Person? Person { init; get; }
public PersonBirthday[]? PersonBirthdays { init; get; }
public string[] PersonDisplayDirectoryAllFiles { init; get; }
public string PersonDisplayDirectoryName { init; get; }
public long? PersonKey { init; get; }
public PersonBirthday[]? Birthdays { init; get; }
public string[] DisplayDirectoryAllFiles { init; get; }
public string DisplayDirectoryName { init; get; }
public long? Key { init; get; }
}

View File

@ -5,9 +5,9 @@ public interface IPersonContainer
// ...
List<Models.PersonContainer> TestStatic_GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat) =>
Models.PersonContainer[] TestStatic_GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat) =>
GetPersonContainers(storage, personBirthdayFormat);
static List<Models.PersonContainer> GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat) =>
static Models.PersonContainer[] GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat) =>
PersonContainer.GetPersonContainers(storage, personBirthdayFormat);
}

View File

@ -3,9 +3,9 @@ namespace View_by_Distance.Shared.Models.Stateless.Methods;
internal abstract class PersonContainer
{
private static List<Models.PersonContainer> GetPersonContainersCollections(string personBirthdayFormat, char[] chars, string personDisplayDirectory, string personDisplayDirectoryName, string[] personKeyDirectories, int? approximateYears, List<Models.PersonBirthday> collections)
private static List<(long?, Models.PersonContainer)> GetPersonContainersCollections(string personBirthdayFormat, char[] chars, string personDisplayDirectory, string personDisplayDirectoryName, string[] personKeyDirectories, int? approximateYears, List<Models.PersonBirthday> collections)
{
List<Models.PersonContainer> results = new();
List<(long?, Models.PersonContainer)> results = new();
long personKey;
string[] segments;
const int zero = 0;
@ -25,7 +25,7 @@ internal abstract class PersonContainer
segments = personDisplayDirectoryName.Split(chars);
person = IPerson.GetPerson(personKey, segments);
personContainer = new(approximateYears, person, personBirthdays, personDisplayDirectoryAllFiles, personDisplayDirectoryName, personKey);
results.Add(personContainer);
results.Add(new(personKey, personContainer));
}
return results;
}
@ -38,12 +38,13 @@ internal abstract class PersonContainer
return result;
}
private static List<Models.PersonContainer> GetPersonContainersGroup(string personBirthdayFormat, char[] chars, string[] personDisplayDirectories)
private static List<(long?, Models.PersonContainer)> GetPersonContainersGroup(string personBirthdayFormat, char[] chars, string[] personDisplayDirectories)
{
List<Models.PersonContainer> results = new();
List<(long?, Models.PersonContainer)> results = new();
int? approximateYears;
string[] personKeyDirectories;
string? personDisplayDirectoryName;
Models.PersonContainer personContainer;
List<Models.PersonBirthday> collections;
foreach (string personDisplayDirectory in personDisplayDirectories)
{
@ -53,36 +54,41 @@ internal abstract class PersonContainer
approximateYears = Age.GetApproximateYears(personDisplayDirectoryName, chars);
personKeyDirectories = Directory.GetDirectories(personDisplayDirectory, "*", SearchOption.TopDirectoryOnly);
collections = PersonBirthday.GetPersonBirthdays(personBirthdayFormat, personKeyDirectories, personDisplayDirectory);
if (!collections.Any())
results.Add(GetPersonContainer(personDisplayDirectory, personDisplayDirectoryName, approximateYears));
else
if (collections.Any())
results.AddRange(GetPersonContainersCollections(personBirthdayFormat, chars, personDisplayDirectory, personDisplayDirectoryName, personKeyDirectories, approximateYears, collections));
else
{
personContainer = GetPersonContainer(personDisplayDirectory, personDisplayDirectoryName, approximateYears);
results.Add(new(null, personContainer));
}
}
return results;
}
private static List<Models.PersonContainer> GetPersonContainersGroups(string personBirthdayFormat, char[] chars, string[] groupDirectories)
private static Models.PersonContainer[] GetPersonContainersGroups(string personBirthdayFormat, char[] chars, string[] groupDirectories)
{
List<Models.PersonContainer> results = new();
Models.PersonContainer[] results;
const int zero = 0;
string groupDirectoryName;
string[] personDisplayDirectories;
List<Models.PersonContainer> personContainers;
List<(long?, Models.PersonContainer)> collection;
List<(long? PersonKey, Models.PersonContainer PersonContainer)> personContainers = new();
foreach (string groupDirectory in groupDirectories)
{
groupDirectoryName = Path.GetFileName(groupDirectory);
if (!chars.Contains(groupDirectoryName[zero]))
continue;
personDisplayDirectories = Directory.GetDirectories(groupDirectory, "*", SearchOption.TopDirectoryOnly);
personContainers = GetPersonContainersGroup(personBirthdayFormat, chars, personDisplayDirectories);
results.AddRange(personContainers);
collection = GetPersonContainersGroup(personBirthdayFormat, chars, personDisplayDirectories);
personContainers.AddRange(collection);
}
results = (from l in personContainers orderby l.PersonKey is not null, l.PersonKey select l.PersonContainer).ToArray();
return results;
}
internal static List<Models.PersonContainer> GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat)
internal static Models.PersonContainer[] GetPersonContainers(Properties.IStorage storage, string personBirthdayFormat)
{
List<Models.PersonContainer> results;
Models.PersonContainer[] results;
char[] chars = IAge.GetChars();
string a2PeopleSingletonDirectory = Path.Combine(storage.PeopleRootDirectory, "{}");
if (!Directory.Exists(a2PeopleSingletonDirectory))
@ -96,7 +102,7 @@ internal abstract class PersonContainer
}
string[] groupDirectories = Directory.GetDirectories(a2PeopleSingletonDirectory, "*", SearchOption.TopDirectoryOnly);
if (!groupDirectories.Any())
results = new();
results = Array.Empty<Models.PersonContainer>();
else
results = GetPersonContainersGroups(personBirthdayFormat, chars, groupDirectories);
return results;