// using System.Text.Json; // using System.Text.Json.Serialization; // namespace View_by_Distance.Metadata.Models; // public class ZMetadataConfiguration : Shared.Models.Properties.IAAConfiguration // { // protected string _RootDirectory; // public string RootDirectory => _RootDirectory; // public string DateGroup { init; get; } // public string FileNameDirectorySeparator { init; get; } // public bool ForcePropertyLastWriteTimeToCreationTime { init; get; } // public string[] IgnoreExtensions { init; get; } // public string[] IgnoreRulesKeyWords { init; get; } // public int MaxImagesInDirectoryForTopLevelFirstPass { init; get; } // public string? ModelName { init; get; } // public int? NumberOfJitters { init; get; } // public int? NumberOfTimesToUpsample { init; get; } // public int Offset { init; get; } // public string Pattern { init; get; } // public string PersonBirthdayFormat { init; get; } // public bool PopulatePropertyId { init; get; } // public string? PredictorModelName { init; get; } // public bool PropertiesChangedForProperty { init; get; } // public string[] PropertyContentCollectionFiles { init; get; } // public string ResultAllInOne { init; get; } // public int ResultAllInOneSubdirectoryLength { init; get; } // public string ResultCollection { init; get; } // public string ResultContent { init; get; } // public string ResultSingleton { init; get; } // public string[] ValidImageFormatExtensions { init; get; } // [JsonConstructor] // public MetadataConfiguration(string dateGroup, // string fileNameDirectorySeparator, // bool forcePropertyLastWriteTimeToCreationTime, // string[] ignoreExtensions, // string[] ignoreRulesKeyWords, // int maxImagesInDirectoryForTopLevelFirstPass, // string? modelName, // int? numberOfJitters, // int? numberOfTimesToUpsample, // int offset, // string pattern, // string personBirthdayFormat, // bool populatePropertyId, // string? predictorModelName, // bool propertiesChangedForProperty, // string[] propertyContentCollectionFiles, // string resultAllInOne, // int resultAllInOneSubdirectoryLength, // string resultCollection, // string resultContent, // string resultSingleton, // string rootDirectory, // string[] validImageFormatExtensions) // { // DateGroup = dateGroup; // FileNameDirectorySeparator = fileNameDirectorySeparator; // ForcePropertyLastWriteTimeToCreationTime = forcePropertyLastWriteTimeToCreationTime; // IgnoreExtensions = ignoreExtensions; // IgnoreRulesKeyWords = ignoreRulesKeyWords; // MaxImagesInDirectoryForTopLevelFirstPass = maxImagesInDirectoryForTopLevelFirstPass; // ModelName = modelName; // NumberOfJitters = numberOfJitters; // NumberOfTimesToUpsample = numberOfTimesToUpsample; // Offset = offset; // Pattern = pattern; // PersonBirthdayFormat = personBirthdayFormat; // PredictorModelName = predictorModelName; // PopulatePropertyId = populatePropertyId; // PropertiesChangedForProperty = propertiesChangedForProperty; // PropertyContentCollectionFiles = propertyContentCollectionFiles; // ResultAllInOne = resultAllInOne; // ResultAllInOneSubdirectoryLength = resultAllInOneSubdirectoryLength; // ResultCollection = resultCollection; // ResultContent = resultContent; // ResultSingleton = resultSingleton; // _RootDirectory = rootDirectory; // ValidImageFormatExtensions = validImageFormatExtensions; // } // public override string ToString() // { // string result = JsonSerializer.Serialize(this, MetadataConfigurationSourceGenerationContext.Default.MetadataConfiguration); // return result; // } // public void ChangeRootDirectory(string rootDirectory) => // _RootDirectory = Path.GetFullPath(rootDirectory); // public static void Verify(MetadataConfiguration propertyConfiguration, bool requireExist) // { // if (propertyConfiguration is null) // throw new NullReferenceException(nameof(propertyConfiguration)); // if (propertyConfiguration.IgnoreExtensions is null || propertyConfiguration.IgnoreExtensions.Length == 0) // throw new NullReferenceException(nameof(propertyConfiguration.IgnoreExtensions)); // if (propertyConfiguration.IgnoreRulesKeyWords is null || propertyConfiguration.IgnoreRulesKeyWords.Length == 0) // throw new NullReferenceException(nameof(propertyConfiguration.IgnoreRulesKeyWords)); // if (propertyConfiguration.PropertyContentCollectionFiles is null) // throw new NullReferenceException(nameof(propertyConfiguration.PropertyContentCollectionFiles)); // if (propertyConfiguration.ValidImageFormatExtensions is null || propertyConfiguration.ValidImageFormatExtensions.Length == 0) // throw new NullReferenceException(nameof(propertyConfiguration.ValidImageFormatExtensions)); // if (propertyConfiguration is null) // throw new NullReferenceException(nameof(propertyConfiguration)); // if (string.IsNullOrEmpty(propertyConfiguration.DateGroup)) // throw new NullReferenceException(nameof(propertyConfiguration.DateGroup)); // if (string.IsNullOrEmpty(propertyConfiguration.FileNameDirectorySeparator)) // throw new NullReferenceException(nameof(propertyConfiguration.FileNameDirectorySeparator)); // if (string.IsNullOrEmpty(propertyConfiguration.Pattern)) // throw new NullReferenceException(nameof(propertyConfiguration.Pattern)); // if (string.IsNullOrEmpty(propertyConfiguration.RootDirectory) || (requireExist && !Directory.Exists(propertyConfiguration.RootDirectory))) // throw new NullReferenceException(nameof(propertyConfiguration.RootDirectory)); // if (propertyConfiguration.RootDirectory != Path.GetFullPath(propertyConfiguration.RootDirectory)) // throw new Exception(); // } // } // [JsonSourceGenerationOptions(WriteIndented = true)] // [JsonSerializable(typeof(MetadataConfiguration))] // internal partial class MetadataConfigurationSourceGenerationContext : JsonSerializerContext // { // }