Fix random logic

This commit is contained in:
2023-08-12 08:30:08 -07:00
parent b3da09c757
commit 2f5d309ed1
10 changed files with 68 additions and 45 deletions

View File

@ -149,7 +149,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
return new(results);
}
public Dictionary<long, List<int>> GetPersonKeyToIds()
public ReadOnlyDictionary<long, List<int>> GetPersonKeyToIds()
{
Dictionary<long, List<int>> results = new();
long personKey;
@ -158,7 +158,9 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
PersonBirthday personBirthday;
List<string> shouldMove = new();
foreach (KeyValuePair<int, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>> idToCollection in _IdThenWholePercentagesToPersonContainers)
{
foreach (KeyValuePair<int, ReadOnlyCollection<PersonContainer>> wholePercentagesToPersonContainers in idToCollection.Value)
{
foreach (PersonContainer personContainer in wholePercentagesToPersonContainers.Value)
{
if (personContainer.Key is null || personContainer.Birthdays is null || personContainer.Birthdays.Length == 0)
@ -177,9 +179,11 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
continue;
collection.Add(idToCollection.Key);
}
}
}
if (shouldMove.Count > 0)
throw new Exception(string.Join(Environment.NewLine, shouldMove));
return results;
return new(results);
}
(bool, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>?) Shared.Models.Methods.IMapLogic.GetWholePercentagesToPersonContainers(int id)
@ -759,7 +763,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
return new(personKeyFormatted, personBirthday);
}
private List<string> GetPersonKeyFormattedCollection(string[] jLinks, string a2PeopleContentDirectory, ReadOnlyCollection<PersonContainer> personContainers, Dictionary<long, List<int>> personKeyToIds)
private List<string> GetPersonKeyFormattedCollection(string[] jLinks, string a2PeopleContentDirectory, ReadOnlyCollection<PersonContainer> personContainers, ReadOnlyDictionary<long, List<int>> personKeyToIds)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
@ -817,7 +821,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
return results;
}
private (int, FileHolder, int, string, string, string, string)[] GetCollectionForSaveFilteredOriginalImagesFromJLinks(string[] jLinks, string a2PeopleContentDirectory, ReadOnlyCollection<PersonContainer> personContainers, ReadOnlyCollection<Mapping> mappingCollection, Dictionary<long, List<int>> personKeyToIds)
private (int, FileHolder, int, string, string, string, string)[] GetCollectionForSaveFilteredOriginalImagesFromJLinks(string[] jLinks, string a2PeopleContentDirectory, ReadOnlyCollection<PersonContainer> personContainers, ReadOnlyCollection<Mapping> mappingCollection, ReadOnlyDictionary<long, List<int>> personKeyToIds)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
@ -878,7 +882,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
return results;
}
public void SaveFilteredOriginalImagesFromJLinks(string[] jLinks, ReadOnlyCollection<PersonContainer> personContainers, string a2PeopleContentDirectory, Dictionary<long, List<int>> personKeyToIds, ReadOnlyCollection<Mapping> mappingCollection)
public void SaveFilteredOriginalImagesFromJLinks(string[] jLinks, ReadOnlyCollection<PersonContainer> personContainers, string a2PeopleContentDirectory, ReadOnlyDictionary<long, List<int>> personKeyToIds, ReadOnlyCollection<Mapping> mappingCollection)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
@ -896,7 +900,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
SaveContainers(saveIndividually, null, saveContainers);
}
private List<SaveShortcutsForOutputResolutions> GetCollectionForSaveShortcutsForOutputResolutionsPreMapLogic(string eDistanceContentDirectory, Dictionary<long, List<int>> personKeyToIds, ReadOnlyCollection<Mapping> mappingCollection)
private List<SaveShortcutsForOutputResolutions> GetCollectionForSaveShortcutsForOutputResolutionsPreMapLogic(string eDistanceContentDirectory, ReadOnlyDictionary<long, List<int>> personKeyToIds, ReadOnlyCollection<Mapping> mappingCollection)
{
List<SaveShortcutsForOutputResolutions> results = new();
if (_Configuration is null)
@ -912,7 +916,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
List<long>? personKeys;
string personKeyFormatted;
Calendar calendar = new CultureInfo("en-US").Calendar;
Dictionary<int, List<long>> idToPersonKeys = Stateless.Methods.IMapLogic.GetIdToPersonKeys(personKeyToIds);
ReadOnlyDictionary<int, List<long>> idToPersonKeys = Stateless.Methods.IMapLogic.GetIdToPersonKeys(personKeyToIds);
foreach (Mapping mapping in mappingCollection)
{
dateTime = mapping.MappingFromItem.GetDateTimeOriginalThenMinimumDateTime();
@ -952,7 +956,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
return results;
}
public void SaveShortcutsForOutputResolutionsPreMapLogic(string eDistanceContentDirectory, Dictionary<long, List<int>> personKeyToIds, ReadOnlyCollection<Mapping> mappingCollection)
public void SaveShortcutsForOutputResolutionsPreMapLogic(string eDistanceContentDirectory, ReadOnlyDictionary<long, List<int>> personKeyToIds, ReadOnlyCollection<Mapping> mappingCollection)
{
string hiddenFile;
WindowsShortcut windowsShortcut;

View File

@ -37,6 +37,7 @@ internal abstract class MapLogic
{
int? id;
string fileName;
string checkFile;
int? wholePercentages;
List<string> distinctFiles = new();
List<string> distinctFileName = new();
@ -58,8 +59,10 @@ internal abstract class MapLogic
fileName = Path.GetFileName(distinctFile);
if (distinctFileName.Contains(fileName))
{
if (!distinctFile.EndsWith(".dup") && !File.Exists($"{distinctFile}.dup"))
File.Move(distinctFile, $"{distinctFile}.dup");
checkFile = $"{distinctFile}.dup";
if (File.Exists(checkFile))
continue;
File.Move(distinctFile, checkFile);
continue;
}
(id, wholePercentages) = IMapping.GetConverted(configuration.FacesFileNameExtension, distinctFile);
@ -256,6 +259,7 @@ internal abstract class MapLogic
string[] files;
string fileName;
int totalSeconds;
string checkFile;
DateTime dateTime;
TimeSpan timeSpan;
int directoryNumber;
@ -406,8 +410,10 @@ internal abstract class MapLogic
fileName = Path.GetFileName(mappedFaceFile);
if (distinct.Contains(fileName))
{
if (!mappedFaceFile.EndsWith(".dup") && !File.Exists($"{mappedFaceFile}.dup"))
File.Move(mappedFaceFile, $"{mappedFaceFile}.dup");
checkFile = $"{mappedFaceFile}.dup";
if (File.Exists(checkFile))
continue;
File.Move(mappedFaceFile, checkFile);
continue;
}
distinct.Add(fileName);
@ -818,9 +824,11 @@ internal abstract class MapLogic
Directory.SetLastWriteTime(ticksDirectory, new DateTime(directoryTicks));
totalDays = lastDirectoryTicks is null || new TimeSpan(dateTime.Ticks - directoryTicks).TotalDays < 1 ? null : (float)new TimeSpan(directoryTicks - lastDirectoryTicks.Value).TotalDays;
results.Add(new(ticksDirectory, ticksDirectoryName, new(directoryTicks), new DateTime(directoryDateTime.Year, directoryDateTime.Month, directoryDateTime.Day + 1), totalDays));
if (directoryDateTime.Hour == 0 && directoryDateTime.Minute == 0 && directoryDateTime.Second == 0)
continue;
lastDirectoryTicks = directoryTicks;
}
string[] compare = (from l in results where l.DirectoryDateTime.Second != 0 && l.TotalDays is not null and < 3.95f select l.Directory).ToArray();
string[] compare = (from l in results where l.TotalDays is not null and < 9.95f select l.Directory).ToArray();
if (compare.Length > 0)
throw new Exception($"Please Consolidate <{string.Join(Environment.NewLine, compare)}>");
return results;
@ -890,6 +898,7 @@ internal abstract class MapLogic
private static void ParallelFor(Configuration configuration, string eDistanceContentDirectory, Dictionary<int, List<(string, int)>> skipCollection, List<LocationContainer<MetadataExtractor.Directory>> locationContainers, long personKey, int? directoryNumber, string file)
{
string checkFile;
string[] fileMatches;
const string lnk = ".lnk";
int? id, wholePercentages;
@ -909,8 +918,11 @@ internal abstract class MapLogic
{
if (string.IsNullOrEmpty(fileMatch) || !File.Exists(fileMatch))
continue;
if (!fileMatch.EndsWith(".dup") && !File.Exists($"{fileMatch}.dup"))
File.Move(fileMatch, $"{fileMatch}.dup");
checkFile = $"{fileMatch}.dup";
if (File.Exists(checkFile))
continue;
File.Move(fileMatch, checkFile);
continue;
}
}
if (file.EndsWith(lnk) || (!configuration.DistanceMoveUnableToMatch && !configuration.DistanceRenameToMatch) || !File.Exists(file))
@ -1255,7 +1267,7 @@ internal abstract class MapLogic
}
}
internal static Dictionary<int, List<long>> GetIdToPersonKeys(Dictionary<long, List<int>> personKeyToIds)
internal static ReadOnlyDictionary<int, List<long>> GetIdToPersonKeys(ReadOnlyDictionary<long, List<int>> personKeyToIds)
{
Dictionary<int, List<long>> results = new();
List<long>? collection;
@ -1274,7 +1286,7 @@ internal abstract class MapLogic
collection.Add(keyValuePair.Key);
}
}
return results;
return new(results);
}
internal static Mapping[] GetSelectedMappingCollection(ReadOnlyCollection<Face> faces)

View File

@ -5,9 +5,9 @@ namespace View_by_Distance.Map.Models.Stateless.Methods;
public interface IMapLogic
{
Dictionary<int, List<long>> TestStatic_GetIdToPersonKeys(Dictionary<long, List<int>> personKeyToIds) =>
ReadOnlyDictionary<int, List<long>> TestStatic_GetIdToPersonKeys(ReadOnlyDictionary<long, List<int>> personKeyToIds) =>
GetIdToPersonKeys(personKeyToIds);
static Dictionary<int, List<long>> GetIdToPersonKeys(Dictionary<long, List<int>> personKeyToIds) =>
static ReadOnlyDictionary<int, List<long>> GetIdToPersonKeys(ReadOnlyDictionary<long, List<int>> personKeyToIds) =>
MapLogic.GetIdToPersonKeys(personKeyToIds);
ReadOnlyCollection<Shared.Models.Face> TestStatic_GetFaces(ReadOnlyCollection<Shared.Models.Item> items) =>