using System.Text.Json; using System.Text.Json.Serialization; namespace View_by_Distance.Instance.Models; public class Configuration { protected Property.Models.Configuration _PropertyConfiguration; public Property.Models.Configuration PropertyConfiguration => _PropertyConfiguration; 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[] IgnoreRelativePaths { init; get; } public string[] JuliePhares { init; get; } public string[] LoadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions { init; get; } public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; } public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; } public bool LoadOrCreateThenSaveIndex { init; get; } public int LocationConfidenceFactor { init; get; } public int? MappedMaxIndex { init; get; } public int MaxItemsInDistanceCollection { 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 int PaddingLoops { 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 bool SaveResizedSubfiles { init; get; } public string[] SaveShortcutsForOutputResolutions { 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 checkJsonForDistanceResults, int crossDirectoryMaxItemsInDistanceCollection, int distanceFactor, bool forceFaceLastWriteTimeToCreationTime, bool forceMetadataLastWriteTimeToCreationTime, bool forceResizeLastWriteTimeToCreationTime, string[] ignoreExtensions, string[] ignoreRelativePaths, string[] juliePhares, string[] loadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions, string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions, string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions, bool loadOrCreateThenSaveIndex, int locationConfidenceFactor, int? mappedMaxIndex, int maxItemsInDistanceCollection, string[] mixedYearRelativePaths, string modelDirectory, string modelName, int numberOfJitters, int numberOfTimesToUpsample, 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, bool reverse, string[] saveFaceLandmarkForOutputResolutions, bool saveFullYearOfRandomFiles, bool saveResizedSubfiles, string[] saveShortcutsForOutputResolutions, bool skipSearch, bool testDistanceResults, string[] validResolutions) { _PropertyConfiguration = propertyConfiguration; CheckJsonForDistanceResults = checkJsonForDistanceResults; CrossDirectoryMaxItemsInDistanceCollection = crossDirectoryMaxItemsInDistanceCollection; DistanceFactor = distanceFactor; ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime; ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime; ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime; IgnoreExtensions = ignoreExtensions; IgnoreRelativePaths = ignoreRelativePaths; JuliePhares = juliePhares; LoadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions = loadOrCreateThenSaveDirectoryDistanceResultsForOutputResolutions; LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions; LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions; LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex; LocationConfidenceFactor = locationConfidenceFactor; MappedMaxIndex = mappedMaxIndex; MaxItemsInDistanceCollection = maxItemsInDistanceCollection; MixedYearRelativePaths = mixedYearRelativePaths; ModelDirectory = modelDirectory; ModelName = modelName; NumberOfJitters = numberOfJitters; NumberOfTimesToUpsample = numberOfTimesToUpsample; 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; Reverse = reverse; SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions; SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles; SaveResizedSubfiles = saveResizedSubfiles; SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions; 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 configuration) => _PropertyConfiguration = configuration; public void Update() => _PropertyConfiguration.Update(); }