mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Create and use more passthrough methods
This commit is contained in:
@@ -127,6 +127,81 @@ namespace SabreTools.DatItems
|
||||
return _internal.Read<T>(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public bool? GetBoolFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_internal.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _internal.ReadBool(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public double? GetDoubleFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_internal.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _internal.ReadDouble(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public long? GetInt64FieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_internal.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _internal.ReadLong(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public string? GetStringFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_internal.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _internal.ReadString(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public string[]? GetStringArrayFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_internal.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _internal.ReadStringArray(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the value from a field based on the type provided
|
||||
/// </summary>
|
||||
@@ -282,7 +357,7 @@ namespace SabreTools.DatItems
|
||||
{
|
||||
var currentMachine = GetFieldValue<Machine>(DatItem.MachineKey);
|
||||
var lastMachine = lastItem?.GetFieldValue<Machine>(DatItem.MachineKey);
|
||||
if (lastMachine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) == currentMachine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) && lastItem?.GetName() == GetName())
|
||||
if (lastMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) == currentMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) && lastItem?.GetName() == GetName())
|
||||
output = DupeType.External | DupeType.All;
|
||||
else
|
||||
output = DupeType.External | DupeType.Hash;
|
||||
@@ -293,7 +368,7 @@ namespace SabreTools.DatItems
|
||||
{
|
||||
var currentMachine = GetFieldValue<Machine>(DatItem.MachineKey);
|
||||
var lastMachine = lastItem?.GetFieldValue<Machine>(DatItem.MachineKey);
|
||||
if (lastMachine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) == currentMachine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) && lastItem?.GetName() == GetName())
|
||||
if (lastMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) == currentMachine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) && lastItem?.GetName() == GetName())
|
||||
output = DupeType.Internal | DupeType.All;
|
||||
else
|
||||
output = DupeType.Internal | DupeType.Hash;
|
||||
@@ -373,9 +448,9 @@ namespace SabreTools.DatItems
|
||||
key = (norename ? string.Empty
|
||||
: GetFieldValue<Source?>(DatItem.SourceKey)?.Index.ToString().PadLeft(10, '0')
|
||||
+ "-")
|
||||
+ (string.IsNullOrEmpty(GetFieldValue<Machine>(DatItem.MachineKey)?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey))
|
||||
+ (string.IsNullOrEmpty(GetFieldValue<Machine>(DatItem.MachineKey)?.GetStringFieldValue(Models.Metadata.Machine.NameKey))
|
||||
? "Default"
|
||||
: GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)!);
|
||||
: GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)!);
|
||||
if (lower)
|
||||
key = key.ToLowerInvariant();
|
||||
|
||||
@@ -510,8 +585,8 @@ namespace SabreTools.DatItems
|
||||
}
|
||||
|
||||
// If the current machine is a child of the new machine, use the new machine instead
|
||||
if (saveditem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey) == item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)
|
||||
|| saveditem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.RomOfKey) == item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey))
|
||||
if (saveditem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey) == item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)
|
||||
|| saveditem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey) == item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey))
|
||||
{
|
||||
saveditem.CopyMachineInformation(item);
|
||||
saveditem.SetName(item.GetName());
|
||||
@@ -661,7 +736,7 @@ namespace SabreTools.DatItems
|
||||
NaturalComparer nc = new();
|
||||
|
||||
// If machine names match, more refinement is needed
|
||||
if (x.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) == y.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey))
|
||||
if (x.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) == y.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey))
|
||||
{
|
||||
// If item types match, more refinement is needed
|
||||
if (x.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey) == y.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey))
|
||||
@@ -677,7 +752,7 @@ namespace SabreTools.DatItems
|
||||
|
||||
// If item names match, then compare on machine or source, depending on the flag
|
||||
if (xName == yName)
|
||||
return (norename ? nc.Compare(x.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey), y.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)) : (x.GetFieldValue<Source?>(DatItem.SourceKey)?.Index - y.GetFieldValue<Source?>(DatItem.SourceKey)?.Index) ?? 0);
|
||||
return (norename ? nc.Compare(x.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), y.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)) : (x.GetFieldValue<Source?>(DatItem.SourceKey)?.Index - y.GetFieldValue<Source?>(DatItem.SourceKey)?.Index) ?? 0);
|
||||
|
||||
// Otherwise, just sort based on item names
|
||||
return nc.Compare(xName, yName);
|
||||
@@ -692,7 +767,7 @@ namespace SabreTools.DatItems
|
||||
}
|
||||
|
||||
// Otherwise, just sort based on machine name
|
||||
return nc.Compare(x.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey), y.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey));
|
||||
return nc.Compare(x.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), y.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey));
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -756,7 +831,7 @@ namespace SabreTools.DatItems
|
||||
public override string? GetName()
|
||||
{
|
||||
if (NameKey != null)
|
||||
return GetFieldValue<string?>(NameKey);
|
||||
return GetStringFieldValue(NameKey);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace SabreTools.DatItems.Formats
|
||||
{
|
||||
var blank = new Blank();
|
||||
blank.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||
blank.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||
blank.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||
blank.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||
blank.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ namespace SabreTools.DatItems.Formats
|
||||
var part = GetFieldValue<Part?>(DipSwitch.PartKey);
|
||||
return part != null
|
||||
&& (!string.IsNullOrEmpty(part.GetName())
|
||||
|| !string.IsNullOrEmpty(part.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey)));
|
||||
|| !string.IsNullOrEmpty(part.GetStringFieldValue(Models.Metadata.Part.InterfaceKey)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace SabreTools.DatItems.Formats
|
||||
var part = GetFieldValue<Part?>(Disk.PartKey);
|
||||
return part != null
|
||||
&& (!string.IsNullOrEmpty(part.GetName())
|
||||
|| !string.IsNullOrEmpty(part.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey)));
|
||||
|| !string.IsNullOrEmpty(part.GetStringFieldValue(Models.Metadata.Part.InterfaceKey)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,9 +94,9 @@ namespace SabreTools.DatItems.Formats
|
||||
return new BaseFile()
|
||||
{
|
||||
Filename = this.GetName(),
|
||||
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
MD5 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Disk.MD5Key)),
|
||||
SHA1 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)),
|
||||
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
MD5 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Disk.MD5Key)),
|
||||
SHA1 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Disk.SHA1Key)),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ namespace SabreTools.DatItems.Formats
|
||||
rom.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.SetName(this.GetFieldValue<DiskArea?>(Disk.DiskAreaKey)?.GetName());
|
||||
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
||||
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||
|
||||
return rom;
|
||||
@@ -146,11 +146,11 @@ namespace SabreTools.DatItems.Formats
|
||||
switch (bucketedBy)
|
||||
{
|
||||
case ItemKey.MD5:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Disk.MD5Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Disk.MD5Key);
|
||||
break;
|
||||
|
||||
case ItemKey.SHA1:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Disk.SHA1Key);
|
||||
break;
|
||||
|
||||
// Let the base handle generic stuff
|
||||
|
||||
@@ -141,7 +141,7 @@ namespace SabreTools.DatItems.Formats
|
||||
};
|
||||
file.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
file.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
||||
file.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||
file.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||
file.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||
|
||||
return file;
|
||||
@@ -154,7 +154,7 @@ namespace SabreTools.DatItems.Formats
|
||||
{
|
||||
return new BaseFile()
|
||||
{
|
||||
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
CRC = this._crc,
|
||||
MD5 = this._md5,
|
||||
SHA1 = this._sha1,
|
||||
@@ -174,7 +174,7 @@ namespace SabreTools.DatItems.Formats
|
||||
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, MD5);
|
||||
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, SHA1);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, SHA256);
|
||||
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||
|
||||
@@ -57,11 +57,11 @@ namespace SabreTools.DatItems.Formats
|
||||
return new BaseFile()
|
||||
{
|
||||
Filename = this.GetName(),
|
||||
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
MD5 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Media.MD5Key)),
|
||||
SHA1 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Media.SHA1Key)),
|
||||
SHA256 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Media.SHA256Key)),
|
||||
SpamSum = System.Text.Encoding.UTF8.GetBytes(GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey) ?? string.Empty),
|
||||
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
MD5 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Media.MD5Key)),
|
||||
SHA1 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Media.SHA1Key)),
|
||||
SHA256 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Media.SHA256Key)),
|
||||
SpamSum = System.Text.Encoding.UTF8.GetBytes(GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace SabreTools.DatItems.Formats
|
||||
var rom = new Rom(_internal.ConvertToRom()!);
|
||||
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||
|
||||
return rom;
|
||||
@@ -110,19 +110,19 @@ namespace SabreTools.DatItems.Formats
|
||||
switch (bucketedBy)
|
||||
{
|
||||
case ItemKey.MD5:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Media.MD5Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Media.MD5Key);
|
||||
break;
|
||||
|
||||
case ItemKey.SHA1:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Media.SHA1Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Media.SHA1Key);
|
||||
break;
|
||||
|
||||
case ItemKey.SHA256:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Media.SHA256Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Media.SHA256Key);
|
||||
break;
|
||||
|
||||
case ItemKey.SpamSum:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey);
|
||||
key = GetStringFieldValue(Models.Metadata.Media.SpamSumKey);
|
||||
break;
|
||||
|
||||
// Let the base handle generic stuff
|
||||
|
||||
@@ -146,7 +146,7 @@ namespace SabreTools.DatItems.Formats
|
||||
};
|
||||
releaseDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
releaseDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||
releaseDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||
releaseDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||
releaseDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||
releaseDetails.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
||||
|
||||
|
||||
@@ -62,8 +62,8 @@ namespace SabreTools.DatItems.Formats
|
||||
var dataArea = GetFieldValue<DataArea?>(Rom.DataAreaKey);
|
||||
return dataArea != null
|
||||
&& (!string.IsNullOrEmpty(dataArea.GetName())
|
||||
|| dataArea.GetFieldValue<long?>(Models.Metadata.DataArea.SizeKey) != null
|
||||
|| dataArea.GetFieldValue<long?>(Models.Metadata.DataArea.WidthKey) != null
|
||||
|| dataArea.GetInt64FieldValue(Models.Metadata.DataArea.SizeKey) != null
|
||||
|| dataArea.GetInt64FieldValue(Models.Metadata.DataArea.WidthKey) != null
|
||||
|| dataArea.GetFieldValue<Endianness>(Models.Metadata.DataArea.EndiannessKey) != Endianness.NULL);
|
||||
}
|
||||
}
|
||||
@@ -76,7 +76,7 @@ namespace SabreTools.DatItems.Formats
|
||||
var part = GetFieldValue<Part?>(Rom.PartKey);
|
||||
return part != null
|
||||
&& (!string.IsNullOrEmpty(part.GetName())
|
||||
|| !string.IsNullOrEmpty(part.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey)));
|
||||
|| !string.IsNullOrEmpty(part.GetStringFieldValue(Models.Metadata.Part.InterfaceKey)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,16 +125,16 @@ namespace SabreTools.DatItems.Formats
|
||||
return new BaseFile()
|
||||
{
|
||||
Filename = GetName(),
|
||||
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
Date = GetFieldValue<string?>(Models.Metadata.Rom.DateKey),
|
||||
Size = NumberHelper.ConvertToInt64(GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)),
|
||||
CRC = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)),
|
||||
MD5 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Rom.MD5Key)),
|
||||
SHA1 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)),
|
||||
SHA256 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key)),
|
||||
SHA384 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key)),
|
||||
SHA512 = TextHelper.StringToByteArray(GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key)),
|
||||
SpamSum = System.Text.Encoding.UTF8.GetBytes(GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey) ?? string.Empty),
|
||||
Parent = GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
Date = GetStringFieldValue(Models.Metadata.Rom.DateKey),
|
||||
Size = NumberHelper.ConvertToInt64(GetStringFieldValue(Models.Metadata.Rom.SizeKey)),
|
||||
CRC = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Rom.CRCKey)),
|
||||
MD5 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Rom.MD5Key)),
|
||||
SHA1 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Rom.SHA1Key)),
|
||||
SHA256 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Rom.SHA256Key)),
|
||||
SHA384 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Rom.SHA384Key)),
|
||||
SHA512 = TextHelper.StringToByteArray(GetStringFieldValue(Models.Metadata.Rom.SHA512Key)),
|
||||
SpamSum = System.Text.Encoding.UTF8.GetBytes(GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) ?? string.Empty),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -180,31 +180,31 @@ namespace SabreTools.DatItems.Formats
|
||||
switch (bucketedBy)
|
||||
{
|
||||
case ItemKey.CRC:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Rom.CRCKey);
|
||||
key = GetStringFieldValue(Models.Metadata.Rom.CRCKey);
|
||||
break;
|
||||
|
||||
case ItemKey.MD5:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Rom.MD5Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Rom.MD5Key);
|
||||
break;
|
||||
|
||||
case ItemKey.SHA1:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Rom.SHA1Key);
|
||||
break;
|
||||
|
||||
case ItemKey.SHA256:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Rom.SHA256Key);
|
||||
break;
|
||||
|
||||
case ItemKey.SHA384:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Rom.SHA384Key);
|
||||
break;
|
||||
|
||||
case ItemKey.SHA512:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key);
|
||||
key = GetStringFieldValue(Models.Metadata.Rom.SHA512Key);
|
||||
break;
|
||||
|
||||
case ItemKey.SpamSum:
|
||||
key = GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey);
|
||||
key = GetStringFieldValue(Models.Metadata.Rom.SpamSumKey);
|
||||
break;
|
||||
|
||||
// Let the base handle generic stuff
|
||||
|
||||
@@ -138,7 +138,7 @@ namespace SabreTools.DatItems.Formats
|
||||
};
|
||||
serials.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
serials.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||
serials.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||
serials.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||
serials.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||
serials.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
||||
|
||||
|
||||
@@ -181,7 +181,7 @@ namespace SabreTools.DatItems.Formats
|
||||
};
|
||||
sourceDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||
sourceDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||
sourceDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||
sourceDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetBoolFieldValue(DatItem.RemoveKey));
|
||||
sourceDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||
sourceDetails.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
||||
|
||||
|
||||
@@ -130,6 +130,81 @@ namespace SabreTools.DatItems
|
||||
return _machine.Read<T>(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public bool? GetBoolFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_machine.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _machine.ReadBool(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public double? GetDoubleFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_machine.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _machine.ReadDouble(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public long? GetInt64FieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_machine.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _machine.ReadLong(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public string? GetStringFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_machine.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _machine.ReadString(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public string[]? GetStringArrayFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_machine.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _machine.ReadStringArray(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the value from a field based on the type provided
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user