using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Instance.Models; public class Configuration { protected readonly bool? _CheckJsonForDistanceResults; protected readonly int? _CrossDirectoryMaxItemsInDistanceCollection; protected readonly int? _DistanceFactor; protected readonly bool? _ForceMetadataLastWriteTimeToCreationTime; protected readonly bool? _ForceResizeLastWriteTimeToCreationTime; protected readonly string[] _IgnoreExtensions; protected readonly string[] _IgnoreRelativePaths; protected readonly bool? _LoadOrCreateThenSaveDirectoryDistanceResults; protected readonly bool? _LoadOrCreateThenSaveDistanceResults; protected readonly bool? _LoadOrCreateThenSaveImageFacesResults; protected readonly bool? _LoadOrCreateThenSaveIndex; protected readonly int? _LocationConfidenceFactor; protected readonly int? _MappedMaxIndex; protected readonly int? _MaxItemsInDistanceCollection; protected readonly string[] _MixedYearRelativePaths; protected readonly string _ModelDirectory; protected readonly string _ModelName; protected readonly int? _NumJitters; protected readonly string _OutputExtension; protected readonly int? _OutputQuality; protected readonly string[] _OutputResolutions; protected readonly bool? _OverrideForFaceImages; protected readonly bool? _OverrideForFaceLandmarkImages; protected readonly bool? _OverrideForResizeImages; protected readonly int? _PaddingLoops; protected readonly string _PredictorModelName; protected readonly bool? _PropertiesChangedForDistance; protected readonly bool? _PropertiesChangedForFaces; protected readonly bool? _PropertiesChangedForIndex; protected readonly bool? _PropertiesChangedForMetadata; protected readonly bool? _PropertiesChangedForResize; protected Property.Models.Configuration? _PropertyConfiguration; protected readonly bool? _Reverse; protected readonly string[] _SaveFaceLandmarkForOutputResolutions; protected readonly bool? _SaveFullYearOfRandomFiles; protected readonly bool? _SaveResizedSubfiles; protected readonly bool? _SearchForAbandonedFiles; protected readonly bool? _SkipSearch; protected readonly bool? _TestDistanceResults; protected readonly string[] _ValidResolutions; public bool? CheckJsonForDistanceResults => _CheckJsonForDistanceResults; public int? CrossDirectoryMaxItemsInDistanceCollection => _CrossDirectoryMaxItemsInDistanceCollection; public int? DistanceFactor => _DistanceFactor; public bool? ForceMetadataLastWriteTimeToCreationTime => _ForceMetadataLastWriteTimeToCreationTime; public bool? ForceResizeLastWriteTimeToCreationTime => _ForceResizeLastWriteTimeToCreationTime; public string[] IgnoreExtensions => _IgnoreExtensions; public string[] IgnoreRelativePaths => _IgnoreRelativePaths; public bool? LoadOrCreateThenSaveDirectoryDistanceResults => _LoadOrCreateThenSaveDirectoryDistanceResults; public bool? LoadOrCreateThenSaveDistanceResults => _LoadOrCreateThenSaveDistanceResults; public bool? LoadOrCreateThenSaveImageFacesResults => _LoadOrCreateThenSaveImageFacesResults; public bool? LoadOrCreateThenSaveIndex => _LoadOrCreateThenSaveIndex; public int? LocationConfidenceFactor => _LocationConfidenceFactor; public int? MappedMaxIndex => _MappedMaxIndex; public int? MaxItemsInDistanceCollection => _MaxItemsInDistanceCollection; public string[] MixedYearRelativePaths => _MixedYearRelativePaths; public string ModelDirectory => _ModelDirectory; public string ModelName => _ModelName; public int? NumJitters => _NumJitters; public string OutputExtension => _OutputExtension; public int? OutputQuality => _OutputQuality; public string[] OutputResolutions => _OutputResolutions; public bool? OverrideForFaceImages => _OverrideForFaceImages; public bool? OverrideForFaceLandmarkImages => _OverrideForFaceLandmarkImages; public bool? OverrideForResizeImages => _OverrideForResizeImages; public int? PaddingLoops => _PaddingLoops; public string PredictorModelName => _PredictorModelName; public bool? PropertiesChangedForDistance => _PropertiesChangedForDistance; public bool? PropertiesChangedForFaces => _PropertiesChangedForFaces; public bool? PropertiesChangedForIndex => _PropertiesChangedForIndex; public bool? PropertiesChangedForMetadata => _PropertiesChangedForMetadata; public bool? PropertiesChangedForResize => _PropertiesChangedForResize; public Property.Models.Configuration? PropertyConfiguration => _PropertyConfiguration; public bool? Reverse => _Reverse; public string[] SaveFaceLandmarkForOutputResolutions => _SaveFaceLandmarkForOutputResolutions; public bool? SaveFullYearOfRandomFiles => _SaveFullYearOfRandomFiles; public bool? SaveResizedSubfiles => _SaveResizedSubfiles; public bool? SearchForAbandonedFilesFull => _SearchForAbandonedFiles; public bool? SkipSearch => _SkipSearch; public bool? TestDistanceResults => _TestDistanceResults; public string[] ValidResolutions => _ValidResolutions; [JsonConstructor] public Configuration(bool? checkJsonForDistanceResults, int? crossDirectoryMaxItemsInDistanceCollection, int? distanceFactor, bool? forceMetadataLastWriteTimeToCreationTime, bool? forceResizeLastWriteTimeToCreationTime, string[] ignoreExtensions, string[] ignoreRelativePaths, bool? loadOrCreateThenSaveDirectoryDistanceResults, bool? loadOrCreateThenSaveDistanceResults, bool? loadOrCreateThenSaveImageFacesResults, bool? loadOrCreateThenSaveIndex, int? locationConfidenceFactor, int? mappedMaxIndex, int? maxItemsInDistanceCollection, string[] mixedYearRelativePaths, string modelDirectory, string modelName, int? numJitters, string outputExtension, int? outputQuality, string[] outputResolutions, bool? overrideForFaceImages, bool? overrideForFaceLandmarkImages, bool? overrideForResizeImages, int? paddingLoops, string predictorModelName, bool? propertiesChangedForDistance, bool? propertiesChangedForFaces, bool? propertiesChangedForIndex, bool? propertiesChangedForMetadata, bool? propertiesChangedForResize, Property.Models.Configuration? propertyConfiguration, bool? reverse, string[] saveFaceLandmarkForOutputResolutions, bool? saveFullYearOfRandomFiles, bool? saveResizedSubfiles, bool? searchForAbandonedFilesFull, bool? skipSearch, bool? testDistanceResults, string[] validResolutions) { _CheckJsonForDistanceResults = checkJsonForDistanceResults; _CrossDirectoryMaxItemsInDistanceCollection = crossDirectoryMaxItemsInDistanceCollection; _DistanceFactor = distanceFactor; _ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime; _ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime; _IgnoreExtensions = ignoreExtensions; _IgnoreRelativePaths = ignoreRelativePaths; _LoadOrCreateThenSaveDirectoryDistanceResults = loadOrCreateThenSaveDirectoryDistanceResults; _LoadOrCreateThenSaveDistanceResults = loadOrCreateThenSaveDistanceResults; _LoadOrCreateThenSaveImageFacesResults = loadOrCreateThenSaveImageFacesResults; _LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex; _LocationConfidenceFactor = locationConfidenceFactor; _MappedMaxIndex = mappedMaxIndex; _MaxItemsInDistanceCollection = maxItemsInDistanceCollection; _MixedYearRelativePaths = mixedYearRelativePaths; _ModelDirectory = modelDirectory; _ModelName = modelName; _NumJitters = numJitters; _OutputExtension = outputExtension; _OutputQuality = outputQuality; _OutputResolutions = outputResolutions; _OverrideForFaceImages = overrideForFaceImages; _OverrideForFaceLandmarkImages = overrideForFaceLandmarkImages; _OverrideForResizeImages = overrideForResizeImages; _PaddingLoops = paddingLoops; _PredictorModelName = predictorModelName; _PropertiesChangedForDistance = propertiesChangedForDistance; _PropertiesChangedForFaces = propertiesChangedForFaces; _PropertiesChangedForIndex = propertiesChangedForIndex; _PropertiesChangedForMetadata = propertiesChangedForMetadata; _PropertiesChangedForResize = propertiesChangedForResize; _PropertyConfiguration = propertyConfiguration; _Reverse = reverse; _SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions; _SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles; _SaveResizedSubfiles = saveResizedSubfiles; _SearchForAbandonedFiles = searchForAbandonedFilesFull; _SkipSearch = skipSearch; _TestDistanceResults = testDistanceResults; _ValidResolutions = validResolutions; } public override string ToString() { string result = JsonSerializer.Serialize(this, new JsonSerializerOptions() { WriteIndented = true }); return result; } public void Set(Property.Models.Configuration propertyConfiguration) => _PropertyConfiguration = propertyConfiguration; public void Update() => _PropertyConfiguration?.Update(); }