namespace View_by_Distance.Property.Models.Stateless; internal class Result { internal static string GetRelativePath(Models.Configuration configuration, string path) { string result = XPath.GetRelativePath(path, configuration.RootDirectory.Length); return result; } internal static string GetResultsGroupDirectory(Models.Configuration configuration, string description) { string result = Path.Combine($"{configuration.RootDirectory} - Results", description.Replace("_", ") ")); if (!Directory.Exists(result)) _ = Directory.CreateDirectory(result); return result; } internal static string GetResultsDateGroupDirectory(Models.Configuration configuration, string description) { string result = Path.Combine(GetResultsGroupDirectory(configuration, description), configuration.DateGroup); if (!Directory.Exists(result)) _ = Directory.CreateDirectory(result); return result; } internal static string GetResultsDateGroupDirectory(Models.Configuration configuration, string description, string jsonGroup) { string result = Path.Combine(GetResultsDateGroupDirectory(configuration, description), jsonGroup); if (!Directory.Exists(result)) _ = Directory.CreateDirectory(result); return result; } internal static string GetResultsFullGroupDirectory(Models.Configuration configuration, string description, string outputResolution, bool includeResizeGroup, bool includeModel, bool includePredictorModel) { string result = GetResultsDateGroupDirectory(configuration, description); if (includeResizeGroup) result = Path.Combine(result, outputResolution); if (includeModel && includePredictorModel) { string dateGroupDirectory = string.Concat(outputResolution.Replace(" ", string.Empty), " - ", "_Configuration.ModelName", " - ", "_Configuration.PredictorModelName"); result = Path.Combine(result, dateGroupDirectory); } else if (includeModel) throw new Exception(); else if (includePredictorModel) throw new Exception(); if (!Directory.Exists(result)) _ = Directory.CreateDirectory(result); return result; } internal static List GetDirectoryInfoCollection(Models.Configuration configuration, string sourceDirectory, string description, string outputResolution, bool includeResizeGroup, bool includeModel, bool includePredictorModel, string contentDescription, string singletonDescription, string collectionDescription) { List results = new(); string result = string.Empty; string checkDirectory; string sourceDirectorySegment = GetRelativePath(configuration, sourceDirectory); string dateGroupDirectory = IResult.GetResultsFullGroupDirectory(configuration, description, outputResolution, includeResizeGroup, includeModel, includePredictorModel); if (!string.IsNullOrEmpty(contentDescription)) { result = string.Concat(Path.Combine(dateGroupDirectory, "<>"), sourceDirectorySegment); DirectoryInfo contentDirectoryInfo = new(result.Replace("<>", "()")); if (!contentDirectoryInfo.Exists) contentDirectoryInfo.Create(); checkDirectory = Path.Combine(dateGroupDirectory, string.Concat("() - ", contentDescription)); if (!Directory.Exists(checkDirectory)) _ = Directory.CreateDirectory(checkDirectory); } if (!string.IsNullOrEmpty(singletonDescription)) { result = string.Concat(Path.Combine(dateGroupDirectory, "<>"), sourceDirectorySegment); DirectoryInfo singletonDirectoryInfo = new(result.Replace("<>", "{}")); if (!singletonDirectoryInfo.Exists) singletonDirectoryInfo.Create(); checkDirectory = Path.Combine(dateGroupDirectory, string.Concat("{} - ", singletonDescription)); if (!Directory.Exists(checkDirectory)) _ = Directory.CreateDirectory(checkDirectory); } if (!string.IsNullOrEmpty(collectionDescription)) { result = string.Concat(Path.Combine(dateGroupDirectory, "<>"), sourceDirectorySegment); DirectoryInfo collectionDirectoryInfo = new(result.Replace("<>", "[]")); if (!collectionDirectoryInfo.Exists) collectionDirectoryInfo.Create(); checkDirectory = Path.Combine(dateGroupDirectory, string.Concat("[] - ", collectionDescription)); if (!Directory.Exists(checkDirectory)) _ = Directory.CreateDirectory(checkDirectory); } if (string.IsNullOrEmpty(result)) throw new Exception(); results.Add(result); return results; } }