Removed CopyAtLeastOneMappedFiles

ReadOnlyCollection
This commit is contained in:
2023-08-07 15:04:46 -07:00
parent 009c176d1a
commit 2eb5cfd42f
15 changed files with 242 additions and 331 deletions

View File

@ -168,7 +168,7 @@ internal abstract class MapLogic
if (files.Length != 4)
continue;
collection = files.Select(l => new FileInfo(l)).ToArray();
isDefault = alphaDirectoryName.First() == 'X' && IPersonBirthday.IsCounterPersonYear(personKeyFormatted[..4]);
isDefault = IPerson.IsDefaultName(alphaDirectoryName) && IPersonBirthday.IsCounterPersonYear(personKeyFormatted[..4]);
if (isDefault)
facesFileNames = (from l in collection where l.Extension == configuration.FacesFileNameExtension select l.FullName).ToArray();
else
@ -321,7 +321,7 @@ internal abstract class MapLogic
{
directoryNumber++;
personDisplayDirectoryName = Path.GetFileName(personNameDirectory);
isDefault = personDisplayDirectoryName.First() == 'X' && IPersonBirthday.IsCounterPersonYear(personKeyFormatted[..4]);
isDefault = IPerson.IsDefaultName(personDisplayDirectoryName) && IPersonBirthday.IsCounterPersonYear(personKeyFormatted[..4]);
if (isDefault && personDisplayDirectoryName.Length == 1)
{
if (personKeyFormatted.Length != configuration.PersonBirthdayFormat.Length || !DateTime.TryParseExact(personKeyFormatted, configuration.PersonBirthdayFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime))
@ -726,8 +726,10 @@ internal abstract class MapLogic
}
}
internal static void PossiblyRebuildPersonContainers(Configuration configuration, string? a2PeopleSingletonDirectory, List<(PersonKeyFormattedIdThenWholePercentages, PersonContainer)> possiblyNewPersonDisplayDirectoryNamesAndPersonContainer)
internal static void PossiblyRebuildPersonContainers(Configuration configuration, long ticks, string? a2PeopleSingletonDirectory, ReadOnlyDictionary<long, int> readOnlyPersonKeyToCount, ReadOnlyCollection<(PersonKeyFormattedIdThenWholePercentages, PersonContainer)> possiblyNewPersonDisplayDirectoryNamesAndPersonContainer)
{
int count;
long personKey;
bool[] matches;
string fileName;
string checkFile;
@ -737,6 +739,7 @@ internal abstract class MapLogic
List<string> distinct = new();
PersonBirthday personBirthday;
string personDisplayDirectory;
DateTime dateTime = new(ticks);
string personKeyFormattedDirectory;
foreach ((PersonKeyFormattedIdThenWholePercentages personKeyFormattedIdThenWholePercentages, PersonContainer personContainer) in possiblyNewPersonDisplayDirectoryNamesAndPersonContainer)
{
@ -745,13 +748,8 @@ internal abstract class MapLogic
if (a2PeopleSingletonDirectory is null || personContainer.Key is null || personContainer.Birthdays is null || personContainer.PersonDirectory is null || personContainer.Birthdays.Length == 0)
continue;
fileName = $"{Path.GetFileName(personKeyFormattedIdThenWholePercentages.MappedFaceFile)}{configuration.FacesHiddenFileNameExtension}";
matches = (from l in personContainer.DisplayDirectoryAllFiles where l.EndsWith(fileName) select true).ToArray();
if (matches.Length > 0)
continue;
matches = (from l in personContainer.DisplayDirectoryAllFiles where l.EndsWith(configuration.FacesHiddenFileNameExtension) select true).ToArray();
if (matches.Length > 0)
continue;
personBirthday = personContainer.Birthdays[zero];
personKey = personBirthday.Value.Ticks;
personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, personBirthday);
personDisplayDirectory = Path.Combine(a2PeopleSingletonDirectory, personContainer.PersonDirectory.Char.ToString(), personContainer.PersonDirectory.Group, personContainer.DisplayDirectoryName);
personKeyFormattedDirectory = Path.GetFullPath(Path.Combine(personDisplayDirectory, personKeyFormatted));
@ -760,6 +758,15 @@ internal abstract class MapLogic
throw new NotSupportedException();
if (!Directory.Exists(personKeyFormattedDirectory))
_ = Directory.CreateDirectory(personKeyFormattedDirectory);
_ = readOnlyPersonKeyToCount.TryGetValue(personKey, out count);
_ = Directory.CreateDirectory(Path.Combine(personDisplayDirectory, count.ToString("0000")));
Directory.SetLastWriteTime(personDisplayDirectory, dateTime.AddMinutes(count));
matches = (from l in personContainer.DisplayDirectoryAllFiles where l.EndsWith(fileName) select true).ToArray();
if (matches.Length > 0)
continue;
matches = (from l in personContainer.DisplayDirectoryAllFiles where l.EndsWith(configuration.FacesHiddenFileNameExtension) select true).ToArray();
if (matches.Length > 0)
continue;
if (!File.Exists(personKeyFormattedIdThenWholePercentages.MappedFaceFile))
continue;
checkFile = Path.Combine(personKeyFormattedDirectory, $"{Path.GetFileName(personKeyFormattedIdThenWholePercentages.MappedFaceFile)}{configuration.FacesHiddenFileNameExtension}");
@ -790,6 +797,8 @@ internal abstract class MapLogic
DateTime dateTime = DateTime.Now;
for (int i = 1; i < 5; i++)
_ = IPath.DeleteEmptyDirectories(eDistanceContentDirectory);
if (!Directory.Exists(eDistanceContentDirectory))
_ = Directory.CreateDirectory(eDistanceContentDirectory);
string[] ticksDirectories = Directory.GetDirectories(eDistanceContentDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string ticksDirectory in ticksDirectories)
{
@ -1227,7 +1236,7 @@ internal abstract class MapLogic
return results;
}
internal static Mapping[] GetSelectedMappingCollection(List<Face> faces)
internal static Mapping[] GetSelectedMappingCollection(ReadOnlyCollection<Face> faces)
{
Mapping[] results;
IEnumerable<Mapping> collection = from l in faces orderby l.Mapping?.MappingFromItem.Id select l.Mapping;
@ -1235,7 +1244,7 @@ internal abstract class MapLogic
return results;
}
internal static List<Face> GetFaces(List<Item> items)
internal static ReadOnlyCollection<Face> GetFaces(ReadOnlyCollection<Item> items)
{
List<Face> results = new();
foreach (Item item in items)
@ -1249,18 +1258,26 @@ internal abstract class MapLogic
results.Add(face);
}
}
return results;
return new(results);
}
internal static Mapping[] GetSelectedMappingCollection(List<Item> items)
internal static Mapping[] GetSelectedMappingCollection(ReadOnlyCollection<Item> items)
{
Mapping[] results;
List<Face> faces = GetFaces(items);
ReadOnlyCollection<Face> faces = GetFaces(items);
results = GetSelectedMappingCollection(faces);
return results;
}
internal static Dictionary<int, Dictionary<int, Mapping>> GetIdToWholePercentagesToFace(Mapping[] mappingCollection)
private static ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> GetReadOnly(Dictionary<int, Dictionary<int, Mapping>> keyValuePairs)
{
Dictionary<int, ReadOnlyDictionary<int, Mapping>> results = new();
foreach (KeyValuePair<int, Dictionary<int, Mapping>> keyValuePair in keyValuePairs)
results.Add(keyValuePair.Key, new(keyValuePair.Value));
return new(results);
}
internal static ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> GetIdToWholePercentagesToFace(ReadOnlyCollection<Mapping> mappingCollection)
{
Dictionary<int, Dictionary<int, Mapping>> results = new();
Dictionary<int, Mapping>? keyValuePairs;
@ -1278,7 +1295,7 @@ internal abstract class MapLogic
continue;
keyValuePairs.Add(mapping.MappingFromLocation.WholePercentages, mapping);
}
return results;
return GetReadOnly(results);
}
private static string? TryToFind(char[] personCharacters, string a2PeopleSingletonDirectory, List<(string Directory, string DirectoryName, string DirectoryNameSplitFirst)> a2PeopleSingletonDirectories, string file, string path)