diff --git a/Property/Models/A_Property.cs b/Property/Models/A_Property.cs index dd3826e..eb4094a 100644 --- a/Property/Models/A_Property.cs +++ b/Property/Models/A_Property.cs @@ -1,4 +1,3 @@ -using ShellProgressBar; using System.Collections.ObjectModel; using System.Text; using System.Text.Json; @@ -66,40 +65,6 @@ public class A_Property converted: false)); } - [Obsolete("Use ExifDirectory")] - public void SavePropertyParallelWork(long ticks, Shared.Models.Methods.IMetadata metadata, int t, Container.Models.Container[] containers) - { - int total = 0; - string message; - int totalSeconds; - bool anyNullOrNoIsUniqueFileName; - List exceptions = []; - Container.Models.Container container; - int containersLength = containers.Length; - const string outputResolution = "Original"; - List> sourceDirectoryChanges = []; - string propertyRoot = IResult.GetResultsGroupDirectory(_PropertyConfiguration, nameof(A_Property)); - for (int i = 0; i < containers.Length; i++) - { - container = containers[i]; - if (container.Items.Count == 0) - continue; - sourceDirectoryChanges.Clear(); - if (container.Items.Count == 0) - continue; - anyNullOrNoIsUniqueFileName = container.Items.Any(l => !l.IsUniqueFileName); - SetAngleBracketCollection(container.SourceDirectory, anyNullOrNoIsUniqueFileName); - totalSeconds = (int)Math.Truncate(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds); - message = $"{i + 1:000} [{container.Items.Count:000}] / {containersLength:000} - {total} / {t} total - {totalSeconds} total second(s) - {outputResolution} - {container.SourceDirectory}"; - SavePropertyParallelWork(_MaxDegreeOfParallelism, metadata, exceptions, sourceDirectoryChanges, container, container.Items, message); - if (exceptions.Count == container.Items.Count) - throw new Exception(string.Concat("All in [", container.SourceDirectory, "]failed!")); - if (exceptions.Count != 0) - _ExceptionsDirectories.Add(container.SourceDirectory); - total += container.Items.Count; - } - } - private void SetAngleBracketCollection(string sourceDirectory, bool anyNullOrNoIsUniqueFileName) { _AngleBracketCollection.Clear(); @@ -112,180 +77,6 @@ public class A_Property SetAngleBracketCollection(aResultsFullGroupDirectory, sourceDirectory, anyNullOrNoIsUniqueFileName); } - [Obsolete("Use ExifDirectory")] - private void SavePropertyParallelWork(int maxDegreeOfParallelism, Shared.Models.Methods.IMetadata metadata, List exceptions, List> sourceDirectoryChanges, Container.Models.Container container, ReadOnlyCollection items, string message) - { - List> sourceDirectoryFileTuples = []; - ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = maxDegreeOfParallelism }; - ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true }; - using ProgressBar progressBar = new(items.Count, message, options); - _ = Parallel.For(0, items.Count, parallelOptions, (i, state) => - { - try - { - long ticks = DateTime.Now.Ticks; - DateTime dateTime = DateTime.Now; - List> collection; - SavePropertyParallelForWork(metadata, container.SourceDirectory, sourceDirectoryChanges, sourceDirectoryFileTuples, items[i]); - if (i == 0 || sourceDirectoryChanges.Count != 0) - progressBar.Tick(); - lock (sourceDirectoryFileTuples) - collection = (from l in sourceDirectoryFileTuples where l.Item2 > dateTime select l).ToList(); - lock (sourceDirectoryChanges) - sourceDirectoryChanges.AddRange(collection); - } - catch (Exception ex) - { - lock (exceptions) - exceptions.Add(ex); - } - }); - } - - [Obsolete("Use ExifDirectory")] - private void SavePropertyParallelForWork(Shared.Models.Methods.IMetadata metadata, string sourceDirectory, List> sourceDirectoryFileTuples, List> sourceDirectoryChanges, Item item) - { - Shared.Models.Property property; - List parseExceptions = []; - bool isIgnoreExtension = item.IsValidImageFormatExtension && _PropertyConfiguration.IgnoreExtensions.Contains(item.FilePath.ExtensionLowered); - string filteredSourceDirectoryFileExtensionLowered = Path.Combine(sourceDirectory, $"{item.FilePath.NameWithoutExtension}{item.FilePath.ExtensionLowered}"); - if (item.IsValidImageFormatExtension && item.FilePath.FullName.Length == filteredSourceDirectoryFileExtensionLowered.Length && item.FilePath.FullName != filteredSourceDirectoryFileExtensionLowered) - File.Move(item.FilePath.FullName, filteredSourceDirectoryFileExtensionLowered); - if (item.FileSizeChanged is null || item.FileSizeChanged.Value || item.LastWriteTimeChanged is null || item.LastWriteTimeChanged.Value || item.ExifDirectory is null) - { - property = GetImageProperty(metadata, item, sourceDirectoryFileTuples, parseExceptions, isIgnoreExtension); - lock (sourceDirectoryChanges) - sourceDirectoryChanges.Add(new Tuple(nameof(A_Property), DateTime.Now)); - lock (item) - item.Update(null); - } - } - - [Obsolete("Use ExifDirectory")] - private Shared.Models.Property GetImageProperty(Shared.Models.Methods.IMetadata metadata, Item item, List> sourceDirectoryFileTuples, List parseExceptions, bool isIgnoreExtension) - { - Shared.Models.Property? result; - int? id = null; - FileInfo fileInfo; - string? json = null; - bool hasWrongYearProperty = false; - string[] changesFrom = []; - string angleBracket = _AngleBracketCollection[0]; - bool populateId = _Configuration.PopulatePropertyId; - if (!item.IsUniqueFileName) - fileInfo = new(Path.Combine(angleBracket.Replace("<>", _PropertyConfiguration.ResultSingleton), $"{item.FilePath.NameWithoutExtension}{item.FilePath.ExtensionLowered}.json")); - else - { - string fileName = $"{item.FilePath.NameWithoutExtension}{item.FilePath.ExtensionLowered}.json"; - CombinedEnumAndIndex cei = Shared.Models.Stateless.Methods.IPath.GetCombinedEnumAndIndex(_PropertyConfiguration, item.FilePath); - string directory = _ResultSingletonFileGroups[0][cei.Enum][cei.Index]; - fileInfo = new(Path.Combine(directory, fileName)); - MoveIf(fileName, cei, directory, fileInfo); - } - List dateTimes = (from l in sourceDirectoryFileTuples where l is not null && changesFrom.Contains(l.Item1) select l.Item2).ToList(); - if (_Configuration.ForcePropertyLastWriteTimeToCreationTime && !fileInfo.Exists && File.Exists(Path.ChangeExtension(fileInfo.FullName, ".delete"))) - { - File.Move(Path.ChangeExtension(fileInfo.FullName, ".delete"), fileInfo.FullName); - fileInfo.Refresh(); - } - if (_Configuration.ForcePropertyLastWriteTimeToCreationTime && fileInfo.Exists && fileInfo.LastWriteTime != fileInfo.CreationTime) - { - File.SetLastWriteTime(fileInfo.FullName, fileInfo.CreationTime); - fileInfo.Refresh(); - } - if (_Configuration.PropertiesChangedForProperty) - result = null; - else if (!fileInfo.Exists) - result = null; - else if (!fileInfo.FullName.EndsWith(".json") && !fileInfo.FullName.EndsWith(".old")) - throw new ArgumentException("must be a *.json file"); - else if (dateTimes.Count != 0 && dateTimes.Max() > fileInfo.LastWriteTime) - result = null; - else - { - json = File.ReadAllText(fileInfo.FullName); - try - { - if (item.ExifDirectory is not null) - result = null; - else - result = JsonSerializer.Deserialize(json, PropertyGenerationContext.Default.Property); - if (result is not null && json.Contains("WrongYear")) - { - id = result.Id; - hasWrongYearProperty = true; - result = null; - } - if (!isIgnoreExtension && item.IsValidImageFormatExtension && ((populateId && result?.Id is null) || result?.Width is null || result.Height is null)) - { - id = result?.Id; - result = null; - } - if (!isIgnoreExtension && item.IsValidImageFormatExtension && populateId && result is not null && result.LastWriteTime.Ticks != item.FilePath.LastWriteTicks) - { - id = null; - result = null; - } - if (!isIgnoreExtension && item.IsValidImageFormatExtension && result?.Width is not null && result.Height is not null && result.Width.Value == result.Height.Value) - { - id = result.Id; - result = null; - if (result?.Width is not null && result.Height is not null && result.Width.Value != result.Height.Value) - throw new Exception("Was square!"); - } - if (!isIgnoreExtension && item.IsValidImageFormatExtension && result is not null && result.FileSize != item.FilePath.Length) - { - id = result.Id; - result = null; - } - if (result is not null) - { - sourceDirectoryFileTuples.Add(new Tuple(nameof(A_Property), fileInfo.LastWriteTime)); - if (fileInfo.CreationTime != result.LastWriteTime) - { - File.SetCreationTime(fileInfo.FullName, result.LastWriteTime); - File.SetLastWriteTime(fileInfo.FullName, fileInfo.LastWriteTime); - } - } - } - catch (Exception) - { - result = null; - parseExceptions.Add(nameof(A_Property)); - } - } - if (result is null) - { - id ??= item.FilePath.Id; - (_, _, result) = Stateless.Property.GetProperty(populateId, metadata, item.FilePath, result, isIgnoreExtension, item.IsValidImageFormatExtension, id, _ASCIIEncoding); - json = JsonSerializer.Serialize(result, PropertyGenerationContext.Default.Property); - if (populateId && Shared.Models.Stateless.Methods.IPath.WriteAllText(fileInfo.FullName, json, updateDateWhenMatches: true, compareBeforeWrite: true)) - { - File.SetCreationTime(fileInfo.FullName, result.LastWriteTime); - if (!_Configuration.ForcePropertyLastWriteTimeToCreationTime) - sourceDirectoryFileTuples.Add(new Tuple(nameof(A_Property), DateTime.Now)); - else - { - File.SetLastWriteTime(fileInfo.FullName, fileInfo.CreationTime); - fileInfo.Refresh(); - sourceDirectoryFileTuples.Add(new Tuple(nameof(A_Property), fileInfo.CreationTime)); - } - } - } - else if (hasWrongYearProperty) - { - json = JsonSerializer.Serialize(result, PropertyGenerationContext.Default.Property); - if (Shared.Models.Stateless.Methods.IPath.WriteAllText(fileInfo.FullName, json, updateDateWhenMatches: true, compareBeforeWrite: true)) - { - File.SetCreationTime(fileInfo.FullName, result.LastWriteTime); - File.SetLastWriteTime(fileInfo.FullName, fileInfo.CreationTime); - fileInfo.Refresh(); - sourceDirectoryFileTuples.Add(new Tuple(nameof(A_Property), fileInfo.CreationTime)); - } - } - return result; - } - private static void MoveIf(string fileName, CombinedEnumAndIndex cei, string directory, FileInfo fileInfo) { string[] segments = directory.Split(cei.Combined); @@ -305,22 +96,4 @@ public class A_Property } } - [Obsolete("Use ExifDirectory")] - public Shared.Models.Property GetProperty(Shared.Models.Methods.IMetadata metadata, Item item, List> sourceDirectoryFileTuples, List parseExceptions) - { - Shared.Models.Property result; - bool angleBracketCollectionAny = _AngleBracketCollection.Count != 0; - if (!angleBracketCollectionAny) - { - if (item.FilePath.DirectoryFullPath is null) - throw new NullReferenceException(nameof(item.FilePath.DirectoryFullPath)); - SetAngleBracketCollection(item.FilePath.DirectoryFullPath, !item.IsUniqueFileName); - } - bool isIgnoreExtension = item.IsValidImageFormatExtension && _PropertyConfiguration.IgnoreExtensions.Contains(item.FilePath.ExtensionLowered); - result = GetImageProperty(metadata, item, sourceDirectoryFileTuples, parseExceptions, isIgnoreExtension); - if (!angleBracketCollectionAny) - _AngleBracketCollection.Clear(); - return result; - } - } \ No newline at end of file