Removed SortContainers
useCeilingAverage as parameter
This commit is contained in:
@ -10,9 +10,12 @@ using WindowsShortcutFactory;
|
||||
|
||||
namespace View_by_Distance.Map.Models;
|
||||
|
||||
public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
public partial class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
{
|
||||
|
||||
[GeneratedRegex("[\\\\,\\/,\\:,\\*,\\?,\\\",\\<,\\>,\\|]")]
|
||||
private static partial Regex FileSystemSafe();
|
||||
|
||||
private readonly long _Ticks;
|
||||
private readonly Serilog.ILogger? _Log;
|
||||
private readonly Configuration? _Configuration;
|
||||
@ -21,7 +24,6 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
private readonly List<PersonContainer> _NotMappedPersonContainers;
|
||||
private readonly ReadOnlyDictionary<int, List<int>> _SkipCollection;
|
||||
private readonly ReadOnlyDictionary<int, List<int>> _SkipNotSkipCollection;
|
||||
private readonly ReadOnlyDictionary<long, PersonContainer> _PersonKeyToPersonContainer;
|
||||
private readonly Shared.Models.Properties.IPropertyConfiguration _PropertyConfiguration;
|
||||
private readonly ReadOnlyDictionary<int, List<LocationContainer<MetadataExtractor.Directory>>> _IdToLocationContainers;
|
||||
private readonly ReadOnlyDictionary<int, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>> _IdThenWholePercentagesToPersonContainers;
|
||||
@ -38,7 +40,6 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
List<PersonContainer> notMappedPersonContainers = new();
|
||||
Dictionary<int, List<(string, int)>> skipCollection = new();
|
||||
Dictionary<int, List<(string, int)>> skipNotSkipCollection = new();
|
||||
Dictionary<long, PersonContainer> personKeyToPersonContainer = new();
|
||||
List<LocationContainer<MetadataExtractor.Directory>> locationContainers = new();
|
||||
string? rootDirectoryParent = Path.GetDirectoryName(propertyConfiguration.RootDirectory);
|
||||
string eDistanceContentTicksDirectory = Path.Combine(eDistanceContentDirectory, $"({ticks})");
|
||||
@ -76,13 +77,12 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
ReadOnlyCollection<Stateless.MapLogic.PersonKeyFormattedIdThenWholePercentages> personKeyFormattedIdThenWholePercentagesCollection = Stateless.MapLogic.GetPersonKeyFormattedIdThenWholePercentages(configuration, ticks, records);
|
||||
int unableToMatchCount = records.Count - personKeyFormattedIdThenWholePercentagesCollection.Count;
|
||||
if (lossCount != 0 || unableToMatchCount != 0)
|
||||
{
|
||||
if (lossCount != 0 || unableToMatchCount != 0)
|
||||
{ }
|
||||
}
|
||||
//
|
||||
{
|
||||
Dictionary<long, int> personKeyToCount = new();
|
||||
Dictionary<long, PersonContainer> personKeyToPersonContainer = new();
|
||||
Dictionary<string, PersonContainer> personKeyFormattedToPersonContainer = new();
|
||||
Dictionary<long, List<PersonContainer>> personKeyToPersonContainerCollection = new();
|
||||
List<(Stateless.MapLogic.PersonKeyFormattedIdThenWholePercentages, PersonContainer)> possiblyNewPersonDisplayDirectoryNamesAndPersonContainer = new();
|
||||
@ -98,12 +98,12 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
readOnlyPersonKeyFormattedToPersonContainer = new(personKeyFormattedToPersonContainer);
|
||||
readOnlyPersonKeyToPersonContainerCollection = new(personKeyToPersonContainerCollection);
|
||||
readOnlyPossiblyNewPersonDisplayDirectoryNamesAndPersonContainer = new(possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
|
||||
Stateless.MapLogic.SetPersonKeyToPersonContainer(configuration,
|
||||
personContainers,
|
||||
readOnlyPersonKeyToCount,
|
||||
personKeyToPersonContainer,
|
||||
readOnlyPersonKeyToPersonContainerCollection);
|
||||
}
|
||||
Stateless.MapLogic.SetPersonKeyToPersonContainer(configuration,
|
||||
personContainers,
|
||||
readOnlyPersonKeyToCount,
|
||||
personKeyToPersonContainer,
|
||||
readOnlyPersonKeyToPersonContainerCollection);
|
||||
Stateless.MapLogic.PossiblyRebuildPersonContainers(configuration,
|
||||
ticks,
|
||||
a2PeopleSingletonDirectory,
|
||||
@ -118,7 +118,6 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
readOnlyPersonKeyToCount));
|
||||
}
|
||||
_PersonKeyToCount = readOnlyPersonKeyToCount;
|
||||
_PersonKeyToPersonContainer = new(personKeyToPersonContainer);
|
||||
_EDistanceContentTicksDirectory = eDistanceContentTicksDirectory;
|
||||
_SkipCollection = Stateless.MapLogic.ConvertSkip(skipCollection);
|
||||
Stateless.MapLogic.CheckCollection(propertyConfiguration, rootDirectoryParent);
|
||||
@ -159,9 +158,7 @@ public 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)
|
||||
@ -180,8 +177,6 @@ public 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;
|
||||
@ -227,12 +222,10 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
personKey = personBirthday.Value.Ticks;
|
||||
mappingSegmentB = Stateless.MapLogic.GetMappingSegmentB(_Ticks, personBirthday, personContainer.ApproximateYears, mapping.MappingFromItem);
|
||||
if (locationContainersFiles is null)
|
||||
{
|
||||
if (mapping.MappingFromPerson is null || mapping.MappingFromPerson.LocationContainersFiles.Count == 0)
|
||||
locationContainersFiles = new(Array.Empty<string>());
|
||||
else
|
||||
locationContainersFiles = mapping.MappingFromPerson.LocationContainersFiles;
|
||||
}
|
||||
mapping.UpdateMappingFromPerson(locationContainersFiles, personContainer.ApproximateYears, personContainer.DisplayDirectoryName, personBirthday, mappingSegmentB);
|
||||
}
|
||||
}
|
||||
@ -317,7 +310,6 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
File.SetAttributes(checkFile, FileAttributes.Hidden);
|
||||
}
|
||||
if (updated is null)
|
||||
{
|
||||
foreach (SaveContainer saveContainer in saveContainers)
|
||||
{
|
||||
if (string.IsNullOrEmpty(saveContainer.Directory) || string.IsNullOrEmpty(saveContainer.CheckFile) || saveContainer.ResizedFileHolder is null || !saveContainer.ResizedFileHolder.Exists)
|
||||
@ -330,7 +322,6 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
if (saveContainer.MakeAllHidden)
|
||||
File.SetAttributes(checkFile, FileAttributes.Hidden);
|
||||
}
|
||||
}
|
||||
foreach (SaveContainer saveContainer in saveContainers)
|
||||
{
|
||||
if (string.IsNullOrEmpty(saveContainer.Directory) || string.IsNullOrEmpty(saveContainer.ShortcutFile) || saveContainer.ResizedFileHolder is null || !saveContainer.ResizedFileHolder.Exists)
|
||||
@ -524,26 +515,24 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
saveContainer = new(checkFile, directory, faceFileHolder);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (saveIndividually)
|
||||
{
|
||||
facePartsDirectory = Stateless.MapLogic.GetFacePartsDirectory(_PropertyConfiguration, d2FacePartsContentDirectory, mapping.MappingFromItem);
|
||||
facePartsFileHolder = new(Path.Combine(facePartsDirectory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacePartsFileNameExtension}"));
|
||||
(saveContainer, SaveContainer? extraSaveContainer) = Stateless.MapLogic.GetContainers(_Configuration.FacesFileNameExtension, _Configuration.FacePartsFileNameExtension, directory, faceFileHolder, facePartsFileHolder, mapping);
|
||||
if (extraSaveContainer is not null)
|
||||
results.Add(extraSaveContainer);
|
||||
}
|
||||
else
|
||||
{
|
||||
facePartsDirectory = Stateless.MapLogic.GetFacePartsDirectory(_PropertyConfiguration, d2FacePartsContentDirectory, mapping.MappingFromItem);
|
||||
shortcutFile = Path.Combine(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}"));
|
||||
saveContainer = new(checkFile, directory, faceFileHolder, hiddenFaceFileHolder, facePartsFileHolder, mapping.MappingFromItem.ResizedFileHolder, shortcutFile);
|
||||
if (!isByMapping && mapping.By is not null && mapping.MappingFromPerson?.LocationContainersFiles.Count > 0 && IPerson.IsDefaultName(mapping.MappingFromPerson))
|
||||
results.Add(new(Path.GetDirectoryName(personDirectory) ?? personDirectory, mapping.MappingFromPerson.LocationContainersFiles[0]));
|
||||
}
|
||||
{
|
||||
facePartsDirectory = Stateless.MapLogic.GetFacePartsDirectory(_PropertyConfiguration, d2FacePartsContentDirectory, mapping.MappingFromItem);
|
||||
facePartsFileHolder = new(Path.Combine(facePartsDirectory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}{_Configuration.FacePartsFileNameExtension}"));
|
||||
(saveContainer, SaveContainer? extraSaveContainer) = Stateless.MapLogic.GetContainers(_Configuration.FacesFileNameExtension, _Configuration.FacePartsFileNameExtension, directory, faceFileHolder, facePartsFileHolder, mapping);
|
||||
if (extraSaveContainer is not null)
|
||||
results.Add(extraSaveContainer);
|
||||
}
|
||||
else
|
||||
{
|
||||
facePartsDirectory = Stateless.MapLogic.GetFacePartsDirectory(_PropertyConfiguration, d2FacePartsContentDirectory, mapping.MappingFromItem);
|
||||
shortcutFile = Path.Combine(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}"));
|
||||
saveContainer = new(checkFile, directory, faceFileHolder, hiddenFaceFileHolder, facePartsFileHolder, mapping.MappingFromItem.ResizedFileHolder, shortcutFile);
|
||||
if (!isByMapping && mapping.By is not null && mapping.MappingFromPerson?.LocationContainersFiles.Count > 0 && IPerson.IsDefaultName(mapping.MappingFromPerson))
|
||||
results.Add(new(Path.GetDirectoryName(personDirectory) ?? personDirectory, mapping.MappingFromPerson.LocationContainersFiles[0]));
|
||||
}
|
||||
results.Add(saveContainer);
|
||||
if (!isBySorting || mapping.SortingContainer is null || keyMapping is null)
|
||||
@ -939,7 +928,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
if (!string.IsNullOrEmpty(mapping.MappingFromItem.Model) && !string.IsNullOrEmpty(mapping.MappingFromItem.Model.Trim()))
|
||||
{
|
||||
// Remove-Item -LiteralPath "\\?\D:\Tmp\a\EX-Z70 "
|
||||
directory = Path.Combine($"{eDistanceContentDirectory}---", "Model Shortcuts", Regex.Replace(mapping.MappingFromItem.Model.Trim(), @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_"), directoryName);
|
||||
directory = Path.Combine($"{eDistanceContentDirectory}---", "Model Shortcuts", FileSystemSafe().Replace(mapping.MappingFromItem.Model.Trim(), "_"), directoryName);
|
||||
fileName = Path.Combine(directory, $"{mapping.MappingFromItem.ImageFileHolder.Name}.lnk");
|
||||
results.Add(new(mapping.MappingFromItem.ImageFileHolder.FullName, directory, dateTime, fileName, description, MakeAllHidden: false));
|
||||
}
|
||||
@ -1152,13 +1141,9 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
ReadOnlyCollection<PersonContainer>? personContainers;
|
||||
result = _SkipCollection.TryGetValue(id, out wholePercentagesCollection) && wholePercentagesCollection.Contains(wholePercentages);
|
||||
if (!result && wholePercentagesToPersonContainers is not null)
|
||||
{
|
||||
if (wholePercentagesToPersonContainers.TryGetValue(wholePercentages, out personContainers))
|
||||
{
|
||||
if (!ignoreXMatches || !personContainers.Any(l => IPerson.IsDefaultName(l)))
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1229,7 +1214,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
directoryName = Path.GetFileName(directory);
|
||||
if (string.IsNullOrEmpty(directoryName) || (directoryName.Length != 2 && directoryName.Length != 4))
|
||||
if (string.IsNullOrEmpty(directoryName) || directoryName.Length != 2 && directoryName.Length != 4)
|
||||
continue;
|
||||
Stateless.MapLogic.LookForAbandoned(distinctFilteredIds, directory, directoryName);
|
||||
}
|
||||
@ -1237,7 +1222,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
directoryName = Path.GetFileName(directory);
|
||||
if (string.IsNullOrEmpty(directoryName) || (directoryName.Length != 2 && directoryName.Length != 4))
|
||||
if (string.IsNullOrEmpty(directoryName) || directoryName.Length != 2 && directoryName.Length != 4)
|
||||
continue;
|
||||
Stateless.MapLogic.LookForAbandoned(distinctFilteredIds, directory, directoryName);
|
||||
}
|
||||
@ -1245,7 +1230,7 @@ public class MapLogic : Shared.Models.Methods.IMapLogic
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
directoryName = Path.GetFileName(directory);
|
||||
if (string.IsNullOrEmpty(directoryName) || (directoryName.Length != 2 && directoryName.Length != 4))
|
||||
if (string.IsNullOrEmpty(directoryName) || directoryName.Length != 2 && directoryName.Length != 4)
|
||||
continue;
|
||||
Stateless.MapLogic.LookForAbandoned(distinctFilteredIds, directory, directoryName);
|
||||
}
|
||||
|
Reference in New Issue
Block a user