Shared.Models.Properties.IMetadataConfiguration

This commit is contained in:
2023-10-22 12:46:10 -07:00
parent f7573e95e4
commit 42d202e287
17 changed files with 475 additions and 123 deletions

View File

@ -1,3 +1,6 @@
using View_by_Distance.Shared.Models.Properties;
using View_by_Distance.Shared.Models.Stateless.Methods;
namespace View_by_Distance.Shared.Models.Stateless;
internal abstract class Id
@ -17,4 +20,46 @@ internal abstract class Id
return result;
}
internal static NameWithoutExtension GetNameWithoutExtension(IMetadataConfiguration configuration, string file)
{
NameWithoutExtension result;
int? id;
short? multiplier;
char negativeMarker;
int absoluteValueOfId;
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file);
short sortOrderOnlyLengthIndex = IId.GetSortOrderOnlyLengthIndex(configuration.Offset);
bool nameWithoutExtensionIsIdFormat = IId.NameWithoutExtensionIsIdFormat(fileNameWithoutExtension);
bool nameWithoutExtensionIsPaddedIdFormat = IId.NameWithoutExtensionIsPaddedIdFormat(fileNameWithoutExtension, sortOrderOnlyLengthIndex);
if (!nameWithoutExtensionIsIdFormat && !nameWithoutExtensionIsPaddedIdFormat)
id = null;
else if (nameWithoutExtensionIsIdFormat)
{
if (!int.TryParse(fileNameWithoutExtension, out absoluteValueOfId))
id = null;
else
id = absoluteValueOfId;
}
else
{
negativeMarker = fileNameWithoutExtension[sortOrderOnlyLengthIndex - 2];
if (negativeMarker == '7')
multiplier = 1;
else if (negativeMarker == '3')
multiplier = -1;
else
multiplier = null;
if (!int.TryParse(fileNameWithoutExtension[sortOrderOnlyLengthIndex..], out absoluteValueOfId))
id = null;
else
{
id = absoluteValueOfId * multiplier;
if (id is null || !fileNameWithoutExtension.EndsWith(id.Value.ToString()[1..]))
id = null;
}
}
result = new(fileNameWithoutExtension, id, nameWithoutExtensionIsIdFormat, nameWithoutExtensionIsPaddedIdFormat);
return result;
}
}