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 int FaceDistanceHiddenImageFactor { init; get; } public double FaceDistanceMinimumConfidence { init; get; } public int FaceDistancePermyriad { init; get; } public double FaceDistanceTolerance { 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[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; } public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; } public bool LoadOrCreateThenSaveIndex { init; get; } public int LocationConfidenceFactor { init; get; } public int LocationDigits { init; get; } public int LocationFactor { init; get; } public int MapLogicSigma { init; get; } public int? MappedMaxIndex { init; get; } public string MappingDefaultName { init; get; } public bool MappingMoveUnableToMatch { init; get; } public bool MappingSaveNotMapped { init; get; } public bool MappingSaveMapped { init; get; } public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping { init; get; } public bool MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping { 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 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 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 int SortingDaysDeltaTolerance { init; get; } public int SortingMaximumPerFaceShouldBeHigh { init; get; } public int SortingMaximumPerKey { init; get; } public int SortingSigma { 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, int faceDistanceHiddenImageFactor, double faceDistanceMinimumConfidence, int faceDistancePermyriad, double faceDistanceTolerance, bool forceFaceLastWriteTimeToCreationTime, bool forceMetadataLastWriteTimeToCreationTime, bool forceResizeLastWriteTimeToCreationTime, string[] ignoreExtensions, string[] ignoreRelativePaths, string[] juliePhares, string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions, string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions, bool loadOrCreateThenSaveIndex, int locationConfidenceFactor, int locationDigits, int locationFactor, int mapLogicSigma, int? mappedMaxIndex, string mappingDefaultName, bool mappingMoveUnableToMatch, bool mappingSaveNotMapped, bool mappingSaveMapped, bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping, bool mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping, 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, int personBirthdayFirstYear, string personBirthdayFormat, string personKeyFormat, string predictorModelName, bool propertiesChangedForDistance, bool propertiesChangedForFaces, bool propertiesChangedForIndex, bool propertiesChangedForMetadata, bool propertiesChangedForResize, bool reverse, string[] saveFaceLandmarkForOutputResolutions, bool saveFullYearOfRandomFiles, bool saveResizedSubfiles, string[] saveShortcutsForOutputResolutions, bool skipSearch, int sortingDaysDeltaTolerance, int sortingMaximumPerFaceShouldBeHigh, int sortingMaximumPerKey, int sortingSigma, bool testDistanceResults, string[] validResolutions) { _PropertyConfiguration = propertyConfiguration; CheckDFaceAndUpWriteDates = checkDFaceAndUpWriteDates; CheckJsonForDistanceResults = checkJsonForDistanceResults; CrossDirectoryMaxItemsInDistanceCollection = crossDirectoryMaxItemsInDistanceCollection; DistanceFactor = distanceFactor; FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor; FaceDistanceMinimumConfidence = faceDistanceMinimumConfidence; FaceDistancePermyriad = faceDistancePermyriad; FaceDistanceTolerance = faceDistanceTolerance; ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime; ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime; ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime; IgnoreExtensions = ignoreExtensions; IgnoreRelativePaths = ignoreRelativePaths; JuliePhares = juliePhares; LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions; LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions; LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex; LocationConfidenceFactor = locationConfidenceFactor; LocationDigits = locationDigits; LocationFactor = locationFactor; MapLogicSigma = mapLogicSigma; MappedMaxIndex = mappedMaxIndex; MappingDefaultName = mappingDefaultName; MappingMoveUnableToMatch = mappingMoveUnableToMatch; MappingSaveNotMapped = mappingSaveNotMapped; MappingSaveMapped = mappingSaveMapped; MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping; MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping = mappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping; 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; PersonBirthdayFirstYear = personBirthdayFirstYear; PersonBirthdayFormat = personBirthdayFormat; PersonKeyFormat = personKeyFormat; PredictorModelName = predictorModelName; PropertiesChangedForDistance = propertiesChangedForDistance; PropertiesChangedForFaces = propertiesChangedForFaces; PropertiesChangedForIndex = propertiesChangedForIndex; PropertiesChangedForMetadata = propertiesChangedForMetadata; PropertiesChangedForResize = propertiesChangedForResize; Reverse = reverse; SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions; SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles; SaveResizedSubfiles = saveResizedSubfiles; SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions; SkipSearch = skipSearch; SortingDaysDeltaTolerance = sortingDaysDeltaTolerance; SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh; SortingMaximumPerKey = sortingMaximumPerKey; SortingSigma = sortingSigma; 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(); }