51 lines
2.6 KiB
C#
51 lines
2.6 KiB
C#
using View_by_Distance.Shared.Models.Stateless.Methods;
|
|
|
|
namespace View_by_Distance.Map.Models.Stateless;
|
|
|
|
internal abstract class LookForAbandonedLogic
|
|
{
|
|
|
|
internal static void LookForAbandoned(Property.Models.Configuration propertyConfiguration, List<int> distinctFilteredIds, string directory, string directoryName)
|
|
{
|
|
string fileNameWithoutExtension;
|
|
bool nameWithoutExtensionIsIdFormat;
|
|
List<string> renameCollection = [];
|
|
bool nameWithoutExtensionIsPaddedIdFormat;
|
|
int sortOrderOnlyLengthIndex = IDirectory.GetSortOrderOnlyLengthIndex(propertyConfiguration.Offset);
|
|
string[] distinctFilteredIdsValues = distinctFilteredIds.Select(l => l.ToString()).ToArray();
|
|
string[] files = Directory.GetFiles(directory, "*", SearchOption.AllDirectories);
|
|
foreach (string file in files)
|
|
{
|
|
fileNameWithoutExtension = Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(file)));
|
|
nameWithoutExtensionIsIdFormat = IProperty.NameWithoutExtensionIsIdFormat(fileNameWithoutExtension);
|
|
nameWithoutExtensionIsPaddedIdFormat = IDirectory.NameWithoutExtensionIsPaddedIdFormat(fileNameWithoutExtension, sortOrderOnlyLengthIndex);
|
|
if (!nameWithoutExtensionIsIdFormat && !nameWithoutExtensionIsPaddedIdFormat)
|
|
continue;
|
|
if (distinctFilteredIdsValues.Contains(fileNameWithoutExtension))
|
|
continue;
|
|
renameCollection.Add(file);
|
|
}
|
|
if (renameCollection.Count > 0)
|
|
{
|
|
if (directoryName.Length == 2)
|
|
IDirectory.MoveFiles(renameCollection, directoryName, $"{directoryName[0]}abd{directoryName[^1]}");
|
|
else if (directoryName.Length == 4)
|
|
IDirectory.MoveFiles(renameCollection, directoryName, $"{directoryName[..2]}abd{directoryName[^2..]}");
|
|
else
|
|
throw new NotSupportedException();
|
|
}
|
|
}
|
|
|
|
internal static void LookForAbandoned(Property.Models.Configuration propertyConfiguration, string bResultsFullGroupDirectory, List<int> distinctFilteredIds)
|
|
{
|
|
string[] directories = Directory.GetDirectories(bResultsFullGroupDirectory, "*", SearchOption.TopDirectoryOnly);
|
|
foreach (string directory in directories)
|
|
{
|
|
string? directoryName = Path.GetFileName(directory);
|
|
if (string.IsNullOrEmpty(directoryName) || (directoryName.Length != 2 && directoryName.Length != 4))
|
|
continue;
|
|
LookForAbandoned(propertyConfiguration, distinctFilteredIds, directory, directoryName);
|
|
}
|
|
}
|
|
|
|
} |