Removed IntelligentIdRecord
This commit is contained in:
parent
1f00696bf3
commit
48eea2edbd
@ -144,9 +144,10 @@ public class A_Metadata
|
|||||||
FileInfo fileInfo;
|
FileInfo fileInfo;
|
||||||
FilePath? ffmpegFilePath;
|
FilePath? ffmpegFilePath;
|
||||||
ExifDirectory exifDirectory;
|
ExifDirectory exifDirectory;
|
||||||
|
FileHolder fileHolder = new(file);
|
||||||
ReadOnlyCollection<string> ffmpegFiles;
|
ReadOnlyCollection<string> ffmpegFiles;
|
||||||
DeterministicHashCode deterministicHashCode;
|
DeterministicHashCode deterministicHashCode;
|
||||||
FilePath filePath = IId.GetFilePath(renameConfiguration.MetadataConfiguration, file, index: null);
|
FilePath filePath = FilePath.Get(renameConfiguration.MetadataConfiguration, fileHolder, index: null);
|
||||||
if (!renameConfiguration.SkipIdFiles || filePath.Id is null || !filePath.IsIntelligentIdFormat && filePath.SortOrder is not null)
|
if (!renameConfiguration.SkipIdFiles || filePath.Id is null || !filePath.IsIntelligentIdFormat && filePath.SortOrder is not null)
|
||||||
{
|
{
|
||||||
(ffmpegFiles, ffmpegFilePath) = rename.ConvertAndGetFfmpegFiles(renameConfiguration, filePath);
|
(ffmpegFiles, ffmpegFilePath) = rename.ConvertAndGetFfmpegFiles(renameConfiguration, filePath);
|
||||||
|
@ -61,7 +61,8 @@ public class Rename : IRename
|
|||||||
results.AddRange(Directory.GetFiles(filePath.DirectoryName, $"{filePath.Name}-*.jpg", SearchOption.TopDirectoryOnly));
|
results.AddRange(Directory.GetFiles(filePath.DirectoryName, $"{filePath.Name}-*.jpg", SearchOption.TopDirectoryOnly));
|
||||||
if (results.Count == 0)
|
if (results.Count == 0)
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
result = IId.GetFilePath(renameConfiguration.MetadataConfiguration, results[0], index: null);
|
FileHolder fileHolder = new(results[0]);
|
||||||
|
result = FilePath.Get(renameConfiguration.MetadataConfiguration, fileHolder, index: null);
|
||||||
if (!result.Name.EndsWith("-0001.jpg"))
|
if (!result.Name.EndsWith("-0001.jpg"))
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
isValidImageFormatExtension = renameConfiguration.ValidImageFormatExtensions.Contains(result.ExtensionLowered);
|
isValidImageFormatExtension = renameConfiguration.ValidImageFormatExtensions.Contains(result.ExtensionLowered);
|
||||||
@ -114,6 +115,7 @@ public class Rename : IRename
|
|||||||
int index = -1;
|
int index = -1;
|
||||||
FileInfo fileInfo;
|
FileInfo fileInfo;
|
||||||
FilePath filePath;
|
FilePath filePath;
|
||||||
|
FileHolder fileHolder;
|
||||||
FilePath? ffmpegFilePath;
|
FilePath? ffmpegFilePath;
|
||||||
ExifDirectory exifDirectory;
|
ExifDirectory exifDirectory;
|
||||||
ReadOnlyCollection<string> ffmpegFiles;
|
ReadOnlyCollection<string> ffmpegFiles;
|
||||||
@ -122,7 +124,8 @@ public class Rename : IRename
|
|||||||
{
|
{
|
||||||
index += 1;
|
index += 1;
|
||||||
rename.Tick();
|
rename.Tick();
|
||||||
filePath = IId.GetFilePath(renameConfiguration.MetadataConfiguration, file, index);
|
fileHolder = new(file);
|
||||||
|
filePath = FilePath.Get(renameConfiguration.MetadataConfiguration, fileHolder, index);
|
||||||
if (renameConfiguration.SkipIdFiles && filePath.Id is not null && (filePath.IsIntelligentIdFormat || filePath.SortOrder is not null))
|
if (renameConfiguration.SkipIdFiles && filePath.Id is not null && (filePath.IsIntelligentIdFormat || filePath.SortOrder is not null))
|
||||||
continue;
|
continue;
|
||||||
(ffmpegFiles, ffmpegFilePath) = rename.ConvertAndGetFfmpegFiles(renameConfiguration, filePath);
|
(ffmpegFiles, ffmpegFilePath) = rename.ConvertAndGetFfmpegFiles(renameConfiguration, filePath);
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
using View_by_Distance.Shared.Models.Stateless.Methods;
|
||||||
|
|
||||||
namespace View_by_Distance.Shared.Models;
|
namespace View_by_Distance.Shared.Models;
|
||||||
|
|
||||||
public record FilePath(string DirectoryName,
|
public record FilePath(long CreationTicks,
|
||||||
|
string DirectoryName,
|
||||||
string ExtensionLowered,
|
string ExtensionLowered,
|
||||||
string FileNameFirstSegment,
|
string FileNameFirstSegment,
|
||||||
string FullName,
|
string FullName,
|
||||||
int? Id,
|
int? Id,
|
||||||
bool IsIntelligentIdFormat,
|
bool IsIntelligentIdFormat,
|
||||||
|
long LastWriteTicks,
|
||||||
|
long Length,
|
||||||
string Name,
|
string Name,
|
||||||
string NameWithoutExtension,
|
string NameWithoutExtension,
|
||||||
int? SortOrder)
|
int? SortOrder)
|
||||||
@ -20,6 +24,59 @@ public record FilePath(string DirectoryName,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static FilePath Get(MetadataConfiguration metadataConfiguration, FileHolder fileHolder, int? index)
|
||||||
|
{
|
||||||
|
if (fileHolder.CreationTime is null)
|
||||||
|
throw new NullReferenceException(nameof(fileHolder.CreationTime));
|
||||||
|
if (fileHolder.LastWriteTime is null)
|
||||||
|
throw new NullReferenceException(nameof(fileHolder.LastWriteTime));
|
||||||
|
if (fileHolder.Length is null)
|
||||||
|
throw new NullReferenceException(nameof(fileHolder.Length));
|
||||||
|
FilePath result;
|
||||||
|
int? id;
|
||||||
|
int? sortOder;
|
||||||
|
string fileNameFirstSegment = fileHolder.Name.Split('.')[0];
|
||||||
|
int sortOrderOnlyLengthIndex = metadataConfiguration.Offset.ToString().Length;
|
||||||
|
string fileDirectoryName = fileHolder.DirectoryName ?? throw new NullReferenceException();
|
||||||
|
bool fileNameFirstSegmentIsIntelligentIdFormat = IId.NameWithoutExtensionIsIntelligentIdFormat(metadataConfiguration, fileNameFirstSegment);
|
||||||
|
bool fileNameFirstSegmentIsPaddedIntelligentIdFormat = IId.NameWithoutExtensionIsPaddedIntelligentIdFormat(metadataConfiguration, sortOrderOnlyLengthIndex, fileNameFirstSegment);
|
||||||
|
bool fileNameFirstSegmentIsIdFormat = !fileNameFirstSegmentIsPaddedIntelligentIdFormat && !fileNameFirstSegmentIsIntelligentIdFormat && IId.NameWithoutExtensionIsIdFormat(metadataConfiguration, fileHolder);
|
||||||
|
if (!fileNameFirstSegmentIsIdFormat && !fileNameFirstSegmentIsIntelligentIdFormat && !fileNameFirstSegmentIsPaddedIntelligentIdFormat)
|
||||||
|
(id, sortOder) = (null, null);
|
||||||
|
else if (fileNameFirstSegmentIsIntelligentIdFormat)
|
||||||
|
(id, sortOder) = (IId.GetId(metadataConfiguration, fileNameFirstSegment), null);
|
||||||
|
else if (fileNameFirstSegmentIsPaddedIntelligentIdFormat)
|
||||||
|
{
|
||||||
|
if (!int.TryParse(fileNameFirstSegment[..sortOrderOnlyLengthIndex], out int absoluteValueOfSortOrder))
|
||||||
|
(id, sortOder) = (null, null);
|
||||||
|
else
|
||||||
|
(id, sortOder) = (IId.GetId(metadataConfiguration, fileNameFirstSegment[sortOrderOnlyLengthIndex..]), absoluteValueOfSortOrder);
|
||||||
|
}
|
||||||
|
else if (fileNameFirstSegmentIsIdFormat)
|
||||||
|
{
|
||||||
|
if (index is null)
|
||||||
|
throw new NullReferenceException(nameof(index));
|
||||||
|
if (!int.TryParse(fileNameFirstSegment, out int valueOfFileNameFirstSegment))
|
||||||
|
throw new NotSupportedException();
|
||||||
|
(id, sortOder) = (valueOfFileNameFirstSegment, metadataConfiguration.Offset + index);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw new NotSupportedException();
|
||||||
|
result = new(fileHolder.CreationTime.Value.Ticks,
|
||||||
|
fileDirectoryName,
|
||||||
|
fileHolder.ExtensionLowered,
|
||||||
|
fileNameFirstSegment,
|
||||||
|
fileHolder.FullName,
|
||||||
|
id,
|
||||||
|
fileNameFirstSegmentIsIntelligentIdFormat,
|
||||||
|
fileHolder.LastWriteTime.Value.Ticks,
|
||||||
|
fileHolder.Length.Value,
|
||||||
|
fileHolder.Name,
|
||||||
|
fileHolder.NameWithoutExtension,
|
||||||
|
sortOder);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
using System.Text.Json;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace View_by_Distance.Shared.Models;
|
|
||||||
|
|
||||||
public record IntelligentIdRecord(int Key,
|
|
||||||
char GroupChar2,
|
|
||||||
char GroupChar1,
|
|
||||||
string Reverse)
|
|
||||||
{
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
string result = JsonSerializer.Serialize(this, IntelligentIdRecordSourceGenerationContext.Default.IntelligentIdRecord);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
||||||
[JsonSerializable(typeof(IntelligentIdRecord))]
|
|
||||||
internal partial class IntelligentIdRecordSourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
|
@ -1,33 +1,31 @@
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using View_by_Distance.Shared.Models.Stateless.Methods;
|
|
||||||
|
|
||||||
namespace View_by_Distance.Shared.Models.Stateless;
|
namespace View_by_Distance.Shared.Models.Stateless;
|
||||||
|
|
||||||
internal abstract class Id
|
internal abstract class Id
|
||||||
{
|
{
|
||||||
|
|
||||||
internal static bool NameWithoutExtensionIsIdFormat(string fileNameFirstSegment)
|
internal static bool NameWithoutExtensionIsIdFormat(MetadataConfiguration metadataConfiguration, string fileNameFirstSegment)
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
int intMinValueLength = int.MinValue.ToString().Length;
|
if (fileNameFirstSegment.Length < 5 || fileNameFirstSegment.Length > metadataConfiguration.IntMinValueLength)
|
||||||
if (fileNameFirstSegment.Length < 5 || fileNameFirstSegment.Length > intMinValueLength)
|
|
||||||
result = false;
|
result = false;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool skipOneAllAreNumbers = fileNameFirstSegment[1..].All(l => char.IsNumber(l));
|
bool skipOneAllAreNumbers = fileNameFirstSegment[1..].All(char.IsNumber);
|
||||||
result = (skipOneAllAreNumbers && fileNameFirstSegment[0] == '-') || (skipOneAllAreNumbers && char.IsNumber(fileNameFirstSegment[0]));
|
result = (skipOneAllAreNumbers && fileNameFirstSegment[0] == '-') || (skipOneAllAreNumbers && char.IsNumber(fileNameFirstSegment[0]));
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int GetId(MetadataConfiguration metadataConfiguration, string intelligentId)
|
internal static int GetId(MetadataConfiguration metadataConfiguration, string intelligentId)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
StringBuilder results = new();
|
StringBuilder results = new();
|
||||||
if (metadataConfiguration.IntMinValueLength < 4)
|
if (metadataConfiguration.IntMinValueLength < (metadataConfiguration.ResultConfiguration.ResultAllInOneSubdirectoryLength + 2))
|
||||||
throw new NotSupportedException();
|
throw new NotSupportedException();
|
||||||
for (int j = intelligentId.Length - 4; j > -1; j--)
|
for (int i = intelligentId.Length - (metadataConfiguration.ResultConfiguration.ResultAllInOneSubdirectoryLength + 2); i > -1; i--)
|
||||||
_ = results.Append(intelligentId[j]);
|
_ = results.Append(intelligentId[i]);
|
||||||
_ = results.Append(intelligentId[^3]).Append(intelligentId[^2]);
|
_ = results.Append(intelligentId[^3]).Append(intelligentId[^2]);
|
||||||
result = int.Parse(results.ToString());
|
result = int.Parse(results.ToString());
|
||||||
if (intelligentId[^1] is '1' or '2')
|
if (intelligentId[^1] is '1' or '2')
|
||||||
@ -37,14 +35,15 @@ internal abstract class Id
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IntelligentIdRecord GetIntelligentIdRecord(MetadataConfiguration metadataConfiguration, long id, bool ignore)
|
internal static string GetIntelligentId(MetadataConfiguration metadataConfiguration, long id, bool ignore)
|
||||||
{
|
{
|
||||||
IntelligentIdRecord result;
|
string result;
|
||||||
StringBuilder stringBuilder = new();
|
StringBuilder stringBuilder = new();
|
||||||
if (metadataConfiguration.IntMinValueLength < 4)
|
if (metadataConfiguration.IntMinValueLength < (metadataConfiguration.ResultConfiguration.ResultAllInOneSubdirectoryLength + 2))
|
||||||
throw new NotSupportedException();
|
throw new NotSupportedException();
|
||||||
int key;
|
int key;
|
||||||
string value;
|
string value;
|
||||||
|
List<char> resultAllInOneSubdirectoryChars = [];
|
||||||
if (id > -1)
|
if (id > -1)
|
||||||
{
|
{
|
||||||
key = ignore ? 8 : 9;
|
key = ignore ? 8 : 9;
|
||||||
@ -55,20 +54,18 @@ internal abstract class Id
|
|||||||
key = ignore ? 2 : 1;
|
key = ignore ? 2 : 1;
|
||||||
value = id.ToString()[1..].PadLeft(metadataConfiguration.IntMinValueLength, '0');
|
value = id.ToString()[1..].PadLeft(metadataConfiguration.IntMinValueLength, '0');
|
||||||
}
|
}
|
||||||
for (int j = value.Length - 3; j > -1; j--)
|
for (int i = value.Length - metadataConfiguration.ResultConfiguration.ResultAllInOneSubdirectoryLength - 1; i > -1; i--)
|
||||||
_ = stringBuilder.Append(value[j]);
|
_ = stringBuilder.Append(value[i]);
|
||||||
result = new(key, value[^2], value[^1], stringBuilder.ToString());
|
for (int i = value.Length - metadataConfiguration.ResultConfiguration.ResultAllInOneSubdirectoryLength; i < value.Length; i++)
|
||||||
|
resultAllInOneSubdirectoryChars.Add(value[i]);
|
||||||
|
result = $"{stringBuilder}{string.Join(string.Empty, resultAllInOneSubdirectoryChars)}{key}";
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetIntelligentId(IntelligentIdRecord intelligentId) =>
|
|
||||||
$"{intelligentId.Reverse}{intelligentId.GroupChar2}{intelligentId.GroupChar1}{intelligentId.Key}";
|
|
||||||
|
|
||||||
internal static string GetPaddedId(MetadataConfiguration metadataConfiguration, int index, int id)
|
internal static string GetPaddedId(MetadataConfiguration metadataConfiguration, int index, int id)
|
||||||
{
|
{
|
||||||
string result;
|
string result;
|
||||||
IntelligentIdRecord intelligentIdRecord = GetIntelligentIdRecord(metadataConfiguration, id, ignore: false);
|
string intelligentId = GetIntelligentId(metadataConfiguration, id, ignore: false);
|
||||||
string intelligentId = GetIntelligentId(intelligentIdRecord);
|
|
||||||
int check = GetId(metadataConfiguration, intelligentId);
|
int check = GetId(metadataConfiguration, intelligentId);
|
||||||
if (check != id)
|
if (check != id)
|
||||||
throw new NotSupportedException();
|
throw new NotSupportedException();
|
||||||
@ -76,46 +73,6 @@ internal abstract class Id
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static FilePath GetFilePath(MetadataConfiguration metadataConfiguration, string file, int? index)
|
|
||||||
{
|
|
||||||
FilePath result;
|
|
||||||
int? id;
|
|
||||||
int? sortOder;
|
|
||||||
string fileName = Path.GetFileName(file);
|
|
||||||
string[] segments = Path.GetFileName(fileName).Split('.');
|
|
||||||
string fileExtensionLowered = Path.GetExtension(file).ToLower();
|
|
||||||
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file);
|
|
||||||
string fileDirectoryName = Path.GetDirectoryName(file) ?? throw new NullReferenceException();
|
|
||||||
short sortOrderOnlyLengthIndex = IId.GetSortOrderOnlyLengthIndex(metadataConfiguration);
|
|
||||||
string fileNameFirstSegment = segments[0];
|
|
||||||
bool fileNameFirstSegmentIsIntelligentIdFormat = IId.NameWithoutExtensionIsIntelligentIdFormat(metadataConfiguration, fileNameFirstSegment);
|
|
||||||
bool fileNameFirstSegmentIsPaddedIntelligentIdFormat = IId.NameWithoutExtensionIsPaddedIntelligentIdFormat(metadataConfiguration, sortOrderOnlyLengthIndex, fileNameFirstSegment);
|
|
||||||
bool fileNameFirstSegmentIsIdFormat = !fileNameFirstSegmentIsPaddedIntelligentIdFormat && !fileNameFirstSegmentIsIntelligentIdFormat && IId.NameWithoutExtensionIsIdFormat(fileNameFirstSegment);
|
|
||||||
if (fileNameFirstSegmentIsIdFormat)
|
|
||||||
{
|
|
||||||
if (index is null)
|
|
||||||
throw new NullReferenceException(nameof(index));
|
|
||||||
if (!int.TryParse(fileNameFirstSegment, out int valueOfFileNameFirstSegment))
|
|
||||||
throw new NotSupportedException();
|
|
||||||
(id, sortOder) = (valueOfFileNameFirstSegment, metadataConfiguration.Offset + index);
|
|
||||||
}
|
|
||||||
else if (!fileNameFirstSegmentIsIntelligentIdFormat && !fileNameFirstSegmentIsPaddedIntelligentIdFormat)
|
|
||||||
(id, sortOder) = (null, null);
|
|
||||||
else if (fileNameFirstSegmentIsIntelligentIdFormat)
|
|
||||||
(id, sortOder) = (GetId(metadataConfiguration, fileNameFirstSegment), null);
|
|
||||||
else if (fileNameFirstSegmentIsPaddedIntelligentIdFormat)
|
|
||||||
{
|
|
||||||
if (!int.TryParse(fileNameFirstSegment[..sortOrderOnlyLengthIndex], out int absoluteValueOfSortOrder))
|
|
||||||
(id, sortOder) = (null, null);
|
|
||||||
else
|
|
||||||
(id, sortOder) = (GetId(metadataConfiguration, fileNameFirstSegment[sortOrderOnlyLengthIndex..]), absoluteValueOfSortOrder);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
throw new NotSupportedException();
|
|
||||||
result = new(fileDirectoryName, fileExtensionLowered, fileNameFirstSegment, file, id, fileNameFirstSegmentIsIntelligentIdFormat, fileName, fileNameWithoutExtension, sortOder);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static int GetDeterministicHashCode(byte[] value)
|
internal static int GetDeterministicHashCode(byte[] value)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
@ -3,10 +3,15 @@ namespace View_by_Distance.Shared.Models.Stateless.Methods;
|
|||||||
public interface IId
|
public interface IId
|
||||||
{
|
{
|
||||||
|
|
||||||
string TestStatic_GetIntelligentId(IntelligentIdRecord intelligentId) =>
|
string TestStatic_GetIntelligentId(MetadataConfiguration metadataConfiguration, long id, bool ignore) =>
|
||||||
GetIntelligentId(intelligentId);
|
GetIntelligentId(metadataConfiguration, id, ignore);
|
||||||
static string GetIntelligentId(IntelligentIdRecord intelligentId) =>
|
static string GetIntelligentId(MetadataConfiguration metadataConfiguration, long id, bool ignore) =>
|
||||||
$"{intelligentId.Reverse}{intelligentId.GroupChar2}{intelligentId.GroupChar1}{intelligentId.Key}";
|
Id.GetIntelligentId(metadataConfiguration, id, ignore);
|
||||||
|
|
||||||
|
int TestStatic_GetId(MetadataConfiguration metadataConfiguration, string intelligentId) =>
|
||||||
|
GetId(metadataConfiguration, intelligentId);
|
||||||
|
static int GetId(MetadataConfiguration metadataConfiguration, string intelligentId) =>
|
||||||
|
Id.GetId(metadataConfiguration, intelligentId);
|
||||||
|
|
||||||
string TestStatic_GetPaddedId(MetadataConfiguration metadataConfiguration, int index, int id) =>
|
string TestStatic_GetPaddedId(MetadataConfiguration metadataConfiguration, int index, int id) =>
|
||||||
GetPaddedId(metadataConfiguration, index, id);
|
GetPaddedId(metadataConfiguration, index, id);
|
||||||
@ -18,27 +23,17 @@ public interface IId
|
|||||||
static bool NameWithoutExtensionIsIntelligentIdFormat(MetadataConfiguration metadataConfiguration, string fileNameFirstSegment) =>
|
static bool NameWithoutExtensionIsIntelligentIdFormat(MetadataConfiguration metadataConfiguration, string fileNameFirstSegment) =>
|
||||||
fileNameFirstSegment.Length - 1 == metadataConfiguration.IntMinValueLength && fileNameFirstSegment[^1] is '1' or '2' or '8' or '9' && fileNameFirstSegment.All(char.IsNumber);
|
fileNameFirstSegment.Length - 1 == metadataConfiguration.IntMinValueLength && fileNameFirstSegment[^1] is '1' or '2' or '8' or '9' && fileNameFirstSegment.All(char.IsNumber);
|
||||||
|
|
||||||
bool TestStatic_NameWithoutExtensionIsPaddedIntelligentIdFormat(MetadataConfiguration metadataConfiguration, short sortOrderOnlyLengthIndex, string fileNameFirstSegment) =>
|
bool TestStatic_NameWithoutExtensionIsPaddedIntelligentIdFormat(MetadataConfiguration metadataConfiguration, int sortOrderOnlyLengthIndex, string fileNameFirstSegment) =>
|
||||||
NameWithoutExtensionIsPaddedIntelligentIdFormat(metadataConfiguration, sortOrderOnlyLengthIndex, fileNameFirstSegment);
|
NameWithoutExtensionIsPaddedIntelligentIdFormat(metadataConfiguration, sortOrderOnlyLengthIndex, fileNameFirstSegment);
|
||||||
static bool NameWithoutExtensionIsPaddedIntelligentIdFormat(MetadataConfiguration metadataConfiguration, short sortOrderOnlyLengthIndex, string fileNameFirstSegment) =>
|
static bool NameWithoutExtensionIsPaddedIntelligentIdFormat(MetadataConfiguration metadataConfiguration, int sortOrderOnlyLengthIndex, string fileNameFirstSegment) =>
|
||||||
fileNameFirstSegment.Length == metadataConfiguration.IntMinValueLength + sortOrderOnlyLengthIndex + 1
|
fileNameFirstSegment.Length == metadataConfiguration.IntMinValueLength + sortOrderOnlyLengthIndex + 1
|
||||||
&& fileNameFirstSegment[^1] is '1' or '2' or '8' or '9'
|
&& fileNameFirstSegment[^1] is '1' or '2' or '8' or '9'
|
||||||
&& fileNameFirstSegment.All(char.IsNumber);
|
&& fileNameFirstSegment.All(char.IsNumber);
|
||||||
|
|
||||||
bool TestStatic_NameWithoutExtensionIsIdFormat(string fileNameFirstSegment) =>
|
bool TestStatic_NameWithoutExtensionIsIdFormat(MetadataConfiguration metadataConfiguration, FileHolder fileHolder) =>
|
||||||
NameWithoutExtensionIsIdFormat(fileNameFirstSegment);
|
NameWithoutExtensionIsIdFormat(metadataConfiguration, fileHolder);
|
||||||
static bool NameWithoutExtensionIsIdFormat(string fileNameFirstSegment) =>
|
static bool NameWithoutExtensionIsIdFormat(MetadataConfiguration metadataConfiguration, FileHolder fileHolder) =>
|
||||||
Id.NameWithoutExtensionIsIdFormat(fileNameFirstSegment);
|
Id.NameWithoutExtensionIsIdFormat(metadataConfiguration, fileHolder.NameWithoutExtension.Split('.')[0]);
|
||||||
|
|
||||||
short TestStatic_GetSortOrderOnlyLengthIndex(MetadataConfiguration metadataConfiguration) =>
|
|
||||||
GetSortOrderOnlyLengthIndex(metadataConfiguration);
|
|
||||||
static short GetSortOrderOnlyLengthIndex(MetadataConfiguration metadataConfiguration) =>
|
|
||||||
(short)metadataConfiguration.Offset.ToString().Length;
|
|
||||||
|
|
||||||
FilePath TestStatic_GetFilePath(MetadataConfiguration metadataConfiguration, string file, int? index) =>
|
|
||||||
GetFilePath(metadataConfiguration, file, index);
|
|
||||||
static FilePath GetFilePath(MetadataConfiguration metadataConfiguration, string file, int? index) =>
|
|
||||||
Id.GetFilePath(metadataConfiguration, file, index);
|
|
||||||
|
|
||||||
int TestStatic_GetDeterministicHashCode(byte[] value) =>
|
int TestStatic_GetDeterministicHashCode(byte[] value) =>
|
||||||
GetDeterministicHashCode(value);
|
GetDeterministicHashCode(value);
|
||||||
|
@ -76,9 +76,9 @@ public interface IPath
|
|||||||
static (string, int) GetDirectoryNameAndIndex(ResultConfiguration resultConfiguration, int id) =>
|
static (string, int) GetDirectoryNameAndIndex(ResultConfiguration resultConfiguration, int id) =>
|
||||||
XPath.GetDirectoryNameAndIndex(resultConfiguration, id);
|
XPath.GetDirectoryNameAndIndex(resultConfiguration, id);
|
||||||
|
|
||||||
ReadOnlyDictionary<int, ReadOnlyDictionary<string, string[]>> TestStatic_GetKeyValuePairs(ResultConfiguration resultConfiguration, string? resultsFullGroupDirectory, string[]? directories) =>
|
ReadOnlyDictionary<int, ReadOnlyDictionary<string, string[]>> TestStatic_GetKeyValuePairs(ResultConfiguration resultConfiguration, string? resultsFullGroupDirectory, string[]? jsonGroups) =>
|
||||||
GetKeyValuePairs(resultConfiguration, resultsFullGroupDirectory, directories);
|
GetKeyValuePairs(resultConfiguration, resultsFullGroupDirectory, jsonGroups);
|
||||||
static ReadOnlyDictionary<int, ReadOnlyDictionary<string, string[]>> GetKeyValuePairs(ResultConfiguration resultConfiguration, string? resultsFullGroupDirectory, string[]? directories) =>
|
static ReadOnlyDictionary<int, ReadOnlyDictionary<string, string[]>> GetKeyValuePairs(ResultConfiguration resultConfiguration, string? resultsFullGroupDirectory, string[]? jsonGroups) =>
|
||||||
XPath.GetKeyValuePairs(resultConfiguration, resultsFullGroupDirectory, directories);
|
XPath.GetKeyValuePairs(resultConfiguration, resultsFullGroupDirectory, jsonGroups);
|
||||||
|
|
||||||
}
|
}
|
@ -324,7 +324,7 @@ internal abstract class XPath
|
|||||||
return new(results);
|
return new(results);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static ReadOnlyDictionary<int, ReadOnlyDictionary<string, string[]>> GetKeyValuePairs(ResultConfiguration resultConfiguration, string? resultsFullGroupDirectory, string[]? directories)
|
internal static ReadOnlyDictionary<int, ReadOnlyDictionary<string, string[]>> GetKeyValuePairs(ResultConfiguration resultConfiguration, string? resultsFullGroupDirectory, string[]? jsonGroups)
|
||||||
{
|
{
|
||||||
Dictionary<int, Dictionary<string, string[]>> results = [];
|
Dictionary<int, Dictionary<string, string[]>> results = [];
|
||||||
string directory;
|
string directory;
|
||||||
@ -339,16 +339,16 @@ internal abstract class XPath
|
|||||||
results.Add(year, []);
|
results.Add(year, []);
|
||||||
if (!results.TryGetValue(year, out keyValuePairs))
|
if (!results.TryGetValue(year, out keyValuePairs))
|
||||||
throw new NullReferenceException(nameof(keyValuePairs));
|
throw new NullReferenceException(nameof(keyValuePairs));
|
||||||
if (directories is not null)
|
if (jsonGroups is not null)
|
||||||
{
|
{
|
||||||
foreach (string key in directories)
|
foreach (string jsonGroup in jsonGroups)
|
||||||
{
|
{
|
||||||
if (resultsFullGroupDirectory is null)
|
if (resultsFullGroupDirectory is null)
|
||||||
continue;
|
continue;
|
||||||
collection.Clear();
|
collection.Clear();
|
||||||
for (int i = 0; i < plusOne; i++)
|
for (int i = 0; i < plusOne; i++)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(key))
|
if (string.IsNullOrEmpty(jsonGroup))
|
||||||
{
|
{
|
||||||
if (i == converted)
|
if (i == converted)
|
||||||
checkDirectory = Path.GetFullPath(Path.Combine(resultsFullGroupDirectory, new('-', resultConfiguration.ResultAllInOneSubdirectoryLength)));
|
checkDirectory = Path.GetFullPath(Path.Combine(resultsFullGroupDirectory, new('-', resultConfiguration.ResultAllInOneSubdirectoryLength)));
|
||||||
@ -357,7 +357,7 @@ internal abstract class XPath
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
directory = Path.Combine(resultsFullGroupDirectory, key, year.ToString());
|
directory = Path.Combine(resultsFullGroupDirectory, jsonGroup);
|
||||||
if (i == converted)
|
if (i == converted)
|
||||||
checkDirectory = Path.GetFullPath(Path.Combine(directory, new('-', resultConfiguration.ResultAllInOneSubdirectoryLength)));
|
checkDirectory = Path.GetFullPath(Path.Combine(directory, new('-', resultConfiguration.ResultAllInOneSubdirectoryLength)));
|
||||||
else
|
else
|
||||||
@ -367,8 +367,8 @@ internal abstract class XPath
|
|||||||
_ = Directory.CreateDirectory(checkDirectory);
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
collection.Add(checkDirectory);
|
collection.Add(checkDirectory);
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(key))
|
if (!string.IsNullOrEmpty(jsonGroup))
|
||||||
keyValuePairs.Add(key, collection.ToArray());
|
keyValuePairs.Add(jsonGroup, collection.ToArray());
|
||||||
else
|
else
|
||||||
keyValuePairs.Add(year.ToString(), collection.ToArray());
|
keyValuePairs.Add(year.ToString(), collection.ToArray());
|
||||||
}
|
}
|
||||||
|
@ -25,13 +25,13 @@ internal abstract class XResult
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void VerifyDirectories(ResultConfiguration resultConfiguration, string dateGroupDirectory, string key)
|
private static void VerifyDirectories(ResultConfiguration resultConfiguration, string dateGroupDirectory, string jsonGroup)
|
||||||
{
|
{
|
||||||
string checkDirectory;
|
string checkDirectory;
|
||||||
int currentYear = DateTime.Now.Year;
|
int currentYear = DateTime.Now.Year;
|
||||||
for (int i = resultConfiguration.EpicYear; i < currentYear + 1; i++)
|
for (int i = resultConfiguration.EpicYear; i < currentYear + 1; i++)
|
||||||
{
|
{
|
||||||
checkDirectory = Path.Combine(dateGroupDirectory, key, i.ToString());
|
checkDirectory = Path.Combine(dateGroupDirectory, jsonGroup, i.ToString());
|
||||||
if (!Directory.Exists(checkDirectory))
|
if (!Directory.Exists(checkDirectory))
|
||||||
_ = Directory.CreateDirectory(checkDirectory);
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user