156 lines
10 KiB
C#
156 lines
10 KiB
C#
using Microsoft.Extensions.Configuration;
|
|
using Phares.Shared;
|
|
using System.Text.Json;
|
|
|
|
namespace View_by_Distance.Drag_Drop.Models.Binder;
|
|
|
|
public class Configuration
|
|
{
|
|
|
|
#nullable disable
|
|
|
|
public bool? CheckDFaceAndUpWriteDates { get; set; }
|
|
public bool? CheckJsonForDistanceResults { get; set; }
|
|
public int? CrossDirectoryMaxItemsInDistanceCollection { get; set; }
|
|
public int? DistanceFactor { get; set; }
|
|
public bool? ForceFaceLastWriteTimeToCreationTime { get; set; }
|
|
public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; }
|
|
public bool? ForceResizeLastWriteTimeToCreationTime { get; set; }
|
|
public string[] IgnoreExtensions { get; set; }
|
|
public string[] JLinks { get; set; }
|
|
public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; }
|
|
public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { 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 string PersonBirthdayFormat { 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 Property.Models.Configuration PropertyConfiguration { get; set; }
|
|
public bool? Reverse { get; set; }
|
|
public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
|
public bool? SaveFullYearOfRandomFiles { get; set; }
|
|
public string[] SaveFilteredOriginalImagesFromJLinksForOutputResolutions { get; set; }
|
|
public string[] SaveShortcutsForOutputResolutions { get; set; }
|
|
public bool? SaveResizedSubfiles { get; set; }
|
|
public bool? SkipSearch { get; set; }
|
|
public bool? TestDistanceResults { get; set; }
|
|
public string[] ValidResolutions { get; set; }
|
|
|
|
#nullable restore
|
|
|
|
public override string ToString()
|
|
{
|
|
string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true });
|
|
return result;
|
|
}
|
|
|
|
private static Models.Configuration Get(Configuration? configuration)
|
|
{
|
|
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 ??= [];
|
|
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions ??= [];
|
|
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.PersonBirthdayFormat is null) throw new NullReferenceException(nameof(configuration.PersonBirthdayFormat));
|
|
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 ??= [];
|
|
if (configuration.SaveFullYearOfRandomFiles is null) throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
|
configuration.SaveFilteredOriginalImagesFromJLinksForOutputResolutions ??= [];
|
|
if (configuration.SaveResizedSubfiles is null) throw new NullReferenceException(nameof(configuration.SaveResizedSubfiles));
|
|
configuration.SaveShortcutsForOutputResolutions ??= [];
|
|
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,
|
|
configuration.CheckDFaceAndUpWriteDates.Value,
|
|
configuration.CheckJsonForDistanceResults.Value,
|
|
configuration.CrossDirectoryMaxItemsInDistanceCollection.Value,
|
|
configuration.DistanceFactor.Value,
|
|
configuration.ForceFaceLastWriteTimeToCreationTime.Value,
|
|
configuration.ForceMetadataLastWriteTimeToCreationTime.Value,
|
|
configuration.ForceResizeLastWriteTimeToCreationTime.Value,
|
|
configuration.IgnoreExtensions,
|
|
configuration.JLinks,
|
|
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
|
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
|
configuration.MixedYearRelativePaths,
|
|
configuration.ModelDirectory,
|
|
configuration.ModelName,
|
|
configuration.NumberOfJitters.Value,
|
|
configuration.NumberOfTimesToUpsample.Value,
|
|
configuration.OutputExtension,
|
|
configuration.OutputQuality.Value,
|
|
configuration.OutputResolutions,
|
|
configuration.OverrideForFaceImages.Value,
|
|
configuration.OverrideForFaceLandmarkImages.Value,
|
|
configuration.OverrideForResizeImages.Value,
|
|
configuration.PersonBirthdayFormat,
|
|
configuration.PredictorModelName,
|
|
configuration.PropertiesChangedForDistance.Value,
|
|
configuration.PropertiesChangedForFaces.Value,
|
|
configuration.PropertiesChangedForIndex.Value,
|
|
configuration.PropertiesChangedForMetadata.Value,
|
|
configuration.PropertiesChangedForResize.Value,
|
|
configuration.Reverse.Value,
|
|
configuration.SaveFaceLandmarkForOutputResolutions,
|
|
configuration.SaveFullYearOfRandomFiles.Value,
|
|
configuration.SaveFilteredOriginalImagesFromJLinksForOutputResolutions,
|
|
configuration.SaveShortcutsForOutputResolutions,
|
|
configuration.SaveResizedSubfiles.Value,
|
|
configuration.SkipSearch.Value,
|
|
configuration.TestDistanceResults.Value,
|
|
configuration.ValidResolutions);
|
|
return result;
|
|
}
|
|
|
|
public static Models.Configuration Get(IsEnvironment isEnvironment, IConfigurationRoot configurationRoot, Property.Models.Configuration propertyConfiguration)
|
|
{
|
|
Models.Configuration result;
|
|
Configuration? configuration;
|
|
if (isEnvironment is null)
|
|
configuration = configurationRoot.Get<Configuration>();
|
|
else
|
|
{
|
|
string environmentName = IsEnvironment.GetEnvironmentName(isEnvironment);
|
|
string section = string.Concat(environmentName, ":", nameof(Configuration));
|
|
IConfigurationSection configurationSection = configurationRoot.GetSection(section);
|
|
configuration = configurationSection.Get<Configuration>();
|
|
}
|
|
result = Get(configuration);
|
|
return result;
|
|
}
|
|
|
|
} |