Removed Configuration.SetAndUpdate

This commit is contained in:
2023-08-12 10:45:38 -07:00
parent 2f5d309ed1
commit 1c5a2f1d93
57 changed files with 1065 additions and 1542 deletions

View File

@ -3,25 +3,21 @@ using System.Text.Json.Serialization;
namespace View_by_Distance.Tests.Models;
public class AppSettings
public record AppSettings(string Company,
int MaxDegreeOfParallelism,
string WorkingDirectoryName)
{
public string Company { init; get; }
public int MaxDegreeOfParallelism { init; get; }
public string WorkingDirectoryName { init; get; }
[JsonConstructor]
public AppSettings(string company, int maxDegreeOfParallelism, string workingDirectoryName)
{
Company = company;
MaxDegreeOfParallelism = maxDegreeOfParallelism;
WorkingDirectoryName = workingDirectoryName;
}
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
string result = JsonSerializer.Serialize(this, AppSettingsSourceGenerationContext.Default.AppSettings);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(AppSettings))]
internal partial class AppSettingsSourceGenerationContext : JsonSerializerContext
{
}

View File

@ -0,0 +1,2 @@
[*.cs]
csharp_preserve_single_line_statements = true

View File

@ -1,30 +1,28 @@
using Microsoft.Extensions.Configuration;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace View_by_Distance.Tests.Models.Binder;
public class AppSettings
{
#nullable disable
public string Company { get; set; }
public string? Company { get; set; }
public int? MaxDegreeOfParallelism { get; set; }
public string WorkingDirectoryName { get; set; }
#nullable restore
public string? WorkingDirectoryName { get; set; }
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
string result = JsonSerializer.Serialize(this, BinderAppSettingsSourceGenerationContext.Default.AppSettings);
return result;
}
private static Models.AppSettings Get(AppSettings? appSettings)
{
Models.AppSettings result;
if (appSettings?.MaxDegreeOfParallelism is null)
throw new NullReferenceException(nameof(appSettings.MaxDegreeOfParallelism));
if (appSettings?.Company is null) throw new NullReferenceException(nameof(appSettings.Company));
if (appSettings?.MaxDegreeOfParallelism is null) throw new NullReferenceException(nameof(appSettings.MaxDegreeOfParallelism));
if (appSettings?.WorkingDirectoryName is null) throw new NullReferenceException(nameof(appSettings.WorkingDirectoryName));
result = new(
appSettings.Company,
appSettings.MaxDegreeOfParallelism.Value,
@ -36,9 +34,17 @@ public class AppSettings
public static Models.AppSettings Get(IConfigurationRoot configurationRoot)
{
Models.AppSettings result;
#pragma warning disable IL3050, IL2026
AppSettings? appSettings = configurationRoot.Get<AppSettings>();
#pragma warning restore IL3050, IL2026
result = Get(appSettings);
return result;
}
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(AppSettings))]
internal partial class BinderAppSettingsSourceGenerationContext : JsonSerializerContext
{
}

View File

@ -1,6 +1,5 @@
using Microsoft.Extensions.Configuration;
using Phares.Shared;
using System.ComponentModel.DataAnnotations;
using System.Text.Json;
namespace View_by_Distance.Tests.Models.Binder;
@ -8,48 +7,90 @@ namespace View_by_Distance.Tests.Models.Binder;
public class Configuration
{
#nullable disable
[Display(Name = "Check D Face and Up Dates"), Required] public bool? CheckDFaceAndUpWriteDates { get; set; }
[Display(Name = "Check Json For Distance Results"), Required] public bool? CheckJsonForDistanceResults { get; set; }
[Display(Name = "CrossDirectory Max Items In Distance Collection"), Required] public int? CrossDirectoryMaxItemsInDistanceCollection { get; set; }
[Display(Name = "Distance Factor"), Required] public int? DistanceFactor { get; set; }
[Display(Name = "Force Face Last Write Time to Creation Time"), Required] public bool? ForceFaceLastWriteTimeToCreationTime { get; set; }
[Display(Name = "Force Metadata Last Write Time to Creation Time"), Required] public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; }
[Display(Name = "Force Resize Last Write Time to Creation Time"), Required] public bool? ForceResizeLastWriteTimeToCreationTime { get; set; }
[Display(Name = "Ignore Extensions"), Required] public string[] IgnoreExtensions { get; set; }
[Display(Name = "Julie Phares Copy Birthdays"), Required] public string[] JLinks { get; set; }
[Display(Name = "Load Or GetPersonName Then Save Distance Results"), Required] public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; }
[Display(Name = "Load Or GetPersonName Then Save Image Faces Results"), Required] public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; }
[Display(Name = "Mixed Year Relative Paths"), Required] public string[] MixedYearRelativePaths { get; set; }
[Display(Name = "Model Directory"), Required] public string ModelDirectory { get; set; }
[Display(Name = "Model Name"), Required] public string ModelName { get; set; }
[Display(Name = "Number Jitters"), Required] public int? NumberOfJitters { get; set; }
[Display(Name = "Number of Times To Up Sample"), Required] public int? NumberOfTimesToUpsample { get; set; }
[Display(Name = "Output Extension"), Required] public string OutputExtension { get; set; }
[Display(Name = "Output Quality"), Required] public int? OutputQuality { get; set; }
[Display(Name = "Output Resolutions"), Required] public string[] OutputResolutions { get; set; }
[Display(Name = "Override For Face Images"), Required] public bool? OverrideForFaceImages { get; set; }
[Display(Name = "Override For Face Landmark Images"), Required] public bool? OverrideForFaceLandmarkImages { get; set; }
[Display(Name = "Override For Resize Images"), Required] public bool? OverrideForResizeImages { get; set; }
[Display(Name = "Predictor Model Name"), Required] public string PredictorModelName { get; set; }
[Display(Name = "Properties Changed For Distance"), Required] public bool? PropertiesChangedForDistance { get; set; }
[Display(Name = "Properties Changed For Faces"), Required] public bool? PropertiesChangedForFaces { get; set; }
[Display(Name = "Properties Changed For Index"), Required] public bool? PropertiesChangedForIndex { get; set; }
[Display(Name = "Properties Changed For Metadata"), Required] public bool? PropertiesChangedForMetadata { get; set; }
[Display(Name = "Properties Changed For Resize"), Required] public bool? PropertiesChangedForResize { get; set; }
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
[Display(Name = "Save Resized Images by Person Key Formatted"), Required] public string[] SaveFilteredOriginalImagesFromJLinksForOutputResolutions { get; set; }
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
[Display(Name = "Test Distance Results"), Required] public bool? TestDistanceResults { get; set; }
[Display(Name = "Valid Resolutions"), Required] public string[] ValidResolutions { get; set; }
#nullable restore
public bool? CheckDFaceAndUpWriteDates { get; set; }
public bool? CheckJsonForDistanceResults { get; set; }
public string[]? CopyFacesAndSaveFaceLandmarkForOutputResolutions { get; set; }
public int? CrossDirectoryMaxItemsInDistanceCollection { get; set; }
public bool? DeletePossibleDuplicates { get; set; }
public int? DistanceFactor { get; set; }
public bool? DistanceMoveUnableToMatch { get; set; }
public int? DistancePixelDistanceTolerance { get; set; }
public bool? DistanceRenameToMatch { get; set; }
public int? EyeThreshold { get; set; }
public int? FaceAreaPermyriad { get; set; }
public int? FaceConfidencePercent { get; set; }
public int? FaceDistanceHiddenImageFactor { get; set; }
public int? FaceDistancePermyriad { get; set; }
public string? FocusDirectory { get; set; }
public string? FocusModel { get; set; }
public bool? ForceFaceLastWriteTimeToCreationTime { get; set; }
public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; }
public bool? ForceResizeLastWriteTimeToCreationTime { get; set; }
public string? GenealogicalDataCommunicationFile { get; set; }
public string[]? IgnoreExtensions { get; set; }
public string[]? JLinks { get; set; }
public string[]? LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; }
public string[]? LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; }
public bool? LoadPhotoPrismLocations { get; set; }
public float? LocationContainerDistanceTolerance { get; set; }
public int? LocationDigits { get; set; }
public int? LocationFactor { get; set; }
public bool? LookForAbandoned { get; set; }
public string? MappingDefaultName { get; set; }
public bool? MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { get; set; }
public bool? MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { get; set; }
public string[]? MixedYearRelativePaths { get; set; }
public string? ModelDirectory { get; set; }
public string? ModelName { get; set; }
public int? NumberOfJitters { get; set; }
public int? NumberOfTimesToUpsample { get; set; }
public string? OutputExtension { get; set; }
public int? OutputQuality { get; set; }
public string[]? OutputResolutions { get; set; }
public bool? OverrideForFaceImages { get; set; }
public bool? OverrideForFaceLandmarkImages { get; set; }
public bool? OverrideForResizeImages { get; set; }
public int? PersonBirthdayFirstYear { get; set; }
public string? PersonBirthdayFormat { get; set; }
public string? PersonCharacters { get; set; }
public int? PersonCharactersCopyCount { get; set; }
public string? PersonKeyFormat { get; set; }
public string? PredictorModelName { get; set; }
public bool? PropertiesChangedForDistance { get; set; }
public bool? PropertiesChangedForFaces { get; set; }
public bool? PropertiesChangedForIndex { get; set; }
public bool? PropertiesChangedForMetadata { get; set; }
public bool? PropertiesChangedForResize { get; set; }
public int? RadomUseBirthdayMinimum { get; set; }
public int[]? RangeDaysDeltaTolerance { get; set; }
public float[]? RangeDistanceTolerance { get; set; }
public float[]? RangeFaceAreaTolerance { get; set; }
public float[]? RangeFaceConfidence { get; set; }
public float[]? RectangleIntersectMinimums { get; set; }
public bool? Reverse { get; set; }
public string[]? SaveBlurHashForOutputResolutions { get; set; }
public string[]? SaveFaceDistancesForOutputResolutions { get; set; }
public string[]? SaveFaceLandmarkForOutputResolutions { get; set; }
public string[]? SaveFilteredOriginalImagesFromJLinksForOutputResolutions { get; set; }
public bool? SaveFullYearOfRandomFiles { get; set; }
public bool? SaveIndividually { get; set; }
public string[]? SaveMappedForOutputResolutions { get; set; }
public string[]? SavePropertyShortcutsForOutputResolutions { get; set; }
public string[]? SaveRandomForOutputResolutions { get; set; }
public bool? SaveResizedSubfiles { get; set; }
public string[]? SaveShortcutsForOutputResolutions { get; set; }
public bool? SaveSortingWithoutPerson { get; set; }
public string[]? SkipNotSkipDirectories { get; set; }
public int? SkipOlderThanDays { get; set; }
public int? SkipPersonWithMoreThen { get; set; }
public bool? SkipSearch { get; set; }
public int? SortingMaximumPerFaceShouldBeHigh { get; set; }
public int? SortingMaximumPerKey { get; set; }
public int? SortingMinimumToUseSigma { get; set; }
public bool? TestDistanceResults { get; set; }
public int? UseFilterTries { get; set; }
public string[]? ValidKeyWordsToIgnoreInRandom { get; set; }
public string[]? ValidResolutions { get; set; }
public override string ToString()
{
@ -57,108 +98,178 @@ public class Configuration
return result;
}
private static Models.Configuration Get(Configuration? configuration)
#pragma warning restore csharp_preserve_single_line_statements
private static Models.Configuration Get(Configuration? configuration, Property.Models.Configuration propertyConfiguration)
{
Models.Configuration result;
if (configuration is null)
throw new NullReferenceException(nameof(configuration));
if (configuration.CheckDFaceAndUpWriteDates is null)
throw new NullReferenceException(nameof(configuration.CheckDFaceAndUpWriteDates));
if (configuration.CheckJsonForDistanceResults is null)
throw new NullReferenceException(nameof(configuration.CheckJsonForDistanceResults));
if (configuration.CrossDirectoryMaxItemsInDistanceCollection is null)
throw new NullReferenceException(nameof(configuration.CrossDirectoryMaxItemsInDistanceCollection));
if (configuration.DistanceFactor is null)
throw new NullReferenceException(nameof(configuration.DistanceFactor));
if (configuration.ForceFaceLastWriteTimeToCreationTime is null)
throw new NullReferenceException(nameof(configuration.ForceFaceLastWriteTimeToCreationTime));
if (configuration.ForceMetadataLastWriteTimeToCreationTime is null)
throw new NullReferenceException(nameof(configuration.ForceMetadataLastWriteTimeToCreationTime));
if (configuration.ForceResizeLastWriteTimeToCreationTime is null)
throw new NullReferenceException(nameof(configuration.ForceResizeLastWriteTimeToCreationTime));
if (configuration.IgnoreExtensions is null)
throw new NullReferenceException(nameof(configuration.IgnoreExtensions));
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions ??= Array.Empty<string>();
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions ??= Array.Empty<string>();
if (configuration.MixedYearRelativePaths is null)
throw new NullReferenceException(nameof(configuration.MixedYearRelativePaths));
if (configuration.NumberOfJitters is null)
throw new NullReferenceException(nameof(configuration.NumberOfJitters));
if (configuration.NumberOfTimesToUpsample is null)
throw new NullReferenceException(nameof(configuration.NumberOfTimesToUpsample));
if (configuration.OutputQuality is null)
throw new NullReferenceException(nameof(configuration.OutputQuality));
if (configuration.OutputResolutions is null)
throw new NullReferenceException(nameof(configuration.OutputResolutions));
if (configuration.OverrideForFaceImages is null)
throw new NullReferenceException(nameof(configuration.OverrideForFaceImages));
if (configuration.OverrideForFaceLandmarkImages is null)
throw new NullReferenceException(nameof(configuration.OverrideForFaceLandmarkImages));
if (configuration.OverrideForResizeImages is null)
throw new NullReferenceException(nameof(configuration.OverrideForResizeImages));
if (configuration.PropertiesChangedForDistance is null)
throw new NullReferenceException(nameof(configuration.PropertiesChangedForDistance));
if (configuration.PropertiesChangedForFaces is null)
throw new NullReferenceException(nameof(configuration.PropertiesChangedForFaces));
if (configuration.PropertiesChangedForIndex is null)
throw new NullReferenceException(nameof(configuration.PropertiesChangedForIndex));
if (configuration.PropertiesChangedForMetadata is null)
throw new NullReferenceException(nameof(configuration.PropertiesChangedForMetadata));
if (configuration.PropertiesChangedForResize is null)
throw new NullReferenceException(nameof(configuration.PropertiesChangedForResize));
if (configuration.Reverse is null)
throw new NullReferenceException(nameof(configuration.Reverse));
configuration.SaveFaceLandmarkForOutputResolutions ??= Array.Empty<string>();
if (configuration.SaveFullYearOfRandomFiles is null)
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
configuration.SaveFilteredOriginalImagesFromJLinksForOutputResolutions ??= Array.Empty<string>();
if (configuration.SaveResizedSubfiles is null)
throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
configuration.SaveShortcutsForOutputResolutions ??= Array.Empty<string>();
if (configuration.SkipSearch is null)
throw new NullReferenceException(nameof(configuration.SkipSearch));
if (configuration.TestDistanceResults is null)
throw new NullReferenceException(nameof(configuration.TestDistanceResults));
if (configuration.ValidResolutions is null)
throw new NullReferenceException(nameof(configuration.ValidResolutions));
result = new(configuration.PropertyConfiguration,
if (configuration is null) throw new NullReferenceException(nameof(configuration));
if (configuration.CheckDFaceAndUpWriteDates is null) throw new NullReferenceException(nameof(configuration.CheckDFaceAndUpWriteDates));
if (configuration?.CheckDFaceAndUpWriteDates is null) throw new NullReferenceException(nameof(configuration.CheckDFaceAndUpWriteDates));
if (configuration?.CheckJsonForDistanceResults is null) throw new NullReferenceException(nameof(configuration.CheckJsonForDistanceResults));
// if (configuration?.CopyFacesAndSaveFaceLandmarkForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.CopyFacesAndSaveFaceLandmarkForOutputResolutions));
if (configuration?.CrossDirectoryMaxItemsInDistanceCollection is null) throw new NullReferenceException(nameof(configuration.CrossDirectoryMaxItemsInDistanceCollection));
if (configuration?.DeletePossibleDuplicates is null) throw new NullReferenceException(nameof(configuration.DeletePossibleDuplicates));
if (configuration?.DistanceFactor is null) throw new NullReferenceException(nameof(configuration.DistanceFactor));
if (configuration?.DistanceMoveUnableToMatch is null) throw new NullReferenceException(nameof(configuration.DistanceMoveUnableToMatch));
if (configuration?.DistancePixelDistanceTolerance is null) throw new NullReferenceException(nameof(configuration.DistancePixelDistanceTolerance));
if (configuration?.DistanceRenameToMatch is null) throw new NullReferenceException(nameof(configuration.DistanceRenameToMatch));
if (configuration?.EyeThreshold is null) throw new NullReferenceException(nameof(configuration.EyeThreshold));
if (configuration?.FaceAreaPermyriad is null) throw new NullReferenceException(nameof(configuration.FaceAreaPermyriad));
if (configuration?.FaceConfidencePercent is null) throw new NullReferenceException(nameof(configuration.FaceConfidencePercent));
if (configuration?.FaceDistanceHiddenImageFactor is null) throw new NullReferenceException(nameof(configuration.FaceDistanceHiddenImageFactor));
if (configuration?.FaceDistancePermyriad is null) throw new NullReferenceException(nameof(configuration.FaceDistancePermyriad));
if (configuration?.FocusDirectory is null) throw new NullReferenceException(nameof(configuration.FocusDirectory));
if (configuration?.FocusModel is null) throw new NullReferenceException(nameof(configuration.FocusModel));
if (configuration?.ForceFaceLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceFaceLastWriteTimeToCreationTime));
if (configuration?.ForceMetadataLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceMetadataLastWriteTimeToCreationTime));
if (configuration?.ForceResizeLastWriteTimeToCreationTime is null) throw new NullReferenceException(nameof(configuration.ForceResizeLastWriteTimeToCreationTime));
if (configuration?.GenealogicalDataCommunicationFile is null) throw new NullReferenceException(nameof(configuration.GenealogicalDataCommunicationFile));
// if (configuration?.IgnoreExtensions is null) throw new NullReferenceException(nameof(configuration.IgnoreExtensions));
// if (configuration?.JLinks is null) throw new NullReferenceException(nameof(configuration.JLinks));
// if (configuration?.LoadOrCreateThenSaveDistanceResultsForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions));
// if (configuration?.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions));
if (configuration?.LoadPhotoPrismLocations is null) throw new NullReferenceException(nameof(configuration.LoadPhotoPrismLocations));
// if (configuration?.LocationContainerDistanceTolerance is null) throw new NullReferenceException(nameof(configuration.LocationContainerDistanceTolerance));
if (configuration?.LocationDigits is null) throw new NullReferenceException(nameof(configuration.LocationDigits));
if (configuration?.LocationFactor is null) throw new NullReferenceException(nameof(configuration.LocationFactor));
if (configuration?.LookForAbandoned is null) throw new NullReferenceException(nameof(configuration.LookForAbandoned));
if (configuration?.MappingDefaultName is null) throw new NullReferenceException(nameof(configuration.MappingDefaultName));
if (configuration?.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping is null) throw new NullReferenceException(nameof(configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping));
if (configuration?.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping is null) throw new NullReferenceException(nameof(configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping));
// if (configuration?.MixedYearRelativePaths is null) throw new NullReferenceException(nameof(configuration.MixedYearRelativePaths));
if (configuration?.ModelDirectory is null) throw new NullReferenceException(nameof(configuration.ModelDirectory));
if (configuration?.ModelName is null) throw new NullReferenceException(nameof(configuration.ModelName));
if (configuration?.OutputExtension is null) throw new NullReferenceException(nameof(configuration.OutputExtension));
if (configuration?.OutputQuality is null) throw new NullReferenceException(nameof(configuration.OutputQuality));
// if (configuration?.OutputResolutions is null) throw new NullReferenceException(nameof(configuration.OutputResolutions));
if (configuration?.OverrideForFaceImages is null) throw new NullReferenceException(nameof(configuration.OverrideForFaceImages));
if (configuration?.OverrideForFaceLandmarkImages is null) throw new NullReferenceException(nameof(configuration.OverrideForFaceLandmarkImages));
if (configuration?.OverrideForResizeImages is null) throw new NullReferenceException(nameof(configuration.OverrideForResizeImages));
if (configuration?.PersonBirthdayFirstYear is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFirstYear));
if (configuration?.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat));
if (configuration?.PersonCharacters is null) throw new NullReferenceException(nameof(configuration.PersonCharacters));
if (configuration?.PersonCharactersCopyCount is null) throw new NullReferenceException(nameof(configuration.PersonCharactersCopyCount));
if (configuration?.PersonKeyFormat is null) throw new NullReferenceException(nameof(configuration.PersonKeyFormat));
if (configuration?.PredictorModelName is null) throw new NullReferenceException(nameof(configuration.PredictorModelName));
if (configuration?.PropertiesChangedForDistance is null) throw new NullReferenceException(nameof(configuration.PropertiesChangedForDistance));
if (configuration?.PropertiesChangedForFaces is null) throw new NullReferenceException(nameof(configuration.PropertiesChangedForFaces));
if (configuration?.PropertiesChangedForIndex is null) throw new NullReferenceException(nameof(configuration.PropertiesChangedForIndex));
if (configuration?.PropertiesChangedForMetadata is null) throw new NullReferenceException(nameof(configuration.PropertiesChangedForMetadata));
if (configuration?.PropertiesChangedForResize is null) throw new NullReferenceException(nameof(configuration.PropertiesChangedForResize));
if (configuration?.RadomUseBirthdayMinimum is null) throw new NullReferenceException(nameof(configuration.RadomUseBirthdayMinimum));
// if (configuration?.RangeDaysDeltaTolerance is null) throw new NullReferenceException(nameof(configuration.RangeDaysDeltaTolerance));
// if (configuration?.RangeDistanceTolerance is null) throw new NullReferenceException(nameof(configuration.RangeDistanceTolerance));
// if (configuration?.RangeFaceAreaTolerance is null) throw new NullReferenceException(nameof(configuration.RangeFaceAreaTolerance));
// if (configuration?.RangeFaceConfidence is null) throw new NullReferenceException(nameof(configuration.RangeFaceConfidence));
// if (configuration?.RectangleIntersectMinimums is null) throw new NullReferenceException(nameof(configuration.RectangleIntersectMinimums));
if (configuration?.Reverse is null) throw new NullReferenceException(nameof(configuration.Reverse));
// if (configuration?.SaveBlurHashForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.SaveBlurHashForOutputResolutions));
// if (configuration?.SaveFaceDistancesForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.SaveFaceDistancesForOutputResolutions));
// if (configuration?.SaveFaceLandmarkForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.SaveFaceLandmarkForOutputResolutions));
// if (configuration?.SaveFilteredOriginalImagesFromJLinksForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.SaveFilteredOriginalImagesFromJLinksForOutputResolutions));
if (configuration?.SaveFullYearOfRandomFiles is null) throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
if (configuration?.SaveIndividually is null) throw new NullReferenceException(nameof(configuration.SaveIndividually));
// if (configuration?.SaveMappedForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.SaveMappedForOutputResolutions));
// if (configuration?.SavePropertyShortcutsForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.SavePropertyShortcutsForOutputResolutions));
// if (configuration?.SaveRandomForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.SaveRandomForOutputResolutions));
if (configuration?.SaveResizedSubfiles is null) throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
// if (configuration?.SaveShortcutsForOutputResolutions is null) throw new NullReferenceException(nameof(configuration.SaveShortcutsForOutputResolutions));
if (configuration?.SaveSortingWithoutPerson is null) throw new NullReferenceException(nameof(configuration.SaveSortingWithoutPerson));
// if (configuration?.SkipNotSkipDirectories is null) throw new NullReferenceException(nameof(configuration.SkipNotSkipDirectories));
// if (configuration?.SkipOlderThanDays is null) throw new NullReferenceException(nameof(configuration.SkipOlderThanDays));
// if (configuration?.SkipPersonWithMoreThen is null) throw new NullReferenceException(nameof(configuration.SkipPersonWithMoreThen));
if (configuration?.SkipSearch is null) throw new NullReferenceException(nameof(configuration.SkipSearch));
if (configuration?.SortingMaximumPerFaceShouldBeHigh is null) throw new NullReferenceException(nameof(configuration.SortingMaximumPerFaceShouldBeHigh));
if (configuration?.SortingMaximumPerKey is null) throw new NullReferenceException(nameof(configuration.SortingMaximumPerKey));
if (configuration?.SortingMinimumToUseSigma is null) throw new NullReferenceException(nameof(configuration.SortingMinimumToUseSigma));
if (configuration?.TestDistanceResults is null) throw new NullReferenceException(nameof(configuration.TestDistanceResults));
if (configuration?.UseFilterTries is null) throw new NullReferenceException(nameof(configuration.UseFilterTries));
// if (configuration?.ValidKeyWordsToIgnoreInRandom is null) throw new NullReferenceException(nameof(configuration.ValidKeyWordsToIgnoreInRandom));
// if (configuration?.ValidResolutions is null) throw new NullReferenceException(nameof(configuration.ValidResolutions));
result = new(propertyConfiguration,
configuration.CheckDFaceAndUpWriteDates.Value,
configuration.CheckJsonForDistanceResults.Value,
configuration.CopyFacesAndSaveFaceLandmarkForOutputResolutions ?? Array.Empty<string>(),
configuration.CrossDirectoryMaxItemsInDistanceCollection.Value,
configuration.DeletePossibleDuplicates.Value,
configuration.DistanceFactor.Value,
configuration.DistanceMoveUnableToMatch.Value,
configuration.DistancePixelDistanceTolerance.Value,
configuration.DistanceRenameToMatch.Value,
configuration.EyeThreshold.Value,
configuration.FaceAreaPermyriad.Value,
configuration.FaceConfidencePercent.Value,
configuration.FaceDistanceHiddenImageFactor.Value,
configuration.FaceDistancePermyriad.Value,
configuration.FocusDirectory,
configuration.FocusModel,
configuration.ForceFaceLastWriteTimeToCreationTime.Value,
configuration.ForceMetadataLastWriteTimeToCreationTime.Value,
configuration.ForceResizeLastWriteTimeToCreationTime.Value,
configuration.IgnoreExtensions,
configuration.JLinks,
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions,
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions,
configuration.MixedYearRelativePaths,
configuration.GenealogicalDataCommunicationFile,
configuration.IgnoreExtensions ?? Array.Empty<string>(),
configuration.JLinks ?? Array.Empty<string>(),
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions ?? Array.Empty<string>(),
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions ?? Array.Empty<string>(),
configuration.LoadPhotoPrismLocations.Value,
configuration.LocationContainerDistanceTolerance,
configuration.LocationDigits.Value,
configuration.LocationFactor.Value,
configuration.LookForAbandoned.Value,
configuration.MappingDefaultName,
configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping.Value,
configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping.Value,
configuration.MixedYearRelativePaths ?? Array.Empty<string>(),
configuration.ModelDirectory,
configuration.ModelName,
configuration.NumberOfJitters.Value,
configuration.NumberOfTimesToUpsample.Value,
configuration.OutputExtension,
configuration.OutputQuality.Value,
configuration.OutputResolutions,
configuration.OutputResolutions ?? Array.Empty<string>(),
configuration.OverrideForFaceImages.Value,
configuration.OverrideForFaceLandmarkImages.Value,
configuration.OverrideForResizeImages.Value,
configuration.PersonBirthdayFirstYear.Value,
configuration.PersonBirthdayFormat,
configuration.PersonCharacters,
configuration.PersonCharactersCopyCount.Value,
configuration.PersonKeyFormat,
configuration.PredictorModelName,
configuration.PropertiesChangedForDistance.Value,
configuration.PropertiesChangedForFaces.Value,
configuration.PropertiesChangedForIndex.Value,
configuration.PropertiesChangedForMetadata.Value,
configuration.PropertiesChangedForResize.Value,
configuration.RadomUseBirthdayMinimum.Value,
configuration.RangeDaysDeltaTolerance ?? Array.Empty<int>(),
configuration.RangeDistanceTolerance ?? Array.Empty<float>(),
configuration.RangeFaceAreaTolerance ?? Array.Empty<float>(),
configuration.RangeFaceConfidence ?? Array.Empty<float>(),
configuration.RectangleIntersectMinimums ?? Array.Empty<float>(),
configuration.Reverse.Value,
configuration.SaveFaceLandmarkForOutputResolutions,
configuration.SaveBlurHashForOutputResolutions ?? Array.Empty<string>(),
configuration.SaveFaceDistancesForOutputResolutions ?? Array.Empty<string>(),
configuration.SaveFaceLandmarkForOutputResolutions ?? Array.Empty<string>(),
configuration.SaveFilteredOriginalImagesFromJLinksForOutputResolutions ?? Array.Empty<string>(),
configuration.SaveIndividually.Value,
configuration.SaveFullYearOfRandomFiles.Value,
configuration.SaveFilteredOriginalImagesFromJLinksForOutputResolutions,
configuration.SaveShortcutsForOutputResolutions,
configuration.SaveMappedForOutputResolutions ?? Array.Empty<string>(),
configuration.SavePropertyShortcutsForOutputResolutions ?? Array.Empty<string>(),
configuration.SaveRandomForOutputResolutions ?? Array.Empty<string>(),
configuration.SaveResizedSubfiles.Value,
configuration.SaveShortcutsForOutputResolutions ?? Array.Empty<string>(),
configuration.SaveSortingWithoutPerson.Value,
configuration.SkipNotSkipDirectories ?? Array.Empty<string>(),
configuration.SkipOlderThanDays,
configuration.SkipPersonWithMoreThen,
configuration.SkipSearch.Value,
configuration.SortingMaximumPerFaceShouldBeHigh.Value,
configuration.SortingMaximumPerKey.Value,
configuration.SortingMinimumToUseSigma.Value,
configuration.TestDistanceResults.Value,
configuration.ValidResolutions);
configuration.UseFilterTries.Value,
configuration.ValidKeyWordsToIgnoreInRandom ?? Array.Empty<string>(),
configuration.ValidResolutions ?? Array.Empty<string>());
return result;
}
@ -175,8 +286,7 @@ public class Configuration
IConfigurationSection configurationSection = configurationRoot.GetSection(section);
configuration = configurationSection.Get<Configuration>();
}
result = Get(configuration);
result.SetAndUpdate(propertyConfiguration);
result = Get(configuration, propertyConfiguration);
return result;
}

View File

@ -1,142 +1,85 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace View_by_Distance.Tests.Models;
public class Configuration
{
protected Property.Models.Configuration _PropertyConfiguration;
public Property.Models.Configuration PropertyConfiguration => _PropertyConfiguration;
public bool CheckDFaceAndUpWriteDates { init; get; }
public bool CheckJsonForDistanceResults { init; get; }
public int CrossDirectoryMaxItemsInDistanceCollection { init; get; }
public int DistanceFactor { init; get; }
public bool ForceFaceLastWriteTimeToCreationTime { init; get; }
public bool ForceMetadataLastWriteTimeToCreationTime { init; get; }
public bool ForceResizeLastWriteTimeToCreationTime { init; get; }
public string[] IgnoreExtensions { init; get; }
public string[] JLinks { init; get; }
public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; }
public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; }
public string[] MixedYearRelativePaths { init; get; }
public string ModelDirectory { init; get; }
public string ModelName { init; get; }
public int NumberOfJitters { init; get; }
public int NumberOfTimesToUpsample { init; get; }
public string OutputExtension { init; get; }
public int OutputQuality { init; get; }
public string[] OutputResolutions { init; get; }
public bool OverrideForFaceImages { init; get; }
public bool OverrideForFaceLandmarkImages { init; get; }
public bool OverrideForResizeImages { init; get; }
public string PredictorModelName { init; get; }
public bool PropertiesChangedForDistance { init; get; }
public bool PropertiesChangedForFaces { init; get; }
public bool PropertiesChangedForIndex { init; get; }
public bool PropertiesChangedForMetadata { init; get; }
public bool PropertiesChangedForResize { init; get; }
public bool Reverse { init; get; }
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
public bool SaveFullYearOfRandomFiles { init; get; }
public string[] SaveFilteredOriginalImagesFromJLinksForOutputResolutions { init; get; }
public string[] SaveShortcutsForOutputResolutions { init; get; }
public bool SaveResizedSubfiles { init; get; }
public bool SkipSearch { init; get; }
public bool TestDistanceResults { init; get; }
public string[] ValidResolutions { init; get; }
[JsonConstructor]
public Configuration(Property.Models.Configuration propertyConfiguration,
bool checkDFaceAndUpWriteDates,
bool checkJsonForDistanceResults,
int crossDirectoryMaxItemsInDistanceCollection,
int distanceFactor,
bool forceFaceLastWriteTimeToCreationTime,
bool forceMetadataLastWriteTimeToCreationTime,
bool forceResizeLastWriteTimeToCreationTime,
string[] ignoreExtensions,
string[] jLinks,
string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions,
string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions,
string[] mixedYearRelativePaths,
string modelDirectory,
string modelName,
int numberOfJitters,
int numberOfTimesToUpsample,
string outputExtension,
int outputQuality,
string[] outputResolutions,
bool overrideForFaceImages,
bool overrideForFaceLandmarkImages,
bool overrideForResizeImages,
string predictorModelName,
bool propertiesChangedForDistance,
bool propertiesChangedForFaces,
bool propertiesChangedForIndex,
bool propertiesChangedForMetadata,
bool propertiesChangedForResize,
bool reverse,
string[] saveFaceLandmarkForOutputResolutions,
bool saveFullYearOfRandomFiles,
string[] saveFilteredOriginalImagesFromJLinksForOutputResolutions,
string[] saveShortcutsForOutputResolutions,
bool saveResizedSubfiles,
bool skipSearch,
bool testDistanceResults,
string[] validResolutions)
{
_PropertyConfiguration = propertyConfiguration;
CheckDFaceAndUpWriteDates = checkDFaceAndUpWriteDates;
CheckJsonForDistanceResults = checkJsonForDistanceResults;
CrossDirectoryMaxItemsInDistanceCollection = crossDirectoryMaxItemsInDistanceCollection;
DistanceFactor = distanceFactor;
ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime;
ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime;
ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime;
IgnoreExtensions = ignoreExtensions;
JLinks = jLinks;
LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions;
LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions;
MixedYearRelativePaths = mixedYearRelativePaths;
ModelDirectory = modelDirectory;
ModelName = modelName;
NumberOfJitters = numberOfJitters;
NumberOfTimesToUpsample = numberOfTimesToUpsample;
OutputExtension = outputExtension;
OutputQuality = outputQuality;
OutputResolutions = outputResolutions;
OverrideForFaceImages = overrideForFaceImages;
OverrideForFaceLandmarkImages = overrideForFaceLandmarkImages;
OverrideForResizeImages = overrideForResizeImages;
PredictorModelName = predictorModelName;
PropertiesChangedForDistance = propertiesChangedForDistance;
PropertiesChangedForFaces = propertiesChangedForFaces;
PropertiesChangedForIndex = propertiesChangedForIndex;
PropertiesChangedForMetadata = propertiesChangedForMetadata;
PropertiesChangedForResize = propertiesChangedForResize;
Reverse = reverse;
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
SaveFilteredOriginalImagesFromJLinksForOutputResolutions = saveFilteredOriginalImagesFromJLinksForOutputResolutions;
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
SaveResizedSubfiles = saveResizedSubfiles;
SkipSearch = skipSearch;
TestDistanceResults = testDistanceResults;
ValidResolutions = validResolutions;
}
public override string ToString()
{
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
return result;
}
public void SetAndUpdate(Property.Models.Configuration configuration)
{
_PropertyConfiguration = configuration;
_PropertyConfiguration.Update();
}
}
public record Configuration(Property.Models.Configuration PropertyConfiguration,
bool CheckDFaceAndUpWriteDates,
bool CheckJsonForDistanceResults,
string[] CopyFacesAndSaveFaceLandmarkForOutputResolutions,
int CrossDirectoryMaxItemsInDistanceCollection,
bool DeletePossibleDuplicates,
int DistanceFactor,
bool DistanceMoveUnableToMatch,
int DistancePixelDistanceTolerance,
bool DistanceRenameToMatch,
int EyeThreshold,
int FaceAreaPermyriad,
int FaceConfidencePercent,
int FaceDistanceHiddenImageFactor,
int FaceDistancePermyriad,
string FocusDirectory,
string FocusModel,
bool ForceFaceLastWriteTimeToCreationTime,
bool ForceMetadataLastWriteTimeToCreationTime,
bool ForceResizeLastWriteTimeToCreationTime,
string GenealogicalDataCommunicationFile,
string[] IgnoreExtensions,
string[] JLinks,
string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions,
string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions,
bool LoadPhotoPrismLocations,
float? LocationContainerDistanceTolerance,
int LocationDigits,
int LocationFactor,
bool LookForAbandoned,
string MappingDefaultName,
bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping,
bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping,
string[] MixedYearRelativePaths,
string ModelDirectory,
string ModelName,
string OutputExtension,
int OutputQuality,
string[] OutputResolutions,
bool OverrideForFaceImages,
bool OverrideForFaceLandmarkImages,
bool OverrideForResizeImages,
int PersonBirthdayFirstYear,
string PersonBirthdayFormat,
string PersonCharacters,
int PersonCharactersCopyCount,
string PersonKeyFormat,
string PredictorModelName,
bool PropertiesChangedForDistance,
bool PropertiesChangedForFaces,
bool PropertiesChangedForIndex,
bool PropertiesChangedForMetadata,
bool PropertiesChangedForResize,
int RadomUseBirthdayMinimum,
int[] RangeDaysDeltaTolerance,
float[] RangeDistanceTolerance,
float[] RangeFaceAreaPermyriadTolerance,
float[] RangeFaceConfidence,
float[] RectangleIntersectMinimums,
bool Reverse,
string[] SaveBlurHashForOutputResolutions,
string[] SaveFaceDistancesForOutputResolutions,
string[] SaveFaceLandmarkForOutputResolutions,
string[] SaveFilteredOriginalImagesFromJLinksForOutputResolutions,
bool SaveIndividually,
bool SaveFullYearOfRandomFiles,
string[] SaveMappedForOutputResolutions,
string[] SavePropertyShortcutsForOutputResolutions,
string[] SaveRandomForOutputResolutions,
bool SaveResizedSubfiles,
string[] SaveShortcutsForOutputResolutions,
bool SaveSortingWithoutPerson,
string[] SkipNotSkipDirectories,
int? SkipOlderThanDays,
int? SkipPersonWithMoreThen,
bool SkipSearch,
int SortingMaximumPerFaceShouldBeHigh,
int SortingMaximumPerKey,
int SortingMinimumToUseSigma,
bool TestDistanceResults,
int UseFilterTries,
string[] ValidKeyWordsToIgnoreInRandom,
string[] ValidResolutions);

View File

@ -87,22 +87,22 @@ public class UnitTestResize
{
A_Property result;
if (_Configuration?.PropertyConfiguration is null)
throw new NullReferenceException(nameof(_Configuration.PropertyConfiguration));
result = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _Configuration.OutputExtension, reverse, aResultsFullGroupDirectory);
throw new NullReferenceException(nameof(_PropertyConfiguration));
result = new(_AppSettings.MaxDegreeOfParallelism, _PropertyConfiguration, _Configuration.OutputExtension, reverse, aResultsFullGroupDirectory);
return result;
}
private (string, string) GetResultsFullGroupDirectories()
{
string aResultsFullGroupDirectory = Property.Models.Stateless.IResult.GetResultsFullGroupDirectory(
_Configuration.PropertyConfiguration,
_PropertyConfiguration,
nameof(A_Property),
string.Empty,
includeResizeGroup: false,
includeModel: false,
includePredictorModel: false);
string bResultsFullGroupDirectory = Property.Models.Stateless.IResult.GetResultsFullGroupDirectory(
_Configuration.PropertyConfiguration,
_PropertyConfiguration,
nameof(B_Metadata),
string.Empty,
includeResizeGroup: false,
@ -114,7 +114,7 @@ public class UnitTestResize
private (string, string, string) GetResultsFullGroupDirectories(string outputResolution)
{
string cResultsFullGroupDirectory = Property.Models.Stateless.IResult.GetResultsFullGroupDirectory(
_Configuration.PropertyConfiguration,
_PropertyConfiguration,
nameof(C_Resize),
outputResolution,
includeResizeGroup: true,
@ -128,6 +128,10 @@ public class UnitTestResize
[TestMethod]
public void TestMethodResize()
{
if (_PropertyConfiguration.NumberOfJitters is null)
throw new NullReferenceException(nameof(_PropertyConfiguration.NumberOfJitters));
if (_PropertyConfiguration.NumberOfTimesToUpsample is null)
throw new NullReferenceException(nameof(_PropertyConfiguration.NumberOfTimesToUpsample));
string sourceFileName = "100000507001158650387.jpg";
string sourceDirectoryName = "Facebook/2023.2 Summer Facebook";
Item item;
@ -144,16 +148,16 @@ public class UnitTestResize
bool outputResolutionHasNumber = outputResolution.Any(l => char.IsNumber(l));
(string cResultsFullGroupDirectory, _, _) = GetResultsFullGroupDirectories(outputResolution);
(string aResultsFullGroupDirectory, string bResultsFullGroupDirectory) = GetResultsFullGroupDirectories();
Shared.Models.Methods.IBlurHasher blurHasher = new BlurHash.Models.C2_BlurHasher(_Configuration.PropertyConfiguration);
Shared.Models.Methods.IBlurHasher blurHasher = new BlurHash.Models.C2_BlurHasher(_PropertyConfiguration);
_Logger.Information(_Configuration.ModelDirectory);
A_Property propertyLogic = GetPropertyLogic(reverse, aResultsFullGroupDirectory);
string aPropertySingletonDirectory = Path.Combine(aResultsFullGroupDirectory, "{}");
if (!Directory.Exists(aPropertySingletonDirectory))
_ = Directory.CreateDirectory(aPropertySingletonDirectory);
(ImageCodecInfo imageCodecInfo, EncoderParameters encoderParameters, string filenameExtension) = C_Resize.GetTuple(_Configuration.OutputExtension, _Configuration.OutputQuality);
B_Metadata metadata = new(_Configuration.PropertyConfiguration, _Configuration.ForceMetadataLastWriteTimeToCreationTime, _Configuration.PropertiesChangedForMetadata, bResultsFullGroupDirectory);
B_Metadata metadata = new(_PropertyConfiguration, _Configuration.ForceMetadataLastWriteTimeToCreationTime, _Configuration.PropertiesChangedForMetadata, bResultsFullGroupDirectory);
_ = metadata.ToString();
C_Resize resize = new(_Configuration.PropertyConfiguration, _Configuration.ForceResizeLastWriteTimeToCreationTime, _Configuration.OverrideForResizeImages, _Configuration.PropertiesChangedForResize, _Configuration.ValidResolutions, imageCodecInfo, encoderParameters, filenameExtension);
C_Resize resize = new(_PropertyConfiguration, _Configuration.ForceResizeLastWriteTimeToCreationTime, _Configuration.OverrideForResizeImages, _Configuration.PropertiesChangedForResize, _Configuration.ValidResolutions, imageCodecInfo, encoderParameters, filenameExtension);
_ = resize.ToString();
bool isUniqueFileName = false;
bool? isNotUniqueAndNeedsReview = null;
@ -182,9 +186,9 @@ public class UnitTestResize
item.SetResizedFileHolder(resize.FileNameExtension, resizedFileHolder);
MappingFromItem mappingFromItem = IMappingFromItem.GetMappingFromItem(item);
(int _, metadataCollection) = metadata.GetMetadataCollection(subFileTuples, parseExceptions, changesFrom, mappingFromItem);
Dictionary<string, int[]> outputResolutionToResize = resize.GetResizeKeyValuePairs(_Configuration.PropertyConfiguration, cResultsFullGroupDirectory, subFileTuples, parseExceptions, metadataCollection, item.Property, mappingFromItem);
Dictionary<string, int[]> outputResolutionToResize = resize.GetResizeKeyValuePairs(_PropertyConfiguration, cResultsFullGroupDirectory, subFileTuples, parseExceptions, metadataCollection, item.Property, mappingFromItem);
Assert.IsNotNull(mappingFromItem.ResizedFileHolder);
resize.SaveResizedSubfile(_Configuration.PropertyConfiguration, outputResolution, cResultsFullGroupDirectory, subFileTuples, item, item.Property, mappingFromItem, outputResolutionToResize);
resize.SaveResizedSubfile(_PropertyConfiguration, outputResolution, cResultsFullGroupDirectory, subFileTuples, item, item.Property, mappingFromItem, outputResolutionToResize);
string blurHash = blurHasher.Encode(resizedFileHolder);
Assert.IsNotNull(blurHash);
NonThrowTryCatch();