Container bug fix
This commit is contained in:
parent
c1d30b5bbc
commit
659e0e39bf
@ -162,7 +162,7 @@ public class Compare
|
|||||||
}
|
}
|
||||||
if (_IsEnvironment.Development && propertyConfiguration.PopulatePropertyId && !mapLogic.KeyValuePairs.Any())
|
if (_IsEnvironment.Development && propertyConfiguration.PopulatePropertyId && !mapLogic.KeyValuePairs.Any())
|
||||||
throw new Exception("Copy keyValuePairs-####.json file");
|
throw new Exception("Copy keyValuePairs-####.json file");
|
||||||
List<Shared.Models.Container> containers = A_Property.Get(propertyConfiguration, propertyLogic);
|
Shared.Models.Container[] containers = A_Property.Get(propertyConfiguration, propertyLogic);
|
||||||
if (!isSilent)
|
if (!isSilent)
|
||||||
{
|
{
|
||||||
_Log.Information("First pass completed");
|
_Log.Information("First pass completed");
|
||||||
@ -743,7 +743,7 @@ public class Compare
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ThirdPassToMove(Property.Models.Configuration configuration, Model? model, PredictorModel? predictorModel, Map.Models.MapLogic mapLogic, A_Property propertyLogic, List<Shared.Models.Container> containers, string aPropertyContentCollectionDirectory)
|
private void ThirdPassToMove(Property.Models.Configuration configuration, Model? model, PredictorModel? predictorModel, Map.Models.MapLogic mapLogic, A_Property propertyLogic, Shared.Models.Container[] containers, string aPropertyContentCollectionDirectory)
|
||||||
{
|
{
|
||||||
if (_Log is null)
|
if (_Log is null)
|
||||||
throw new NullReferenceException(nameof(_Log));
|
throw new NullReferenceException(nameof(_Log));
|
||||||
@ -821,7 +821,7 @@ public class Compare
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FourthPassCreateWindowsShortcuts(Property.Models.Configuration configuration, Model? model, PredictorModel? predictorModel, Map.Models.MapLogic mapLogic, A_Property propertyLogic, List<Shared.Models.Container> containers, bool saveToCollection, bool keepAll)
|
private void FourthPassCreateWindowsShortcuts(Property.Models.Configuration configuration, Model? model, PredictorModel? predictorModel, Map.Models.MapLogic mapLogic, A_Property propertyLogic, Shared.Models.Container[] containers, bool saveToCollection, bool keepAll)
|
||||||
{
|
{
|
||||||
if (_Log is null)
|
if (_Log is null)
|
||||||
throw new NullReferenceException(nameof(_Log));
|
throw new NullReferenceException(nameof(_Log));
|
||||||
|
@ -61,7 +61,7 @@ public class DateGroup
|
|||||||
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(propertyConfiguration.RootDirectory);
|
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(propertyConfiguration.RootDirectory);
|
||||||
if (true || appSettings.MaxDegreeOfParallelism < 2)
|
if (true || appSettings.MaxDegreeOfParallelism < 2)
|
||||||
ticks = LogDelta(ticks, nameof(Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories));
|
ticks = LogDelta(ticks, nameof(Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories));
|
||||||
List<Shared.Models.Container> containers = A_Property.Get(propertyConfiguration, propertyLogic);
|
Shared.Models.Container[] containers = A_Property.Get(propertyConfiguration, propertyLogic);
|
||||||
if (configuration.ByCreateDateShortcut.HasValue && configuration.ByCreateDateShortcut.Value)
|
if (configuration.ByCreateDateShortcut.HasValue && configuration.ByCreateDateShortcut.Value)
|
||||||
CreateDateShortcut(propertyConfiguration, containers);
|
CreateDateShortcut(propertyConfiguration, containers);
|
||||||
else
|
else
|
||||||
@ -429,7 +429,7 @@ public class DateGroup
|
|||||||
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(_Configuration.PropertyConfiguration.RootDirectory);
|
_ = Shared.Models.Stateless.Methods.IPath.DeleteEmptyDirectories(_Configuration.PropertyConfiguration.RootDirectory);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void CreateDateShortcut(Property.Models.Configuration configuration, List<Shared.Models.Container> containers)
|
private static void CreateDateShortcut(Property.Models.Configuration configuration, Shared.Models.Container[] containers)
|
||||||
{
|
{
|
||||||
string path;
|
string path;
|
||||||
string fileName;
|
string fileName;
|
||||||
|
@ -18,6 +18,7 @@ public class DlibDotNet
|
|||||||
{
|
{
|
||||||
|
|
||||||
private readonly D_Face _Faces;
|
private readonly D_Face _Faces;
|
||||||
|
private readonly bool _FirstRun;
|
||||||
private readonly G_Index _Index;
|
private readonly G_Index _Index;
|
||||||
private readonly C_Resize _Resize;
|
private readonly C_Resize _Resize;
|
||||||
private readonly F_Random _Random;
|
private readonly F_Random _Random;
|
||||||
@ -67,7 +68,15 @@ public class DlibDotNet
|
|||||||
_ArgZeroIsConfigurationRootDirectory = propertyConfiguration.RootDirectory == argZero;
|
_ArgZeroIsConfigurationRootDirectory = propertyConfiguration.RootDirectory == argZero;
|
||||||
_Log.Information(configuration.ModelDirectory);
|
_Log.Information(configuration.ModelDirectory);
|
||||||
(Model model, PredictorModel predictorModel, ModelParameter modelParameter) = GetModel(configuration);
|
(Model model, PredictorModel predictorModel, ModelParameter modelParameter) = GetModel(configuration);
|
||||||
if (!_ArgZeroIsConfigurationRootDirectory)
|
string propertyRoot = Property.Models.Stateless.IResult.GetResultsGroupDirectory(propertyConfiguration, nameof(A_Property), create: false);
|
||||||
|
if (Directory.Exists(propertyRoot))
|
||||||
|
_FirstRun = false;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_FirstRun = true;
|
||||||
|
_ = Directory.CreateDirectory(propertyRoot);
|
||||||
|
}
|
||||||
|
if (_FirstRun || !_ArgZeroIsConfigurationRootDirectory)
|
||||||
people = Array.Empty<Person>();
|
people = Array.Empty<Person>();
|
||||||
else
|
else
|
||||||
people = _People.GetPeople(propertyConfiguration);
|
people = _People.GetPeople(propertyConfiguration);
|
||||||
@ -90,8 +99,8 @@ public class DlibDotNet
|
|||||||
_Resize = new C_Resize(configuration.ForceResizeLastWriteTimeToCreationTime, configuration.OverrideForResizeImages, configuration.PropertiesChangedForResize, configuration.ValidResolutions, imageCodecInfo, encoderParameters, filenameExtension);
|
_Resize = new C_Resize(configuration.ForceResizeLastWriteTimeToCreationTime, configuration.OverrideForResizeImages, configuration.PropertiesChangedForResize, configuration.ValidResolutions, imageCodecInfo, encoderParameters, filenameExtension);
|
||||||
}
|
}
|
||||||
if (!configuration.SkipSearch)
|
if (!configuration.SkipSearch)
|
||||||
Search(propertyConfiguration, configuration.Reverse, model, predictorModel, argZero, people, isSilent);
|
Search(propertyConfiguration, model, predictorModel, argZero, propertyRoot, people, isSilent);
|
||||||
if (_Exceptions.Count == 0 && _ArgZeroIsConfigurationRootDirectory)
|
if (!_FirstRun && _Exceptions.Count == 0 && _ArgZeroIsConfigurationRootDirectory)
|
||||||
{
|
{
|
||||||
long ticks = DateTime.Now.Ticks;
|
long ticks = DateTime.Now.Ticks;
|
||||||
List<string[]> directoryCollections = _Rename.GetDirectoryRenameCollections(propertyConfiguration, model, predictorModel, relativePath: string.Empty, newDirectoryName: string.Empty, jsonFiles4InfoAny: false);
|
List<string[]> directoryCollections = _Rename.GetDirectoryRenameCollections(propertyConfiguration, model, predictorModel, relativePath: string.Empty, newDirectoryName: string.Empty, jsonFiles4InfoAny: false);
|
||||||
@ -110,7 +119,7 @@ public class DlibDotNet
|
|||||||
_Log.Information(message);
|
_Log.Information(message);
|
||||||
if (_Exceptions.Count != 0)
|
if (_Exceptions.Count != 0)
|
||||||
throw new Exception(message);
|
throw new Exception(message);
|
||||||
if (configuration.LoadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions.Any())
|
if (!_FirstRun && configuration.LoadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions.Any())
|
||||||
{
|
{
|
||||||
long ticks = DateTime.Now.Ticks;
|
long ticks = DateTime.Now.Ticks;
|
||||||
foreach (string outputResolution in configuration.LoadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions)
|
foreach (string outputResolution in configuration.LoadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions)
|
||||||
@ -118,6 +127,8 @@ public class DlibDotNet
|
|||||||
if (appSettings.MaxDegreeOfParallelism < 2)
|
if (appSettings.MaxDegreeOfParallelism < 2)
|
||||||
ticks = LogDelta(ticks, nameof(E_Distance.LoadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions));
|
ticks = LogDelta(ticks, nameof(E_Distance.LoadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions));
|
||||||
}
|
}
|
||||||
|
if (_FirstRun)
|
||||||
|
_Log.Information("First run completed. Run again if wanted");
|
||||||
}
|
}
|
||||||
|
|
||||||
private long LogDelta(long ticks, string? methodName)
|
private long LogDelta(long ticks, string? methodName)
|
||||||
@ -419,14 +430,15 @@ public class DlibDotNet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WriteGroup(Property.Models.Configuration configuration, A_Property propertyLogic, Shared.Models.Property[] propertyCollection, List<List<KeyValuePair<string, string>>> metadataCollection, List<List<Face>> faceCollections, List<Dictionary<string, int[]>> resizeKeyValuePairs, string sourceDirectory, string outputResolution, Item[] filteredItems)
|
private void WriteGroup(Property.Models.Configuration configuration, A_Property propertyLogic, Shared.Models.Property[] propertyCollection, List<List<KeyValuePair<string, string>>> metadataCollection, List<List<Face>> faceCollections, List<Dictionary<string, int[]>> resizeKeyValuePairs, string outputResolution, Container container, Item[] filteredItems)
|
||||||
{
|
{
|
||||||
Item item;
|
Item item;
|
||||||
string key;
|
string key;
|
||||||
string json;
|
string json;
|
||||||
string checkFile;
|
string checkFile;
|
||||||
int sourceDirectoryLength = sourceDirectory.Length;
|
int sourceDirectoryLength = container.SourceDirectory.Length;
|
||||||
_FilePropertiesKeyValuePairs.Add(sourceDirectory, new List<Tuple<string, Shared.Models.Property>>());
|
if (_ArgZeroIsConfigurationRootDirectory && outputResolution == _Configuration.OutputResolutions[0])
|
||||||
|
_FilePropertiesKeyValuePairs.Add(container.SourceDirectory, new List<Tuple<string, Shared.Models.Property>>());
|
||||||
JsonSerializerOptions writeIndentedJsonSerializerOptions = new() { WriteIndented = false };
|
JsonSerializerOptions writeIndentedJsonSerializerOptions = new() { WriteIndented = false };
|
||||||
if (!(from l in propertyCollection where l?.Width is null select true).Any())
|
if (!(from l in propertyCollection where l?.Width is null select true).Any())
|
||||||
{
|
{
|
||||||
@ -435,7 +447,7 @@ public class DlibDotNet
|
|||||||
List<KeyValuePair<string, Shared.Models.Property>> propertyCollectionKeyValuePairs = new();
|
List<KeyValuePair<string, Shared.Models.Property>> propertyCollectionKeyValuePairs = new();
|
||||||
List<KeyValuePair<string, Dictionary<string, int[]>>> resizeKeyValuePairsCollections = new();
|
List<KeyValuePair<string, Dictionary<string, int[]>>> resizeKeyValuePairsCollections = new();
|
||||||
List<KeyValuePair<string, List<KeyValuePair<string, string>>>> metadataCollectionKeyValuePairs = new();
|
List<KeyValuePair<string, List<KeyValuePair<string, string>>>> metadataCollectionKeyValuePairs = new();
|
||||||
(int level, List<string> directories) = Shared.Models.Stateless.Methods.IPath.Get(configuration.RootDirectory, sourceDirectory);
|
(int level, List<string> directories) = Shared.Models.Stateless.Methods.IPath.Get(configuration.RootDirectory, container.SourceDirectory);
|
||||||
string fileName = string.Concat(string.Join(configuration.FileNameDirectorySeparator, directories), ".json");
|
string fileName = string.Concat(string.Join(configuration.FileNameDirectorySeparator, directories), ".json");
|
||||||
for (int i = 0; i < filteredItems.Length; i++)
|
for (int i = 0; i < filteredItems.Length; i++)
|
||||||
{
|
{
|
||||||
@ -445,8 +457,11 @@ public class DlibDotNet
|
|||||||
if (item.ImageFileHolder is null)
|
if (item.ImageFileHolder is null)
|
||||||
continue;
|
continue;
|
||||||
key = Shared.Models.Stateless.Methods.IPath.GetRelativePath(item.ImageFileHolder.FullName, sourceDirectoryLength);
|
key = Shared.Models.Stateless.Methods.IPath.GetRelativePath(item.ImageFileHolder.FullName, sourceDirectoryLength);
|
||||||
_FileKeyValuePairs.Add(new KeyValuePair<string, string>(sourceDirectory, key));
|
if (_ArgZeroIsConfigurationRootDirectory && outputResolution == _Configuration.OutputResolutions[0])
|
||||||
_FilePropertiesKeyValuePairs[sourceDirectory].Add(new Tuple<string, Shared.Models.Property>(key, propertyCollection[i]));
|
{
|
||||||
|
_FileKeyValuePairs.Add(new KeyValuePair<string, string>(container.SourceDirectory, key));
|
||||||
|
_FilePropertiesKeyValuePairs[container.SourceDirectory].Add(new Tuple<string, Shared.Models.Property>(key, propertyCollection[i]));
|
||||||
|
}
|
||||||
faceCollectionsKeyValuePairs.Add(new KeyValuePair<string, List<Face>>(key, faceCollections[i]));
|
faceCollectionsKeyValuePairs.Add(new KeyValuePair<string, List<Face>>(key, faceCollections[i]));
|
||||||
propertyCollectionKeyValuePairs.Add(new KeyValuePair<string, Shared.Models.Property>(key, propertyCollection[i]));
|
propertyCollectionKeyValuePairs.Add(new KeyValuePair<string, Shared.Models.Property>(key, propertyCollection[i]));
|
||||||
resizeKeyValuePairsCollections.Add(new KeyValuePair<string, Dictionary<string, int[]>>(key, resizeKeyValuePairs[i]));
|
resizeKeyValuePairsCollections.Add(new KeyValuePair<string, Dictionary<string, int[]>>(key, resizeKeyValuePairs[i]));
|
||||||
@ -551,7 +566,7 @@ public class DlibDotNet
|
|||||||
converted: true));
|
converted: true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FullDoWork(string argZero, Property.Models.Configuration configuration, Model? model, PredictorModel? predictorModel, long ticks, Map.Models.MapLogic mapLogic, A_Property propertyLogic, List<Container> containers)
|
private void FullDoWork(string argZero, Property.Models.Configuration configuration, Model? model, PredictorModel? predictorModel, string propertyRoot, long ticks, Map.Models.MapLogic mapLogic, A_Property propertyLogic, Container[] containers)
|
||||||
{
|
{
|
||||||
if (_Log is null)
|
if (_Log is null)
|
||||||
throw new NullReferenceException(nameof(_Log));
|
throw new NullReferenceException(nameof(_Log));
|
||||||
@ -574,7 +589,6 @@ public class DlibDotNet
|
|||||||
List<Shared.Models.Property?> nullablePropertyCollection = new();
|
List<Shared.Models.Property?> nullablePropertyCollection = new();
|
||||||
List<List<KeyValuePair<string, string>>> metadataCollection = new();
|
List<List<KeyValuePair<string, string>>> metadataCollection = new();
|
||||||
string aPropertySingletonDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(configuration, nameof(A_Property), "{}");
|
string aPropertySingletonDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(configuration, nameof(A_Property), "{}");
|
||||||
string propertyRoot = Property.Models.Stateless.IResult.GetResultsGroupDirectory(configuration, nameof(A_Property));
|
|
||||||
foreach (string outputResolution in _Configuration.OutputResolutions)
|
foreach (string outputResolution in _Configuration.OutputResolutions)
|
||||||
{
|
{
|
||||||
_FileKeyValuePairs.Clear();
|
_FileKeyValuePairs.Clear();
|
||||||
@ -596,7 +610,7 @@ public class DlibDotNet
|
|||||||
nullablePropertyCollection.Clear();
|
nullablePropertyCollection.Clear();
|
||||||
propertyFileHolderCollection.Clear();
|
propertyFileHolderCollection.Clear();
|
||||||
SetAngleBracketCollections(configuration, propertyLogic, outputResolution, container, aResultsFullGroupDirectory, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory);
|
SetAngleBracketCollections(configuration, propertyLogic, outputResolution, container, aResultsFullGroupDirectory, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory);
|
||||||
exceptionCount = FullParallelWork(ticks, propertyLogic, outputResolution, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, sourceDirectoryChanges, propertyFileHolderCollection, nullablePropertyCollection, metadataCollection, resizeKeyValuePairs, faceCollections, containers.Count, container, filteredItems);
|
exceptionCount = FullParallelWork(ticks, propertyLogic, outputResolution, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, sourceDirectoryChanges, propertyFileHolderCollection, nullablePropertyCollection, metadataCollection, resizeKeyValuePairs, faceCollections, containers.Length, container, filteredItems);
|
||||||
#pragma warning disable
|
#pragma warning disable
|
||||||
ids = (from l in filteredItems where l.Property?.Id is not null select l.Property.Id.Value).ToArray();
|
ids = (from l in filteredItems where l.Property?.Id is not null select l.Property.Id.Value).ToArray();
|
||||||
#pragma warning restore
|
#pragma warning restore
|
||||||
@ -611,11 +625,11 @@ public class DlibDotNet
|
|||||||
filteredItems[i].Faces.AddRange(from l in faceCollections[i] select l);
|
filteredItems[i].Faces.AddRange(from l in faceCollections[i] select l);
|
||||||
propertyCollection = (from l in nullablePropertyCollection where l is not null select l).ToArray();
|
propertyCollection = (from l in nullablePropertyCollection where l is not null select l).ToArray();
|
||||||
if (_ArgZeroIsConfigurationRootDirectory && exceptionCount == 0)
|
if (_ArgZeroIsConfigurationRootDirectory && exceptionCount == 0)
|
||||||
WriteGroup(configuration, propertyLogic, propertyCollection, metadataCollection, faceCollections, resizeKeyValuePairs, container.SourceDirectory, outputResolution, filteredItems);
|
WriteGroup(configuration, propertyLogic, propertyCollection, metadataCollection, faceCollections, resizeKeyValuePairs, outputResolution, container, filteredItems);
|
||||||
if (_ArgZeroIsConfigurationRootDirectory && exceptionCount == 0 && outputResolution == _Configuration.OutputResolutions[0])
|
if (_ArgZeroIsConfigurationRootDirectory && exceptionCount == 0 && outputResolution == _Configuration.OutputResolutions[0])
|
||||||
mapLogic.AddToMapLogicAllCollection(filteredItems);
|
mapLogic.AddToMapLogicAllCollection(filteredItems);
|
||||||
if (exceptionCount == 0 && _Configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions.Contains(outputResolution))
|
if (exceptionCount == 0 && _Configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions.Contains(outputResolution))
|
||||||
_Distance.LoadOrCreateThenSaveDistanceResults(configuration, eResultsFullGroupDirectory, container.SourceDirectory, outputResolution, sourceDirectoryChanges, filteredItems);
|
_Distance.LoadOrCreateThenSaveDistanceResults(configuration, eResultsFullGroupDirectory, outputResolution, container, sourceDirectoryChanges, filteredItems);
|
||||||
if (Directory.GetFiles(propertyRoot, "*.txt", SearchOption.TopDirectoryOnly).Any())
|
if (Directory.GetFiles(propertyRoot, "*.txt", SearchOption.TopDirectoryOnly).Any())
|
||||||
{
|
{
|
||||||
for (int y = 0; y < int.MaxValue; y++)
|
for (int y = 0; y < int.MaxValue; y++)
|
||||||
@ -672,11 +686,11 @@ public class DlibDotNet
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Search(Property.Models.Configuration configuration, bool reverse, Model? model, PredictorModel? predictorModel, string argZero, Person[] people, bool isSilent)
|
private void Search(Property.Models.Configuration configuration, Model? model, PredictorModel? predictorModel, string argZero, string propertyRoot, Person[] people, bool isSilent)
|
||||||
{
|
{
|
||||||
if (_Log is null)
|
if (_Log is null)
|
||||||
throw new NullReferenceException(nameof(_Log));
|
throw new NullReferenceException(nameof(_Log));
|
||||||
List<Container> containers;
|
Container[] containers;
|
||||||
long ticks = DateTime.Now.Ticks;
|
long ticks = DateTime.Now.Ticks;
|
||||||
string aResultsFullGroupDirectory;
|
string aResultsFullGroupDirectory;
|
||||||
string bResultsFullGroupDirectory;
|
string bResultsFullGroupDirectory;
|
||||||
@ -687,14 +701,16 @@ public class DlibDotNet
|
|||||||
string d2ResultsFullGroupDirectory;
|
string d2ResultsFullGroupDirectory;
|
||||||
Dictionary<string, Person> personKeyValuePairs = A2_People.Convert(people);
|
Dictionary<string, Person> personKeyValuePairs = A2_People.Convert(people);
|
||||||
Map.Models.MapLogic mapLogic = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _Resize.FilenameExtension, personKeyValuePairs);
|
Map.Models.MapLogic mapLogic = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _Resize.FilenameExtension, personKeyValuePairs);
|
||||||
A_Property propertyLogic = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _Resize.FilenameExtension, reverse, model, predictorModel, mapLogic.IndicesFromNew, mapLogic.KeyValuePairs);
|
A_Property propertyLogic = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _Resize.FilenameExtension, _Configuration.Reverse, model, predictorModel, mapLogic.IndicesFromNew, mapLogic.KeyValuePairs);
|
||||||
if (string.IsNullOrEmpty(configuration.RootDirectory))
|
if (string.IsNullOrEmpty(configuration.RootDirectory))
|
||||||
containers = A_Property.Get(configuration, propertyLogic);
|
containers = A_Property.Get(configuration, propertyLogic);
|
||||||
else
|
else
|
||||||
containers = Property.Models.Stateless.Container.GetContainers(configuration, propertyLogic);
|
containers = Property.Models.Stateless.Container.GetContainers(configuration, _FirstRun, propertyLogic);
|
||||||
FullDoWork(argZero, configuration, model, predictorModel, ticks, mapLogic, propertyLogic, containers);
|
FullDoWork(argZero, configuration, model, predictorModel, propertyRoot, ticks, mapLogic, propertyLogic, containers);
|
||||||
foreach (string outputResolution in _Configuration.OutputResolutions)
|
foreach (string outputResolution in _Configuration.OutputResolutions)
|
||||||
{
|
{
|
||||||
|
if (_FirstRun)
|
||||||
|
break;
|
||||||
(aResultsFullGroupDirectory, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, eResultsFullGroupDirectory, zResultsFullGroupDirectory) = GetResultsFullGroupDirectories(configuration, model, predictorModel, outputResolution);
|
(aResultsFullGroupDirectory, bResultsFullGroupDirectory, cResultsFullGroupDirectory, dResultsFullGroupDirectory, d2ResultsFullGroupDirectory, eResultsFullGroupDirectory, zResultsFullGroupDirectory) = GetResultsFullGroupDirectories(configuration, model, predictorModel, outputResolution);
|
||||||
if (_ArgZeroIsConfigurationRootDirectory && _Exceptions.Count == 0 && outputResolution == _Configuration.OutputResolutions[0])
|
if (_ArgZeroIsConfigurationRootDirectory && _Exceptions.Count == 0 && outputResolution == _Configuration.OutputResolutions[0])
|
||||||
{
|
{
|
||||||
|
@ -173,7 +173,7 @@ internal class E_Distance
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void LoadOrCreateThenSaveDistanceResults(Property.Models.Configuration configuration, string eResultsFullGroupDirectory, string sourceDirectory, string outputResolution, List<Tuple<string, DateTime>> sourceDirectoryChanges, Item[] filteredItems)
|
internal void LoadOrCreateThenSaveDistanceResults(Property.Models.Configuration configuration, string eResultsFullGroupDirectory, string outputResolution, Container container, List<Tuple<string, DateTime>> sourceDirectoryChanges, Item[] filteredItems)
|
||||||
{
|
{
|
||||||
Item item;
|
Item item;
|
||||||
string json;
|
string json;
|
||||||
@ -194,7 +194,7 @@ internal class E_Distance
|
|||||||
List<DateTime> dateTimes = (from l in sourceDirectoryChanges where changesFrom.Contains(l.Item1) select l.Item2).ToList();
|
List<DateTime> dateTimes = (from l in sourceDirectoryChanges where changesFrom.Contains(l.Item1) select l.Item2).ToList();
|
||||||
List<string> directoryInfoCollection = Property.Models.Stateless.IResult.GetDirectoryInfoCollection(
|
List<string> directoryInfoCollection = Property.Models.Stateless.IResult.GetDirectoryInfoCollection(
|
||||||
configuration,
|
configuration,
|
||||||
sourceDirectory,
|
container.SourceDirectory,
|
||||||
eResultsFullGroupDirectory,
|
eResultsFullGroupDirectory,
|
||||||
contentDescription: ".tvs File",
|
contentDescription: ".tvs File",
|
||||||
singletonDescription: string.Empty,
|
singletonDescription: string.Empty,
|
||||||
@ -652,7 +652,7 @@ internal class E_Distance
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Dictionary<string, List<(FaceRecognitionDotNet.FaceEncoding, MappingContainer)>> ParallelWork(int maxDegreeOfParallelism, string[] ignoreRelativePaths, string argZero, long ticks, List<Container> containers)
|
internal Dictionary<string, List<(FaceRecognitionDotNet.FaceEncoding, MappingContainer)>> ParallelWork(int maxDegreeOfParallelism, string[] ignoreRelativePaths, string argZero, long ticks, Container[] containers)
|
||||||
{
|
{
|
||||||
Dictionary<string, List<(FaceRecognitionDotNet.FaceEncoding, MappingContainer)>> results;
|
Dictionary<string, List<(FaceRecognitionDotNet.FaceEncoding, MappingContainer)>> results;
|
||||||
Dictionary<string, List<MappingContainer>> keyValuePairs = Map.Models.Stateless.IMapLogic.GetKeyValuePairs(ignoreRelativePaths, argZero, containers);
|
Dictionary<string, List<MappingContainer>> keyValuePairs = Map.Models.Stateless.IMapLogic.GetKeyValuePairs(ignoreRelativePaths, argZero, containers);
|
||||||
@ -660,7 +660,7 @@ internal class E_Distance
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddToFaceDistance(int maxDegreeOfParallelism, string argZero, long ticks, Map.Models.MapLogic mapLogic, List<Container> containers, string outputResolution, List<(string, int, Mapping, DateTime, bool?, List<(FaceRecognitionDotNet.FaceEncoding, MappingContainer)>)> collection)
|
public void AddToFaceDistance(int maxDegreeOfParallelism, string argZero, long ticks, Map.Models.MapLogic mapLogic, Container[] containers, string outputResolution, List<(string, int, Mapping, DateTime, bool?, List<(FaceRecognitionDotNet.FaceEncoding, MappingContainer)>)> collection)
|
||||||
{
|
{
|
||||||
if (_Log is null)
|
if (_Log is null)
|
||||||
throw new NullReferenceException(nameof(_Log));
|
throw new NullReferenceException(nameof(_Log));
|
||||||
@ -670,7 +670,7 @@ internal class E_Distance
|
|||||||
double deterministicHashCodeKey;
|
double deterministicHashCodeKey;
|
||||||
DateTime dateTime = DateTime.Now;
|
DateTime dateTime = DateTime.Now;
|
||||||
List<FaceDistance> faceDistances;
|
List<FaceDistance> faceDistances;
|
||||||
int containersCount = containers.Count;
|
int containersCount = containers.Length;
|
||||||
foreach (Container container in containers)
|
foreach (Container container in containers)
|
||||||
{
|
{
|
||||||
if (!container.Items.Any())
|
if (!container.Items.Any())
|
||||||
@ -702,7 +702,7 @@ internal class E_Distance
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SavePropertyHolders(string argZero, List<Container> containers, string zPropertyHolderSingletonDirectory)
|
public static void SavePropertyHolders(string argZero, Container[] containers, string zPropertyHolderSingletonDirectory)
|
||||||
{
|
{
|
||||||
string json;
|
string json;
|
||||||
FileInfo fileInfo;
|
FileInfo fileInfo;
|
||||||
|
@ -176,7 +176,7 @@ public class MapLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UseKeyValuePairsSaveFaceEncoding(List<Container> containers)
|
public void UseKeyValuePairsSaveFaceEncoding(Container[] containers)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(_DeterministicHashCodeContentDirectory))
|
if (!string.IsNullOrEmpty(_DeterministicHashCodeContentDirectory))
|
||||||
{
|
{
|
||||||
@ -458,7 +458,7 @@ public class MapLogic
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddToClosest(int maxDegreeOfParallelism, string argZero, List<Container> containers)
|
public void AddToClosest(int maxDegreeOfParallelism, string argZero, Container[] containers)
|
||||||
{
|
{
|
||||||
string key;
|
string key;
|
||||||
string dateKey;
|
string dateKey;
|
||||||
@ -508,7 +508,7 @@ public class MapLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<(IFileHolder? resizedFileHolder, string directory, FileInfo? faceFileInfo, string checkFile, string shortcutFile, string json)> GetClosest(string argZero, List<Container> containers, string dFacesContentDirectory, string d2ResultsFullGroupDirectory, string zPropertyHolderContentDirectory)
|
private List<(IFileHolder? resizedFileHolder, string directory, FileInfo? faceFileInfo, string checkFile, string shortcutFile, string json)> GetClosest(string argZero, Container[] containers, string dFacesContentDirectory, string d2ResultsFullGroupDirectory, string zPropertyHolderContentDirectory)
|
||||||
{
|
{
|
||||||
List<(IFileHolder?, string, FileInfo?, string, string, string)> results = new();
|
List<(IFileHolder?, string, FileInfo?, string, string, string)> results = new();
|
||||||
Closest? match;
|
Closest? match;
|
||||||
@ -609,7 +609,7 @@ public class MapLogic
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<(IFileHolder? resizedFileHolder, string directory, FileInfo? faceFileInfo, string checkFile, string shortcutFile, string json)> GetMapping(string argZero, List<Container> containers, string dFacesContentDirectory, string d2ResultsFullGroupDirectory, string zPropertyHolderContentDirectory)
|
private List<(IFileHolder? resizedFileHolder, string directory, FileInfo? faceFileInfo, string checkFile, string shortcutFile, string json)> GetMapping(string argZero, Container[] containers, string dFacesContentDirectory, string d2ResultsFullGroupDirectory, string zPropertyHolderContentDirectory)
|
||||||
{
|
{
|
||||||
List<(IFileHolder?, string, FileInfo?, string, string, string)> results = new();
|
List<(IFileHolder?, string, FileInfo?, string, string, string)> results = new();
|
||||||
string key;
|
string key;
|
||||||
@ -810,13 +810,13 @@ public class MapLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveClosest(string argZero, List<Container> containers, string dFacesContentDirectory, string d2ResultsFullGroupDirectory, string zPropertyHolderContentDirectory)
|
public void SaveClosest(string argZero, Container[] containers, string dFacesContentDirectory, string d2ResultsFullGroupDirectory, string zPropertyHolderContentDirectory)
|
||||||
{
|
{
|
||||||
List<(IFileHolder? resizedFileHolder, string directory, FileInfo? faceFileInfo, string checkFile, string shortcutFile, string json)> collection = GetClosest(argZero, containers, dFacesContentDirectory, d2ResultsFullGroupDirectory, zPropertyHolderContentDirectory);
|
List<(IFileHolder? resizedFileHolder, string directory, FileInfo? faceFileInfo, string checkFile, string shortcutFile, string json)> collection = GetClosest(argZero, containers, dFacesContentDirectory, d2ResultsFullGroupDirectory, zPropertyHolderContentDirectory);
|
||||||
Save(collection);
|
Save(collection);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveMapping(string argZero, List<Container> containers, string dFacesContentDirectory, string d2ResultsFullGroupDirectory, string zPropertyHolderContentDirectory)
|
public void SaveMapping(string argZero, Container[] containers, string dFacesContentDirectory, string d2ResultsFullGroupDirectory, string zPropertyHolderContentDirectory)
|
||||||
{
|
{
|
||||||
List<(IFileHolder? resizedFileHolder, string directory, FileInfo? faceFileInfo, string checkFile, string shortcutFile, string json)> collection = GetMapping(argZero, containers, dFacesContentDirectory, d2ResultsFullGroupDirectory, zPropertyHolderContentDirectory);
|
List<(IFileHolder? resizedFileHolder, string directory, FileInfo? faceFileInfo, string checkFile, string shortcutFile, string json)> collection = GetMapping(argZero, containers, dFacesContentDirectory, d2ResultsFullGroupDirectory, zPropertyHolderContentDirectory);
|
||||||
Save(collection);
|
Save(collection);
|
||||||
|
@ -11,8 +11,8 @@ public interface IMapLogic
|
|||||||
static string GetDateKey(DateTime dateTime, Shared.Models.Mapping mapping, DateTime minimumDateTime, bool? isWrongYear) =>
|
static string GetDateKey(DateTime dateTime, Shared.Models.Mapping mapping, DateTime minimumDateTime, bool? isWrongYear) =>
|
||||||
MapLogic.GetDateKey(dateTime, mapping, minimumDateTime, isWrongYear);
|
MapLogic.GetDateKey(dateTime, mapping, minimumDateTime, isWrongYear);
|
||||||
|
|
||||||
Dictionary<string, List<Shared.Models.MappingContainer>> TestStatic_GetKeyValuePairs(string[] ignoreRelativePaths, string argZero, List<Shared.Models.Container> containers);
|
Dictionary<string, List<Shared.Models.MappingContainer>> TestStatic_GetKeyValuePairs(string[] ignoreRelativePaths, string argZero, Shared.Models.Container[] containers);
|
||||||
static Dictionary<string, List<Shared.Models.MappingContainer>> GetKeyValuePairs(string[] ignoreRelativePaths, string argZero, List<Shared.Models.Container> containers) =>
|
static Dictionary<string, List<Shared.Models.MappingContainer>> GetKeyValuePairs(string[] ignoreRelativePaths, string argZero, Shared.Models.Container[] containers) =>
|
||||||
MapLogic.GetKeyValuePairs(ignoreRelativePaths, argZero, containers);
|
MapLogic.GetKeyValuePairs(ignoreRelativePaths, argZero, containers);
|
||||||
|
|
||||||
}
|
}
|
@ -30,7 +30,7 @@ internal abstract class MapLogic
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static Dictionary<string, List<MappingContainer>> GetKeyValuePairs(string[] ignoreRelativePaths, string argZero, List<Container> containers)
|
internal static Dictionary<string, List<MappingContainer>> GetKeyValuePairs(string[] ignoreRelativePaths, string argZero, Container[] containers)
|
||||||
{
|
{
|
||||||
Dictionary<string, List<MappingContainer>> results = new();
|
Dictionary<string, List<MappingContainer>> results = new();
|
||||||
string key;
|
string key;
|
||||||
|
@ -39,10 +39,10 @@ public class NotCopyCopy
|
|||||||
throw new Exception("This program only allows development environments!");
|
throw new Exception("This program only allows development environments!");
|
||||||
A_Property propertyLogic = GetPropertyLogic(reverse, model, outputExtension, predictorModel);
|
A_Property propertyLogic = GetPropertyLogic(reverse, model, outputExtension, predictorModel);
|
||||||
propertyConfiguration.ChangeRootDirectory(configuration.CompareSource);
|
propertyConfiguration.ChangeRootDirectory(configuration.CompareSource);
|
||||||
List<Shared.Models.Container> compareContainers = A_Property.Get(propertyConfiguration, propertyLogic);
|
Shared.Models.Container[] compareContainers = A_Property.Get(propertyConfiguration, propertyLogic);
|
||||||
propertyConfiguration.ChangeRootDirectory(configuration.SelectedSource);
|
propertyConfiguration.ChangeRootDirectory(configuration.SelectedSource);
|
||||||
List<Shared.Models.Container> selectedContainers = A_Property.Get(propertyConfiguration, propertyLogic);
|
Shared.Models.Container[] selectedContainers = A_Property.Get(propertyConfiguration, propertyLogic);
|
||||||
if (compareContainers.Count == selectedContainers.Count)
|
if (compareContainers.Length == selectedContainers.Length)
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
string directoryName;
|
string directoryName;
|
||||||
List<string> distinct = new();
|
List<string> distinct = new();
|
||||||
|
@ -140,8 +140,8 @@ public class A_Property
|
|||||||
}
|
}
|
||||||
else if (!isIgnoreExtension && isValidImageFormatExtension)
|
else if (!isIgnoreExtension && isValidImageFormatExtension)
|
||||||
{
|
{
|
||||||
if (populateId && (id is null || !indices.Any()) && !_IndicesFromNew.Any() && !_KeyValuePairs.Any())
|
// if (populateId && (id is null || !indices.Any()) && !_IndicesFromNew.Any() && !_KeyValuePairs.Any())
|
||||||
throw new Exception("In order to keep six character indices at least one need to have an item!");
|
// throw new Exception("In order to keep six character indices at least one need to have an item!");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using Image image = Image.FromFile(filteredSourceDirectoryFileHolder.FullName);
|
using Image image = Image.FromFile(filteredSourceDirectoryFileHolder.FullName);
|
||||||
@ -611,7 +611,7 @@ public class A_Property
|
|||||||
collectionDescription: string.Empty));
|
collectionDescription: string.Empty));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ParallelWork(long ticks, List<Shared.Models.Container> containers, bool firstPass)
|
public void ParallelWork(long ticks, Shared.Models.Container[] containers, bool firstPass)
|
||||||
{
|
{
|
||||||
if (_Log is null)
|
if (_Log is null)
|
||||||
throw new NullReferenceException(nameof(_Log));
|
throw new NullReferenceException(nameof(_Log));
|
||||||
@ -619,7 +619,7 @@ public class A_Property
|
|||||||
bool? anyFilesMoved;
|
bool? anyFilesMoved;
|
||||||
Item[] filteredItems;
|
Item[] filteredItems;
|
||||||
List<Exception> exceptions = new();
|
List<Exception> exceptions = new();
|
||||||
int containersCount = containers.Count;
|
int containersCount = containers.Length;
|
||||||
List<Tuple<string, DateTime>> sourceDirectoryChanges = new();
|
List<Tuple<string, DateTime>> sourceDirectoryChanges = new();
|
||||||
string propertyRoot = IResult.GetResultsGroupDirectory(_Configuration, nameof(A_Property));
|
string propertyRoot = IResult.GetResultsGroupDirectory(_Configuration, nameof(A_Property));
|
||||||
foreach (Shared.Models.Container container in containers)
|
foreach (Shared.Models.Container container in containers)
|
||||||
@ -706,12 +706,13 @@ public class A_Property
|
|||||||
return results.OrderBy(l => l.Ticks).ToArray();
|
return results.OrderBy(l => l.Ticks).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Shared.Models.Container> Get(Configuration configuration, A_Property propertyLogic)
|
public static Shared.Models.Container[] Get(Configuration configuration, A_Property propertyLogic)
|
||||||
{
|
{
|
||||||
List<Shared.Models.Container> results;
|
Shared.Models.Container[] results;
|
||||||
|
bool firstRun = false;
|
||||||
long ticks = DateTime.Now.Ticks;
|
long ticks = DateTime.Now.Ticks;
|
||||||
List<string> exceptionsDirectories = new();
|
List<string> exceptionsDirectories = new();
|
||||||
results = Stateless.Container.GetContainers(configuration, propertyLogic);
|
results = Stateless.Container.GetContainers(configuration, firstRun, propertyLogic);
|
||||||
propertyLogic.ParallelWork(ticks, results, firstPass: false);
|
propertyLogic.ParallelWork(ticks, results, firstPass: false);
|
||||||
if (exceptionsDirectories.Any())
|
if (exceptionsDirectories.Any())
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
|
@ -144,18 +144,26 @@ public class Container
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Shared.Models.Container> GetContainers(Configuration configuration, string aPropertySingletonDirectory, List<(int, string, FileHolder[], int)> fileHolderGroupCollection, List<(int, string, List<(string, Shared.Models.Property?)>, int)> collectionFromJson)
|
private static Shared.Models.Container[] GetContainers(Configuration configuration, bool firstRun, string aPropertySingletonDirectory, List<(int, string, FileHolder[], int)> fileHolderGroupCollection, List<(int, string, List<(string, Shared.Models.Property?)>, int)> collectionFromJson)
|
||||||
{
|
{
|
||||||
List<Shared.Models.Container> results = new();
|
Shared.Models.Container[] results;
|
||||||
int length;
|
int length;
|
||||||
string key;
|
int additional;
|
||||||
string inferred;
|
string inferred;
|
||||||
|
string fileName;
|
||||||
|
string extension;
|
||||||
List<Item> items;
|
List<Item> items;
|
||||||
|
string[] existing;
|
||||||
|
string keyWithJson;
|
||||||
string relativePath;
|
string relativePath;
|
||||||
|
string? directoryName;
|
||||||
|
string extensionLowered;
|
||||||
FileHolder keyFileHolder;
|
FileHolder keyFileHolder;
|
||||||
Shared.Models.Container container;
|
string? fileNameWithoutExtension;
|
||||||
bool isValidImageFormatExtension;
|
bool isValidImageFormatExtension;
|
||||||
|
Shared.Models.Container container;
|
||||||
List<string> keySourceDirectories;
|
List<string> keySourceDirectories;
|
||||||
|
Dictionary<string, Shared.Models.Container> keyValuePairs = new();
|
||||||
Dictionary<string, (string SourceDirectory, FileHolder FileHolder)> fileHolderKeyValuePairs = new();
|
Dictionary<string, (string SourceDirectory, FileHolder FileHolder)> fileHolderKeyValuePairs = new();
|
||||||
length = configuration.RootDirectory.Length;
|
length = configuration.RootDirectory.Length;
|
||||||
foreach ((int g, string sourceDirectory, FileHolder[] sourceDirectoryFileHolderCollection, int r) in fileHolderGroupCollection)
|
foreach ((int g, string sourceDirectory, FileHolder[] sourceDirectoryFileHolderCollection, int r) in fileHolderGroupCollection)
|
||||||
@ -163,8 +171,21 @@ public class Container
|
|||||||
foreach (FileHolder sourceDirectoryFileHolder in sourceDirectoryFileHolderCollection)
|
foreach (FileHolder sourceDirectoryFileHolder in sourceDirectoryFileHolderCollection)
|
||||||
{
|
{
|
||||||
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFileHolder.FullName, length);
|
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFileHolder.FullName, length);
|
||||||
key = string.Concat(relativePath, ".json");
|
fileHolderKeyValuePairs.Add(relativePath, new(sourceDirectory, sourceDirectoryFileHolder));
|
||||||
fileHolderKeyValuePairs.Add(key, new(sourceDirectory, sourceDirectoryFileHolder));
|
extension = Path.GetExtension(sourceDirectoryFileHolder.FullName);
|
||||||
|
extensionLowered = Path.GetExtension(sourceDirectoryFileHolder.FullName).ToLower();
|
||||||
|
if (extension != extensionLowered)
|
||||||
|
{
|
||||||
|
directoryName = Path.GetDirectoryName(sourceDirectoryFileHolder.FullName);
|
||||||
|
if (string.IsNullOrEmpty(directoryName))
|
||||||
|
continue;
|
||||||
|
fileNameWithoutExtension = Path.GetFileNameWithoutExtension(sourceDirectoryFileHolder.FullName);
|
||||||
|
if (string.IsNullOrEmpty(fileNameWithoutExtension))
|
||||||
|
continue;
|
||||||
|
fileName = Path.Combine(directoryName, $"{fileNameWithoutExtension}{extensionLowered}");
|
||||||
|
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(fileName, length);
|
||||||
|
fileHolderKeyValuePairs.Add(relativePath, new(sourceDirectory, sourceDirectoryFileHolder));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
length = aPropertySingletonDirectory.Length;
|
length = aPropertySingletonDirectory.Length;
|
||||||
@ -176,9 +197,9 @@ public class Container
|
|||||||
keySourceDirectories = new();
|
keySourceDirectories = new();
|
||||||
foreach ((string sourceDirectoryFile, Shared.Models.Property? property) in collection)
|
foreach ((string sourceDirectoryFile, Shared.Models.Property? property) in collection)
|
||||||
{
|
{
|
||||||
key = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFile, length);
|
keyWithJson = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFile, length);
|
||||||
relativePath = key[..^5];
|
relativePath = keyWithJson[..^5];
|
||||||
if (!fileHolderKeyValuePairs.ContainsKey(key))
|
if (!fileHolderKeyValuePairs.ContainsKey(relativePath))
|
||||||
{
|
{
|
||||||
inferred = string.Concat(configuration.RootDirectory, relativePath);
|
inferred = string.Concat(configuration.RootDirectory, relativePath);
|
||||||
keyFileHolder = new(inferred);
|
keyFileHolder = new(inferred);
|
||||||
@ -190,9 +211,9 @@ public class Container
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
keyFileHolder = fileHolderKeyValuePairs[key].FileHolder;
|
keyFileHolder = fileHolderKeyValuePairs[relativePath].FileHolder;
|
||||||
keySourceDirectories.Add(fileHolderKeyValuePairs[key].SourceDirectory);
|
keySourceDirectories.Add(fileHolderKeyValuePairs[relativePath].SourceDirectory);
|
||||||
if (!fileHolderKeyValuePairs.Remove(key))
|
if (!fileHolderKeyValuePairs.Remove(relativePath))
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
if (keyFileHolder.ExtensionLowered is ".json")
|
if (keyFileHolder.ExtensionLowered is ".json")
|
||||||
continue;
|
continue;
|
||||||
@ -210,7 +231,7 @@ public class Container
|
|||||||
if (keySourceDirectories.Distinct().Count() != 1)
|
if (keySourceDirectories.Distinct().Count() != 1)
|
||||||
continue;
|
continue;
|
||||||
container = new(g, r, items, keySourceDirectories[0]);
|
container = new(g, r, items, keySourceDirectories[0]);
|
||||||
results.Add(container);
|
keyValuePairs.Add(keySourceDirectories[0], container);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
length = configuration.RootDirectory.Length;
|
length = configuration.RootDirectory.Length;
|
||||||
@ -220,10 +241,9 @@ public class Container
|
|||||||
foreach (FileHolder sourceDirectoryFileHolder in sourceDirectoryFileHolderCollection)
|
foreach (FileHolder sourceDirectoryFileHolder in sourceDirectoryFileHolderCollection)
|
||||||
{
|
{
|
||||||
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFileHolder.FullName, length);
|
relativePath = Shared.Models.Stateless.Methods.IPath.GetRelativePath(sourceDirectoryFileHolder.FullName, length);
|
||||||
key = string.Concat(relativePath, ".json");
|
if (!fileHolderKeyValuePairs.ContainsKey(relativePath))
|
||||||
if (!fileHolderKeyValuePairs.ContainsKey(key))
|
|
||||||
continue;
|
continue;
|
||||||
if (!fileHolderKeyValuePairs.Remove(key))
|
if (!fileHolderKeyValuePairs.Remove(relativePath))
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
if (sourceDirectoryFileHolder.ExtensionLowered is ".json")
|
if (sourceDirectoryFileHolder.ExtensionLowered is ".json")
|
||||||
continue;
|
continue;
|
||||||
@ -231,20 +251,39 @@ public class Container
|
|||||||
items.Add(new(relativePath, sourceDirectoryFileHolder.FullName, sourceDirectoryFileHolder, isValidImageFormatExtension, null, null, null));
|
items.Add(new(relativePath, sourceDirectoryFileHolder.FullName, sourceDirectoryFileHolder, isValidImageFormatExtension, null, null, null));
|
||||||
}
|
}
|
||||||
if (items.Any())
|
if (items.Any())
|
||||||
|
{
|
||||||
|
if (!keyValuePairs.ContainsKey(sourceDirectory))
|
||||||
{
|
{
|
||||||
container = new(g, r, items, sourceDirectory);
|
container = new(g, r, items, sourceDirectory);
|
||||||
results.Add(container);
|
keyValuePairs.Add(sourceDirectory, container);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
additional = 0;
|
||||||
|
container = keyValuePairs[sourceDirectory];
|
||||||
|
existing = (from l in container.Items select l.ImageFileHolder?.FullName).ToArray();
|
||||||
|
foreach (Item item in items)
|
||||||
|
{
|
||||||
|
if (item.ImageFileHolder is null || existing.Contains(item.ImageFileHolder.FullName))
|
||||||
|
continue;
|
||||||
|
additional += 1;
|
||||||
|
items.Add(item);
|
||||||
|
}
|
||||||
|
container = new(g, r + additional, items, sourceDirectory);
|
||||||
|
keyValuePairs[sourceDirectory] = container;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (fileHolderKeyValuePairs.Any())
|
}
|
||||||
|
if (!firstRun && fileHolderKeyValuePairs.Any())
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
results = (from l in results orderby l.G, l.R select l).ToList();
|
KeyValuePair<string, Shared.Models.Container>[] sortedKeyValuePairs = (from l in keyValuePairs orderby l.Value.G, l.Value.R select l).ToArray();
|
||||||
|
results = (from l in sortedKeyValuePairs select l.Value).ToArray();
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Shared.Models.Container> GetContainers(Configuration configuration, A_Property propertyLogic)
|
public static Shared.Models.Container[] GetContainers(Configuration configuration, bool firstRun, A_Property propertyLogic)
|
||||||
{
|
{
|
||||||
List<Shared.Models.Container> results;
|
Shared.Models.Container[] results;
|
||||||
string searchPattern = "*";
|
string searchPattern = "*";
|
||||||
List<string> topDirectories = new();
|
List<string> topDirectories = new();
|
||||||
List<(int g, string sourceDirectory, string[] sourceDirectoryFiles, int r)> jsonCollection;
|
List<(int g, string sourceDirectory, string[] sourceDirectoryFiles, int r)> jsonCollection;
|
||||||
@ -254,7 +293,7 @@ public class Container
|
|||||||
jsonCollection = GetJsonGroupCollection(configuration, propertyLogic, aPropertySingletonDirectory);
|
jsonCollection = GetJsonGroupCollection(configuration, propertyLogic, aPropertySingletonDirectory);
|
||||||
fileHolderGroupCollection = GetFileHolderGroupCollection(configuration, propertyLogic, searchPattern, topDirectories);
|
fileHolderGroupCollection = GetFileHolderGroupCollection(configuration, propertyLogic, searchPattern, topDirectories);
|
||||||
collectionFromJson = GetCollection(aPropertySingletonDirectory, jsonCollection);
|
collectionFromJson = GetCollection(aPropertySingletonDirectory, jsonCollection);
|
||||||
results = GetContainers(configuration, aPropertySingletonDirectory, fileHolderGroupCollection, collectionFromJson);
|
results = GetContainers(configuration, firstRun, aPropertySingletonDirectory, fileHolderGroupCollection, collectionFromJson);
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,9 +14,13 @@ public interface IResult
|
|||||||
static string GetRelativePath(Configuration configuration, string path)
|
static string GetRelativePath(Configuration configuration, string path)
|
||||||
=> Result.GetRelativePath(configuration, path);
|
=> Result.GetRelativePath(configuration, path);
|
||||||
|
|
||||||
|
string TestStatic_GetResultsGroupDirectory(Configuration configuration, string description, bool create);
|
||||||
|
static string GetResultsGroupDirectory(Configuration configuration, string description, bool create)
|
||||||
|
=> Result.GetResultsGroupDirectory(configuration, description, create);
|
||||||
|
|
||||||
string TestStatic_GetResultsGroupDirectory(Configuration configuration, string description);
|
string TestStatic_GetResultsGroupDirectory(Configuration configuration, string description);
|
||||||
static string GetResultsGroupDirectory(Configuration configuration, string description)
|
static string GetResultsGroupDirectory(Configuration configuration, string description)
|
||||||
=> Result.GetResultsGroupDirectory(configuration, description);
|
=> Result.GetResultsGroupDirectory(configuration, description, create: true);
|
||||||
|
|
||||||
string TestStatic_GetResultsDateGroupDirectory(Configuration configuration, string description);
|
string TestStatic_GetResultsDateGroupDirectory(Configuration configuration, string description);
|
||||||
static string GetResultsDateGroupDirectory(Configuration configuration, string description)
|
static string GetResultsDateGroupDirectory(Configuration configuration, string description)
|
||||||
|
@ -11,17 +11,17 @@ internal class Result
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static string GetResultsGroupDirectory(Configuration configuration, string description)
|
internal static string GetResultsGroupDirectory(Configuration configuration, string description, bool create)
|
||||||
{
|
{
|
||||||
string result = Path.Combine($"{configuration.RootDirectory} - Results", description.Replace("_", ") "));
|
string result = Path.Combine($"{configuration.RootDirectory} - Results", description.Replace("_", ") "));
|
||||||
if (!Directory.Exists(result))
|
if (create && !Directory.Exists(result))
|
||||||
_ = Directory.CreateDirectory(result);
|
_ = Directory.CreateDirectory(result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static string GetResultsDateGroupDirectory(Configuration configuration, string description)
|
internal static string GetResultsDateGroupDirectory(Configuration configuration, string description)
|
||||||
{
|
{
|
||||||
string result = Path.Combine(GetResultsGroupDirectory(configuration, description), configuration.DateGroup);
|
string result = Path.Combine(GetResultsGroupDirectory(configuration, description, create: true), configuration.DateGroup);
|
||||||
if (!Directory.Exists(result))
|
if (!Directory.Exists(result))
|
||||||
_ = Directory.CreateDirectory(result);
|
_ = Directory.CreateDirectory(result);
|
||||||
return result;
|
return result;
|
||||||
|
@ -30,8 +30,8 @@ public interface IProperty
|
|||||||
static string GetDiffRootDirectory(string diffPropertyDirectory) =>
|
static string GetDiffRootDirectory(string diffPropertyDirectory) =>
|
||||||
Property.GetDiffRootDirectory(diffPropertyDirectory);
|
Property.GetDiffRootDirectory(diffPropertyDirectory);
|
||||||
|
|
||||||
bool TestStatic_Any(List<Models.Container> propertyHolderCollections);
|
bool TestStatic_Any(Models.Container[] propertyHolderCollections);
|
||||||
static bool Any(List<Models.Container> propertyHolderCollections) =>
|
static bool Any(Models.Container[] propertyHolderCollections) =>
|
||||||
Property.Any(propertyHolderCollections);
|
Property.Any(propertyHolderCollections);
|
||||||
|
|
||||||
(bool?, string[]) TestStatic_IsWrongYear(string[] segments, string year);
|
(bool?, string[]) TestStatic_IsWrongYear(string[] segments, string year);
|
||||||
|
@ -253,7 +253,7 @@ internal abstract class Property
|
|||||||
return new(j, dateTimes, results);
|
return new(j, dateTimes, results);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static bool Any(List<Models.Container> propertyHolderCollections)
|
internal static bool Any(Models.Container[] propertyHolderCollections)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
foreach (Models.Container container in propertyHolderCollections)
|
foreach (Models.Container container in propertyHolderCollections)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user