added-numbers-to-distinguish-has-ignore-keyword-and-has-date-time-original
moved-container-to-new-project-to-prepare-to-remove-property-file added-logic-to-rename-to-3-and-7-like-should-ignore-for-missing-date-time-original
This commit is contained in:
@ -33,6 +33,7 @@ internal abstract partial class XDirectory
|
||||
internal static ReadOnlyCollection<string[]> GetFilesCollection(string directory, string directorySearchFilter, string fileSearchFilter, bool useCeilingAverage)
|
||||
{
|
||||
List<string[]> results = [];
|
||||
string[] files;
|
||||
if (!fileSearchFilter.Contains('*'))
|
||||
fileSearchFilter = string.Concat('*', fileSearchFilter);
|
||||
if (!directorySearchFilter.Contains('*'))
|
||||
@ -44,7 +45,12 @@ internal abstract partial class XDirectory
|
||||
foreach (string innerDirectory in directories)
|
||||
{
|
||||
try
|
||||
{ results.Add(Directory.GetFiles(innerDirectory, fileSearchFilter, SearchOption.AllDirectories)); }
|
||||
{
|
||||
files = Directory.GetFiles(innerDirectory, fileSearchFilter, SearchOption.AllDirectories);
|
||||
if (files.Length == 0)
|
||||
continue;
|
||||
results.Add(files);
|
||||
}
|
||||
catch (UnauthorizedAccessException)
|
||||
{ continue; }
|
||||
}
|
||||
@ -62,77 +68,6 @@ internal abstract partial class XDirectory
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static IReadOnlyDictionary<string, List<string>> GetFilesKeyValuePairs(ReadOnlyCollection<string[]> filesCollection)
|
||||
{
|
||||
Dictionary<string, List<string>> results = [];
|
||||
string fileName;
|
||||
List<string>? collection;
|
||||
foreach (string[] files in filesCollection)
|
||||
{
|
||||
foreach (string file in files)
|
||||
{
|
||||
fileName = Path.GetFileName(file);
|
||||
if (!results.TryGetValue(fileName, out collection))
|
||||
{
|
||||
results.Add(fileName, []);
|
||||
if (!results.TryGetValue(fileName, out collection))
|
||||
throw new Exception();
|
||||
}
|
||||
collection.Add(file);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static IReadOnlyDictionary<string, List<string>> GetFilesKeyValuePairs(ReadOnlyCollection<ReadOnlyCollection<FilePath>> filePathsCollection)
|
||||
{
|
||||
Dictionary<string, List<string>> results = [];
|
||||
List<string>? collection;
|
||||
foreach (ReadOnlyCollection<FilePath> filePaths in filePathsCollection)
|
||||
{
|
||||
foreach (FilePath filePath in filePaths)
|
||||
{
|
||||
if (!results.TryGetValue(filePath.Name, out collection))
|
||||
{
|
||||
results.Add(filePath.Name, []);
|
||||
if (!results.TryGetValue(filePath.Name, out collection))
|
||||
throw new Exception();
|
||||
}
|
||||
collection.Add(filePath.FullName);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static int LookForAbandoned(ReadOnlyCollection<string[]> jsonFilesCollection, IReadOnlyDictionary<string, List<string>> fileNamesToFiles, string extension)
|
||||
{
|
||||
string fileName;
|
||||
string fileNameWith;
|
||||
List<string>? collection;
|
||||
string fileNameUpperExtension;
|
||||
int length = extension.Length;
|
||||
List<string> renameCollection = [];
|
||||
foreach (string[] files in jsonFilesCollection)
|
||||
{
|
||||
foreach (string file in files)
|
||||
{
|
||||
fileNameWith = Path.GetFileName(file);
|
||||
if (fileNameWith.Length < length || !fileNameWith.EndsWith(extension))
|
||||
throw new Exception();
|
||||
fileName = fileNameWith[..^length];
|
||||
if (!fileNamesToFiles.TryGetValue(fileName, out collection))
|
||||
{
|
||||
fileNameUpperExtension = string.Concat(Path.GetFileNameWithoutExtension(fileName), Path.GetExtension(fileName).ToUpper());
|
||||
if (fileName == fileNameUpperExtension || !fileNamesToFiles.TryGetValue(fileNameUpperExtension, out collection))
|
||||
renameCollection.Add(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (renameCollection.Count > 0)
|
||||
IDirectory.MoveFiles(renameCollection, "{}", "{abd}");
|
||||
return renameCollection.Count;
|
||||
}
|
||||
|
||||
private static bool GetIsNotUniqueAndNeedsReview(string file, List<string> collection)
|
||||
{
|
||||
bool result = false;
|
||||
@ -175,13 +110,15 @@ internal abstract partial class XDirectory
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static List<FilePair> GetFiles(Properties.IPropertyConfiguration propertyConfiguration, ReadOnlyCollection<ReadOnlyCollection<FilePath>> filePathsCollection, IReadOnlyDictionary<string, List<string>> fileNamesToFiles, string extension, IReadOnlyDictionary<string, List<string>> compareFileNamesToFiles)
|
||||
internal static List<FilePair> GetFiles(Properties.IPropertyConfiguration propertyConfiguration, ReadOnlyCollection<ReadOnlyCollection<FilePath>> filePathsCollection, IReadOnlyDictionary<string, List<string>> fileNamesToFiles, IReadOnlyDictionary<string, List<string>> compareFileNamesToFiles)
|
||||
{
|
||||
List<FilePair> results = [];
|
||||
string? match;
|
||||
FilePair filePair;
|
||||
bool uniqueFileName;
|
||||
List<string>? collection;
|
||||
bool? isNotUniqueAndNeedsReview;
|
||||
string fileNameWithoutExtensionMinusOne;
|
||||
foreach (ReadOnlyCollection<FilePath> filePaths in filePathsCollection)
|
||||
{
|
||||
foreach (FilePath filePath in filePaths)
|
||||
@ -189,25 +126,43 @@ internal abstract partial class XDirectory
|
||||
isNotUniqueAndNeedsReview = null;
|
||||
if (propertyConfiguration.IgnoreExtensions.Contains(filePath.ExtensionLowered))
|
||||
continue;
|
||||
if (!fileNamesToFiles.TryGetValue(filePath.Name, out collection))
|
||||
fileNameWithoutExtensionMinusOne = filePath.NameWithoutExtension[..^1];
|
||||
if (!fileNamesToFiles.TryGetValue(fileNameWithoutExtensionMinusOne, out collection))
|
||||
throw new Exception();
|
||||
uniqueFileName = collection.Count == 1;
|
||||
if (!uniqueFileName)
|
||||
isNotUniqueAndNeedsReview = GetIsNotUniqueAndNeedsReview(filePath.FullName, collection);
|
||||
if (!compareFileNamesToFiles.TryGetValue(string.Concat(filePath.Name, extension), out collection))
|
||||
results.Add(new(filePath.FullName, uniqueFileName, isNotUniqueAndNeedsReview, [], null));
|
||||
if (!compareFileNamesToFiles.TryGetValue(fileNameWithoutExtensionMinusOne, out collection))
|
||||
filePair = new(Path: filePath.FullName,
|
||||
IsUnique: uniqueFileName,
|
||||
IsNotUniqueAndNeedsReview: isNotUniqueAndNeedsReview,
|
||||
Collection: [],
|
||||
Match: null);
|
||||
else
|
||||
{
|
||||
if (collection.Count == 0)
|
||||
results.Add(new(filePath.FullName, uniqueFileName, isNotUniqueAndNeedsReview, collection, null));
|
||||
filePair = new(Path: filePath.FullName,
|
||||
IsUnique: uniqueFileName,
|
||||
IsNotUniqueAndNeedsReview: isNotUniqueAndNeedsReview,
|
||||
Collection: collection,
|
||||
Match: null);
|
||||
else if (uniqueFileName && collection.Count == 1)
|
||||
results.Add(new(filePath.FullName, uniqueFileName, isNotUniqueAndNeedsReview, collection, collection.First()));
|
||||
filePair = new(Path: filePath.FullName,
|
||||
IsUnique: uniqueFileName,
|
||||
IsNotUniqueAndNeedsReview: isNotUniqueAndNeedsReview,
|
||||
Collection: collection,
|
||||
Match: collection.First());
|
||||
else
|
||||
{
|
||||
match = GetMatch(filePath.FullName, collection);
|
||||
results.Add(new(filePath.FullName, uniqueFileName, isNotUniqueAndNeedsReview, collection, match));
|
||||
filePair = new(Path: filePath.FullName,
|
||||
IsUnique: uniqueFileName,
|
||||
IsNotUniqueAndNeedsReview: isNotUniqueAndNeedsReview,
|
||||
Collection: collection,
|
||||
Match: match);
|
||||
}
|
||||
}
|
||||
results.Add(filePair);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
@ -458,6 +413,7 @@ internal abstract partial class XDirectory
|
||||
{
|
||||
List<string> results = [];
|
||||
FileInfo fileInfo;
|
||||
List<string> distinctExtensions = [];
|
||||
foreach ((FilePath filePath, string to) in toDoCollection)
|
||||
{
|
||||
tick?.Invoke();
|
||||
@ -471,6 +427,8 @@ internal abstract partial class XDirectory
|
||||
results.Add(filePath.NameWithoutExtension);
|
||||
try
|
||||
{
|
||||
if (!distinctExtensions.Contains(filePath.ExtensionLowered))
|
||||
distinctExtensions.Add(filePath.ExtensionLowered);
|
||||
if (move || moveBack)
|
||||
File.Move(filePath.FullName, to);
|
||||
else
|
||||
|
Reference in New Issue
Block a user