FilePath ready to test

This commit is contained in:
2023-12-24 11:29:36 -07:00
parent af491371a3
commit 7007a9df2e
60 changed files with 960 additions and 857 deletions

View File

@ -6,6 +6,7 @@ using System.Collections.ObjectModel;
using View_by_Distance.Copy.Distinct.Models;
using View_by_Distance.Shared.Models;
using View_by_Distance.Shared.Models.Methods;
using View_by_Distance.Shared.Models.Stateless.Methods;
namespace View_by_Distance.Copy.Distinct;
@ -17,7 +18,7 @@ public class CopyDistinct
private readonly Configuration _Configuration;
private readonly IsEnvironment _IsEnvironment;
private readonly IConfigurationRoot _ConfigurationRoot;
private readonly IReadOnlyDictionary<string, string[]> _FileGroups;
private readonly ReadOnlyDictionary<string, string[]> _FileGroups;
private readonly Property.Models.Configuration _PropertyConfiguration;
public CopyDistinct(List<string> args, ILogger<Program> logger, IsEnvironment isEnvironment, IConfigurationRoot configurationRoot, AppSettings appSettings, string workingDirectory, bool isSilent, IConsole console)
@ -63,7 +64,7 @@ public class CopyDistinct
const string directorySearchFilter = "*";
string copyTo = Path.GetFullPath(_AppSettings.CopyTo);
bool move = copyTo == _PropertyConfiguration.RootDirectory;
ReadOnlyCollection<string[]> filesCollection = Shared.Models.Stateless.Methods.IDirectory.GetFilesCollection(_PropertyConfiguration.RootDirectory, directorySearchFilter, fileSearchFilter, useCeilingAverage);
ReadOnlyCollection<string[]> filesCollection = IDirectory.GetFilesCollection(_PropertyConfiguration.RootDirectory, directorySearchFilter, fileSearchFilter, useCeilingAverage);
bool anyLenFiles = filesCollection.Any(l => l.Any(m => m.EndsWith("len")));
if (!move)
moveBack = false;
@ -92,13 +93,15 @@ public class CopyDistinct
return (move, new(filesCollection), anyLenFiles, moveBack);
}
private static (string[], List<(FileHolder, string?, string)>) GetMoveBackToDoCollection(ReadOnlyCollection<string[]> filesCollection)
private static (string[], List<(FilePath, string)>) GetMoveBackToDoCollection(Property.Models.Configuration propertyConfiguration, ReadOnlyCollection<string[]> filesCollection)
{
List<(FileHolder, string?, string)> results = [];
List<(FilePath, string)> results = [];
string key;
string? value;
string fileName;
FilePath filePath;
string? directory;
FileHolder fileHolder;
string destinationFile;
List<string> distinctFound = [];
List<string> distinctNeeded = [];
@ -146,7 +149,9 @@ public class CopyDistinct
directory = Path.GetDirectoryName(value);
if (string.IsNullOrEmpty(directory))
continue;
results.Add(new(new(file), null, value));
fileHolder = Shared.Models.Stateless.Methods.IFileHolder.Get(file);
filePath = FilePath.Get(propertyConfiguration, fileHolder, index: null);
results.Add(new(filePath, value));
if (!distinctDirectories.Contains(directory))
distinctDirectories.Add(directory);
}
@ -161,21 +166,21 @@ public class CopyDistinct
string[] distinctDirectories;
ConsoleKey? consoleKey = null;
string message = nameof(CopyDistinct);
List<(FileHolder, string?, string)> toDoCollection;
List<(FilePath, string)> toDoCollection;
int count = filesCollection.Select(l => l.Length).Sum();
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
if (moveBack)
{
if (!anyLenFiles)
throw new NotSupportedException();
(distinctDirectories, toDoCollection) = GetMoveBackToDoCollection(filesCollection);
(distinctDirectories, toDoCollection) = GetMoveBackToDoCollection(_PropertyConfiguration, filesCollection);
}
else
{
progressBar = new(count, message, options);
string key = string.IsNullOrEmpty(_AppSettings.ResultDirectoryKey) ? _PropertyConfiguration.ResultAllInOne : _AppSettings.ResultDirectoryKey;
string[] directories = _FileGroups[key];
(distinctDirectories, toDoCollection) = Shared.Models.Stateless.Methods.IDirectory.GetToDoCollection(_PropertyConfiguration, _AppSettings.CopyDuplicates, _AppSettings.IfCanUseId, filesCollection, directories, () => progressBar.Tick());
(distinctDirectories, toDoCollection) = IDirectory.GetToDoCollection(_PropertyConfiguration, _AppSettings.CopyDuplicates, _AppSettings.IfCanUseId, filesCollection, directories, () => progressBar.Tick());
progressBar.Dispose();
}
foreach (string distinctDirectory in distinctDirectories)
@ -212,7 +217,7 @@ public class CopyDistinct
else
{
progressBar = new(count, message, options);
results.AddRange(Shared.Models.Stateless.Methods.IDirectory.CopyOrMove(toDoCollection, move, moveBack, () => progressBar.Tick()));
results.AddRange(IDirectory.CopyOrMove(toDoCollection, move, moveBack, () => progressBar.Tick()));
progressBar.Dispose();
if (move || moveBack)
logger?.LogInformation("Done moving");