LocationContainerDebugDirectory

This commit is contained in:
2023-09-08 23:22:55 -07:00
parent 8d759ccefd
commit 331d98793e
10 changed files with 264 additions and 94 deletions

View File

@ -18,6 +18,11 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
[GeneratedRegex("[\\\\,\\/,\\:,\\*,\\?,\\\",\\<,\\>,\\|]")]
private static partial Regex FileSystemSafe();
internal record Record(string? DebugDirectory,
string? Directory,
long? Ticks,
string PersonDirectory);
public void SaveContainers(int? updated, List<SaveContainer> saveContainers)
{
if (_Configuration is null)
@ -116,7 +121,11 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
continue;
try
{
string description = saveContainer.FaceFileHolder is not null ? saveContainer.FaceFileHolder.Name : string.Empty;
string description;
if (saveContainer.FaceFileHolder is not null && saveContainer.FaceFileHolder.Name.StartsWith(saveContainer.ResizedFileHolder.Name))
description = saveContainer.FaceFileHolder.Name;
else
description = saveContainer.ResizedFileHolder.Name;
windowsShortcut = new() { Path = saveContainer.ResizedFileHolder.FullName, Description = description };
windowsShortcut.Save(saveContainer.ShortcutFile);
windowsShortcut.Dispose();
@ -307,6 +316,8 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
{ }
if (!string.IsNullOrEmpty(a2PeopleContentDirectory) && configuration.LocationContainerDistanceTolerance is not null)
Stateless.MapLogic.SaveMappedRelations(configuration, distance, a2PeopleContentDirectory, eDistanceContentDirectory, ticks, locationContainers, readOnlyPersonKeyFormattedToPersonContainer, readOnlyPersonKeyToPersonContainerCollection);
if (!string.IsNullOrEmpty(configuration.LocationContainerDebugDirectory))
throw new Exception($"{nameof(configuration.LocationContainerDebugDirectory)} is not IsNullOrEmpty!");
}
_PersonKeyToCount = readOnlyPersonKeyToCount;
_EDistanceContentTicksDirectory = eDistanceContentTicksDirectory;
@ -469,7 +480,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
return (ticks, directory);
}
private static bool PreAndPostContinue(Configuration configuration, ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping, Sorting sorting, Mapping mapping, Mapping keyMapping)
private static bool PreAndPostContinue(Configuration configuration, Mapping mapping, Mapping keyMapping)
{
bool result = true;
if (result && mapping.MappingFromFilterPre.InSkipCollection is not null && mapping.MappingFromFilterPre.InSkipCollection.Value)
@ -493,13 +504,15 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
return result;
}
private (string?, long?, string) Get(Configuration configuration, bool saveIndividually, string by, Mapping question, int padLeft)
private Record Get(Configuration configuration, bool saveIndividually, string by, Mapping question, int padLeft)
{
long? ticks;
string? directory;
string? debugDirectory;
string personDirectory;
if (question.MappingFromPerson is null)
{
debugDirectory = null;
(ticks, directory) = GetDirectory(configuration, saveIndividually, padLeft, question.SegmentC, by, question.MappingFromItem);
personDirectory = directory is null ? string.Empty : Path.Combine(directory, $"X+{ticks}");
}
@ -507,34 +520,34 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
{
ticks = null;
string personKeyFormatted = IPersonBirthday.GetFormatted(configuration.PersonBirthdayFormat, question.MappingFromPerson.PersonKey);
debugDirectory = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, question.MappingFromPerson.DisplayDirectoryName);
if (string.IsNullOrEmpty(question.SegmentC))
directory = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, question.MappingFromPerson.SegmentB);
else if (saveIndividually)
directory = Path.Combine(_EDistanceContentTicksDirectory, by, question.SegmentC.PadLeft(padLeft, '0'), personKeyFormatted, question.MappingFromPerson.SegmentB);
else if (!saveIndividually)
directory = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, $"Z-{question.MappingFromPerson.SegmentB}-{question.SegmentC}");
else
directory = Path.Combine(_EDistanceContentTicksDirectory, by, personKeyFormatted, question.MappingFromPerson.SegmentB, question.SegmentC);
directory = Path.Combine(_EDistanceContentTicksDirectory, by, question.SegmentC.PadLeft(padLeft, '0'), personKeyFormatted, question.MappingFromPerson.SegmentB);
personDirectory = Path.Combine(directory, question.MappingFromPerson.DisplayDirectoryName, "lnk");
}
return (directory, ticks, personDirectory);
return new(debugDirectory, directory, ticks, personDirectory);
}
private List<SaveContainer> GetSaveContainers(string dFacesContentDirectory, string d2FacePartsContentDirectory, string d2FacePartsContentCollectionDirectory, ReadOnlyCollection<Mapping> mappingCollection, ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping, ReadOnlyDictionary<long, List<int>> personKeyToIds, int? useFiltersCounter, bool saveMapped, bool saveIndividually, bool sortingContainersAny)
private List<SaveContainer> GetSaveContainers(string dFacesContentDirectory, string d2FacePartsContentDirectory, ReadOnlyCollection<Mapping> mappingCollection, ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping, ReadOnlyDictionary<long, List<int>> personKeyToIds, int? useFiltersCounter, bool saveMapped, bool saveIndividually, bool sortingContainersAny)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
List<SaveContainer> results = new();
string by;
long? ticks;
Record record;
List<int>? ids;
bool isByMapping;
bool isBySorting;
Sorting? sorting;
string checkFile;
string? directory;
Mapping? question;
string? directory;
string shortcutFile;
string facesDirectory;
string personDirectory;
FileHolder faceFileHolder;
string facePartsDirectory;
SaveContainer? saveContainer;
@ -569,12 +582,13 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
throw new NotSupportedException();
if (!wholePercentagesToMapping.TryGetValue(sorting.WholePercentages, out question))
throw new NotSupportedException();
if (!PreAndPostContinue(_Configuration, idToWholePercentagesToMapping, sorting, mapping, question))
if (!PreAndPostContinue(_Configuration, mapping, question))
continue;
}
(directory, ticks, personDirectory) = Get(_Configuration, saveIndividually, by, mapping, padLeft);
if (string.IsNullOrEmpty(directory))
record = Get(_Configuration, saveIndividually, by, mapping, padLeft);
if (string.IsNullOrEmpty(record.Directory))
throw new NotSupportedException();
directory = record.Directory;
if (mapping.MappingFromPerson is not null)
{
if (saveIndividually)
@ -589,15 +603,15 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
{
if (!_Configuration.SaveSortingWithoutPerson)
continue;
if (ticks is null)
if (record.Ticks is null)
continue;
if (saveIndividually)
{
directory = Path.Combine(directory, mapping.MappingFromItem.Id.ToString());
results.Add(new(Path.Combine(directory, $"X+{ticks}")));
results.Add(new(Path.Combine(directory, $"X+{record.Ticks}")));
}
}
results.Add(new(personDirectory));
results.Add(new(record.PersonDirectory));
if (question is not null)
{
if (question.MappingFromLocation is null)
@ -611,7 +625,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
continue;
if (isByMapping)
{
checkFile = Path.Combine(personDirectory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}");
checkFile = Path.Combine(record.PersonDirectory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}");
saveContainer = new(checkFile, directory, faceFileHolder);
}
else if (saveIndividually)
@ -625,7 +639,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
else
{
facePartsDirectory = Stateless.MapLogic.GetFacePartsDirectory(_PropertyConfiguration, d2FacePartsContentDirectory, mapping.MappingFromItem);
shortcutFile = Path.Combine(personDirectory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}.lnk");
shortcutFile = Path.Combine(record.PersonDirectory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}.lnk");
checkFile = Path.Combine(directory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}");
hiddenFaceFileHolder = new(Path.Combine(facesDirectory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacesHiddenFileNameExtension}"));
facePartsFileHolder = new(Path.Combine(facePartsDirectory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacePartsFileNameExtension}"));
@ -644,7 +658,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
bool saveMapped = true;
int? useFiltersCounter = null;
string mappingDirectory = Path.Combine(_EDistanceContentTicksDirectory, nameof(Shared.Models.Stateless.IMapLogic.Mapping));
List<SaveContainer> saveContainers = GetSaveContainers(dFacesContentDirectory, d2FacePartsContentDirectory, d2FacePartsContentCollectionDirectory, mappingCollection, idToWholePercentagesToMapping, personKeyToIds, useFiltersCounter, saveMapped, sortingContainersAny: true, saveIndividually: false);
List<SaveContainer> saveContainers = GetSaveContainers(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToWholePercentagesToMapping, personKeyToIds, useFiltersCounter, saveMapped, sortingContainersAny: true, saveIndividually: false);
SaveContainers(updated, saveContainers);
if (!string.IsNullOrEmpty(_EDistanceContentTicksDirectory) && Directory.Exists(mappingDirectory))
Stateless.MapLogic.SaveMappingShortcuts(mappingDirectory);
@ -759,14 +773,13 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
}
List<SaveContainer> results = new();
string by;
long? ticks;
Record record;
bool isBySorting;
string checkFile;
Mapping? question;
string? directory;
string shortcutFile;
string facesDirectory;
string personDirectory;
bool isCounterPersonYear;
string facePartsDirectory;
FileHolder? faceFileHolder;
@ -786,9 +799,12 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
throw new NotSupportedException();
if (question.MappingFromLocation is null)
continue;
(directory, ticks, personDirectory) = Get(_Configuration, _Configuration.SaveIndividually, by, question, padLeft);
if (string.IsNullOrEmpty(directory))
record = Get(_Configuration, _Configuration.SaveIndividually, by, question, padLeft);
if (string.IsNullOrEmpty(record.Directory))
throw new NotSupportedException();
directory = record.Directory;
if (!string.IsNullOrEmpty(record.DebugDirectory))
results.Add(new(record.DebugDirectory));
if (question.MappingFromPerson is not null)
{
if (_Configuration.SaveIndividually)
@ -801,21 +817,21 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
{
if (!_Configuration.SaveSortingWithoutPerson)
throw new NotSupportedException();
if (ticks is null)
if (record.Ticks is null)
continue;
if (_Configuration.SaveIndividually)
{
directory = Path.Combine(directory, question.MappingFromItem.Id.ToString());
results.Add(new(Path.Combine(directory, $"X+{ticks}")));
results.Add(new(Path.Combine(directory, $"X+{record.Ticks}")));
}
}
results.Add(new(personDirectory));
results.Add(new(record.PersonDirectory));
if (_Configuration.SaveIndividually && question.MappingFromLocation.WholePercentages == question.MappingFromLocation.WholePercentages)
results.Add(new(Path.Combine(directory, "Maybe")));
facesDirectory = Stateless.MapLogic.GetFacesDirectory(_PropertyConfiguration, dFacesContentDirectory, question.MappingFromItem);
faceFileHolder = new(Path.Combine(facesDirectory, $"{question.MappingFromLocation.DeterministicHashCodeKey}{question.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacesFileNameExtension}"));
facePartsDirectory = Stateless.MapLogic.GetFacePartsDirectory(_PropertyConfiguration, d2FacePartsContentDirectory, question.MappingFromItem);
shortcutFile = Path.Combine(personDirectory, $"{question.MappingFromLocation.DeterministicHashCodeKey}{question.MappingFromItem.ImageFileHolder.ExtensionLowered}.lnk");
shortcutFile = Path.Combine(record.PersonDirectory, $"{question.MappingFromLocation.DeterministicHashCodeKey}{question.MappingFromItem.ImageFileHolder.ExtensionLowered}.lnk");
checkFile = Path.Combine(directory, $"{question.MappingFromLocation.DeterministicHashCodeKey}{question.MappingFromItem.ImageFileHolder.ExtensionLowered}");
hiddenFaceFileHolder = new(Path.Combine(facesDirectory, $"{question.MappingFromLocation.DeterministicHashCodeKey}{question.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacesHiddenFileNameExtension}"));
facePartsFileHolder = new(Path.Combine(facePartsDirectory, $"{question.MappingFromLocation.DeterministicHashCodeKey}{question.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacePartsFileNameExtension}"));
@ -893,7 +909,7 @@ public partial class MapLogic : Shared.Models.Methods.IMapLogic
throw new NotSupportedException(nameof(GetSortingCollection));
if (keyMapping.MappingFromFilterPost.CanReMap is not null && !keyMapping.MappingFromFilterPost.CanReMap.Value)
throw new NotSupportedException(nameof(GetSortingCollection));
if (!PreAndPostContinue(_Configuration, idToWholePercentagesToMapping, sorting, sortingContainer.Source, keyMapping))
if (!PreAndPostContinue(_Configuration, sortingContainer.Source, keyMapping))
continue;
if (!idToWholePercentagesCollection.TryGetValue(sorting.Id, out wholePercentagesCollection))
{