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 DistanceMoveUnableToMatch { init; get; } public int DistancePixelDistanceTolerance { init; get; } public bool DistanceRenameToMatch { init; get; } public int FaceDistanceHiddenImageFactor { init; get; } public int FaceConfidencePercent { init; get; } public int FaceDistancePermyriad { 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[] JLinks { init; get; } public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; } public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; } public bool LoadOrCreateThenSaveIndex { init; get; } public int LocationDigits { init; get; } public int LocationFactor { init; get; } public int? MappedMaxIndex { init; get; } public string MappingDefaultName { init; get; } public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { init; get; } public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { 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 PersonBirthdayFirstYear { init; get; } public string PersonBirthdayFormat { init; get; } public string PersonKeyFormat { 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 int[] RangeDaysDeltaTolerance { init; get; } public int[] RangeFaceAreaPermilleTolerance { init; get; } public double[] RangeFaceConfidence { init; get; } public double[] RangeDistanceTolerance { init; get; } public bool RetryImagesWithoutAFaceLocation { init; get; } public bool Reverse { init; get; } public string[] SaveFaceLandmarkForOutputResolutions { init; get; } public bool SaveFullYearOfRandomFiles { init; get; } public string[] SaveFilteredOriginalImagesFromJLinksForOutputResolutions { init; get; } public bool SaveResizedSubfiles { init; get; } public string[] SaveShortcutsForOutputResolutions { init; get; } public bool SkipSearch { init; get; } public int SortingMaximumPerFaceShouldBeHigh { init; get; } public int SortingMaximumPerKey { init; get; } public int SortingMinimumToUseSigma { 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 distanceMoveUnableToMatch, int distancePixelDistanceTolerance, bool distanceRenameToMatch, int faceDistanceHiddenImageFactor, int faceConfidencePercent, int faceDistancePermyriad, bool forceFaceLastWriteTimeToCreationTime, bool forceMetadataLastWriteTimeToCreationTime, bool forceResizeLastWriteTimeToCreationTime, string[] ignoreExtensions, string[] ignoreRelativePaths, string[] jLinks, string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions, string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions, bool loadOrCreateThenSaveIndex, int locationDigits, int locationFactor, int? mappedMaxIndex, string mappingDefaultName, bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping, bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping, string[] mixedYearRelativePaths, string modelDirectory, string modelName, int numberOfJitters, int numberOfTimesToUpsample, string outputExtension, int outputQuality, string[] outputResolutions, bool overrideForFaceImages, bool overrideForFaceLandmarkImages, bool overrideForResizeImages, int personBirthdayFirstYear, string personBirthdayFormat, string personKeyFormat, string predictorModelName, bool propertiesChangedForDistance, bool propertiesChangedForFaces, bool propertiesChangedForIndex, bool propertiesChangedForMetadata, bool propertiesChangedForResize, int[] rangeDaysDeltaTolerance, int[] rangeFaceAreaPermilleTolerance, double[] rangeFaceConfidence, double[] rangeDistanceTolerance, bool retryImagesWithoutAFaceLocation, bool reverse, string[] saveFaceLandmarkForOutputResolutions, bool saveFullYearOfRandomFiles, string[] saveFilteredOriginalImagesFromJLinksForOutputResolutions, bool saveResizedSubfiles, string[] saveShortcutsForOutputResolutions, bool skipSearch, int sortingMaximumPerFaceShouldBeHigh, int sortingMaximumPerKey, int sortingSigma, bool testDistanceResults, string[] validResolutions) { _PropertyConfiguration = propertyConfiguration; CheckDFaceAndUpWriteDates = checkDFaceAndUpWriteDates; CheckJsonForDistanceResults = checkJsonForDistanceResults; CrossDirectoryMaxItemsInDistanceCollection = crossDirectoryMaxItemsInDistanceCollection; DistanceFactor = distanceFactor; DistanceMoveUnableToMatch = distanceMoveUnableToMatch; DistancePixelDistanceTolerance = distancePixelDistanceTolerance; DistanceRenameToMatch = distanceRenameToMatch; FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor; FaceConfidencePercent = faceConfidencePercent; FaceDistancePermyriad = faceDistancePermyriad; ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime; ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime; ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime; IgnoreExtensions = ignoreExtensions; IgnoreRelativePaths = ignoreRelativePaths; JLinks = jLinks; LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions; LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions; LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex; LocationDigits = locationDigits; LocationFactor = locationFactor; MappedMaxIndex = mappedMaxIndex; MappingDefaultName = mappingDefaultName; MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping; MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping; MixedYearRelativePaths = mixedYearRelativePaths; ModelDirectory = modelDirectory; ModelName = modelName; NumberOfJitters = numberOfJitters; NumberOfTimesToUpsample = numberOfTimesToUpsample; OutputExtension = outputExtension; OutputQuality = outputQuality; OutputResolutions = outputResolutions; OverrideForFaceImages = overrideForFaceImages; OverrideForFaceLandmarkImages = overrideForFaceLandmarkImages; OverrideForResizeImages = overrideForResizeImages; PersonBirthdayFirstYear = personBirthdayFirstYear; PersonBirthdayFormat = personBirthdayFormat; PersonKeyFormat = personKeyFormat; PredictorModelName = predictorModelName; PropertiesChangedForDistance = propertiesChangedForDistance; PropertiesChangedForFaces = propertiesChangedForFaces; PropertiesChangedForIndex = propertiesChangedForIndex; PropertiesChangedForMetadata = propertiesChangedForMetadata; PropertiesChangedForResize = propertiesChangedForResize; RangeDaysDeltaTolerance = rangeDaysDeltaTolerance; RangeFaceAreaPermilleTolerance = rangeFaceAreaPermilleTolerance; RangeFaceConfidence = rangeFaceConfidence; RangeDistanceTolerance = rangeDistanceTolerance; RetryImagesWithoutAFaceLocation = retryImagesWithoutAFaceLocation; Reverse = reverse; SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions; SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles; SaveFilteredOriginalImagesFromJLinksForOutputResolutions = saveFilteredOriginalImagesFromJLinksForOutputResolutions; SaveResizedSubfiles = saveResizedSubfiles; SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions; SkipSearch = skipSearch; SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh; SortingMaximumPerKey = sortingMaximumPerKey; SortingMinimumToUseSigma = sortingSigma; 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, int? numberOfJitters, int? numberOfTimesToUpsample, string? modelName, string? predictorModelName) { _PropertyConfiguration = configuration; _PropertyConfiguration.Update(numberOfJitters, numberOfTimesToUpsample, modelName, predictorModelName); } }