mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Remove DatItemField enum
This commit is contained in:
@@ -897,513 +897,6 @@ namespace SabreTools.Core
|
|||||||
Version,
|
Version,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// List of valid field types within a DatItem
|
|
||||||
/// </summary>
|
|
||||||
public enum DatItemField
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// This is a fake flag that is used for filter only
|
|
||||||
/// </summary>
|
|
||||||
NULL = 0,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("altname", "alt_name", "altromname", "alt_romname", "alt_rom_name")]
|
|
||||||
AltName,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("alttitle", "alt_title", "altromtitle", "alt_romtitle", "alt_rom_title")]
|
|
||||||
AltTitle,
|
|
||||||
|
|
||||||
/// <remarks>Used in Analog</remarks>
|
|
||||||
[Mapping("analog_mask")]
|
|
||||||
Analog_Mask,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("ado_format")]
|
|
||||||
ArchiveDotOrgFormat,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("ado_source")]
|
|
||||||
ArchiveDotOrgSource,
|
|
||||||
|
|
||||||
/// <remarks>Used in DataArea</remarks>
|
|
||||||
[Mapping("areaendinanness", "area_endianness")]
|
|
||||||
AreaEndianness,
|
|
||||||
|
|
||||||
/// <remarks>Used in DataArea and DiskArea</remarks>
|
|
||||||
[Mapping("areaname", "area_name")]
|
|
||||||
AreaName,
|
|
||||||
|
|
||||||
/// <remarks>Used in DataArea</remarks>
|
|
||||||
[Mapping("areasize", "area_size")]
|
|
||||||
AreaSize,
|
|
||||||
|
|
||||||
/// <remarks>Used in DataArea</remarks>
|
|
||||||
[Mapping("areawidth", "area_width")]
|
|
||||||
AreaWidth,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("bios")]
|
|
||||||
Bios,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("boot")]
|
|
||||||
Boot,
|
|
||||||
|
|
||||||
/// <remarks>Used in Archive</remarks>
|
|
||||||
[Mapping("categories")]
|
|
||||||
Categories,
|
|
||||||
|
|
||||||
/// <remarks>Used in Sound</remarks>
|
|
||||||
[Mapping("channels")]
|
|
||||||
Channels,
|
|
||||||
|
|
||||||
/// <remarks>Used in Chip</remarks>
|
|
||||||
[Mapping("chiptype", "chip_type")]
|
|
||||||
ChipType,
|
|
||||||
|
|
||||||
/// <remarks>Used in Chip</remarks>
|
|
||||||
[Mapping("clock")]
|
|
||||||
Clock,
|
|
||||||
|
|
||||||
/// <remarks>Used in Archive</remarks>
|
|
||||||
[Mapping("clone")]
|
|
||||||
Clone,
|
|
||||||
|
|
||||||
/// <remarks>Used in Driver</remarks>
|
|
||||||
[Mapping("cocktailstatus", "cocktail_status")]
|
|
||||||
CocktailStatus,
|
|
||||||
|
|
||||||
/// <remarks>Used in Input</remarks>
|
|
||||||
[Mapping("coins")]
|
|
||||||
Coins,
|
|
||||||
|
|
||||||
/// <remarks>Used in Archive</remarks>
|
|
||||||
[Mapping("complete")]
|
|
||||||
Complete,
|
|
||||||
|
|
||||||
/// <remarks>Used in Condition</remarks>
|
|
||||||
[Mapping("condition_mask")]
|
|
||||||
Condition_Mask,
|
|
||||||
|
|
||||||
/// <remarks>Used in Condition</remarks>
|
|
||||||
[Mapping("condition_relation")]
|
|
||||||
Condition_Relation,
|
|
||||||
|
|
||||||
/// <remarks>Used in Condition</remarks>
|
|
||||||
[Mapping("condition_tag")]
|
|
||||||
Condition_Tag,
|
|
||||||
|
|
||||||
/// <remarks>Used in Condition</remarks>
|
|
||||||
[Mapping("condition_value")]
|
|
||||||
Condition_Value,
|
|
||||||
|
|
||||||
/// <remarks>Used in RamOption</remarks>
|
|
||||||
[Mapping("content")]
|
|
||||||
Content,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_buttons")]
|
|
||||||
Control_Buttons,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_keydelta", "control_key_delta")]
|
|
||||||
Control_KeyDelta,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_maximum")]
|
|
||||||
Control_Maximum,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_minimum")]
|
|
||||||
Control_Minimum,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_player")]
|
|
||||||
Control_Player,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_reqbuttons", "control_req_buttons")]
|
|
||||||
Control_RequiredButtons,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_reverse")]
|
|
||||||
Control_Reverse,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_sensitivity")]
|
|
||||||
Control_Sensitivity,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_type")]
|
|
||||||
Control_Type,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_ways")]
|
|
||||||
Control_Ways,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_ways2")]
|
|
||||||
Control_Ways2,
|
|
||||||
|
|
||||||
/// <remarks>Used in Control</remarks>
|
|
||||||
[Mapping("control_ways3")]
|
|
||||||
Control_Ways3,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("crc", "crc32")]
|
|
||||||
CRC,
|
|
||||||
|
|
||||||
/// <remarks>Used in Release and Rom</remarks>
|
|
||||||
[Mapping("date")]
|
|
||||||
Date,
|
|
||||||
|
|
||||||
/// <remarks>Used in Adjuster, BiosSet, RamOption, and Release</remarks>
|
|
||||||
[Mapping("default")]
|
|
||||||
Default,
|
|
||||||
|
|
||||||
/// <remarks>Used in BiosSet</remarks>
|
|
||||||
[Mapping("description", "biosdescription", "bios_description")]
|
|
||||||
Description,
|
|
||||||
|
|
||||||
/// <remarks>Used in Device</remarks>
|
|
||||||
[Mapping("devicetype", "device_type")]
|
|
||||||
DeviceType,
|
|
||||||
|
|
||||||
/// <remarks>Used in Archive</remarks>
|
|
||||||
[Mapping("devstatus", "dev_status")]
|
|
||||||
DevStatus,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("displaytype", "display_type")]
|
|
||||||
DisplayType,
|
|
||||||
|
|
||||||
/// <remarks>Used in Driver</remarks>
|
|
||||||
[Mapping("emulationstatus", "emulation_status")]
|
|
||||||
EmulationStatus,
|
|
||||||
|
|
||||||
/// <remarks>Used in Extension</remarks>
|
|
||||||
[Mapping("extension_name")]
|
|
||||||
Extension_Name,
|
|
||||||
|
|
||||||
/// <remarks>Used in Feature</remarks>
|
|
||||||
[Mapping("featureoverall", "feature_overall")]
|
|
||||||
FeatureOverall,
|
|
||||||
|
|
||||||
/// <remarks>Used in Feature</remarks>
|
|
||||||
[Mapping("featurestatus", "feature_status")]
|
|
||||||
FeatureStatus,
|
|
||||||
|
|
||||||
/// <remarks>Used in Feature</remarks>
|
|
||||||
[Mapping("featuretype", "feature_type")]
|
|
||||||
FeatureType,
|
|
||||||
|
|
||||||
/// <remarks>Used in SoftwareList</remarks>
|
|
||||||
[Mapping("filter")]
|
|
||||||
Filter,
|
|
||||||
|
|
||||||
/// <remarks>Used in Device</remarks>
|
|
||||||
[Mapping("fixedimage", "fixed_image")]
|
|
||||||
FixedImage,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("flipx")]
|
|
||||||
FlipX,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("hbend")]
|
|
||||||
HBEnd,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("hbstart")]
|
|
||||||
HBStart,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("height")]
|
|
||||||
Height,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("htotal")]
|
|
||||||
HTotal,
|
|
||||||
|
|
||||||
/// <remarks>Used in Driver</remarks>
|
|
||||||
[Mapping("incomplete")]
|
|
||||||
Incomplete,
|
|
||||||
|
|
||||||
/// <remarks>Used in Disk</remarks>
|
|
||||||
[Mapping("index")]
|
|
||||||
Index,
|
|
||||||
|
|
||||||
/// <remarks>Used in Instance</remarks>
|
|
||||||
[Mapping("instance_briefname", "instance_brief_name")]
|
|
||||||
Instance_BriefName,
|
|
||||||
|
|
||||||
/// <remarks>Used in Instance</remarks>
|
|
||||||
[Mapping("instance_name")]
|
|
||||||
Instance_Name,
|
|
||||||
|
|
||||||
/// <remarks>Used in Device</remarks>
|
|
||||||
[Mapping("interface")]
|
|
||||||
Interface,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("inverted")]
|
|
||||||
Inverted,
|
|
||||||
|
|
||||||
/// <remarks>Used in Release</remarks>
|
|
||||||
[Mapping("language")]
|
|
||||||
Language,
|
|
||||||
|
|
||||||
/// <remarks>Used in Archive</remarks>
|
|
||||||
[Mapping("languages")]
|
|
||||||
Languages,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("loadflag", "load_flag")]
|
|
||||||
LoadFlag,
|
|
||||||
|
|
||||||
/// <remarks>Used in Location</remarks>
|
|
||||||
[Mapping("location_inverted")]
|
|
||||||
Location_Inverted,
|
|
||||||
|
|
||||||
/// <remarks>Used in Location</remarks>
|
|
||||||
[Mapping("location_name")]
|
|
||||||
Location_Name,
|
|
||||||
|
|
||||||
/// <remarks>Used in Location</remarks>
|
|
||||||
[Mapping("location_number")]
|
|
||||||
Location_Number,
|
|
||||||
|
|
||||||
/// <remarks>Used in Device</remarks>
|
|
||||||
[Mapping("mandatory")]
|
|
||||||
Mandatory,
|
|
||||||
|
|
||||||
/// <remarks>Used in Condition, Configuration, and DipSwitch</remarks>
|
|
||||||
[Mapping("mask")]
|
|
||||||
Mask,
|
|
||||||
|
|
||||||
/// <remarks>Used in Disk, Media, and Rom</remarks>
|
|
||||||
[Mapping("md5", "md5hash", "md5_hash")]
|
|
||||||
MD5,
|
|
||||||
|
|
||||||
/// <remarks>Used in Disk and Rom</remarks>
|
|
||||||
[Mapping("merge", "mergetag", "merge_tag")]
|
|
||||||
Merge,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("mia")]
|
|
||||||
MIA,
|
|
||||||
|
|
||||||
/// <remarks>Used in Adjuster, Archive, BiosSet, Chip, Configuration, DataArea, DeviceReference, DipSwitch, Disk, DiskArea, Extension, Info, Instance, Location, Media, Part, PartFeature, RamOption, Release, Rom, Sample, Setting, SharedFeature, Slot, SlotOption, and SoftwareList</remarks>
|
|
||||||
[Mapping("name")]
|
|
||||||
Name,
|
|
||||||
|
|
||||||
/// <remarks>Used in Driver</remarks>
|
|
||||||
[Mapping("nosoundhardware", "no_sound_hardware")]
|
|
||||||
NoSoundHardware,
|
|
||||||
|
|
||||||
/// <remarks>Used in Archive</remarks>
|
|
||||||
[Mapping("number")]
|
|
||||||
Number,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("offset")]
|
|
||||||
Offset,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("subtype", "sub_type", "openmsxsubtype", "openmsx_subtype", "openmsx_sub_type")]
|
|
||||||
OpenMSXSubType,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("openmsxtype", "openmsx_type")]
|
|
||||||
OpenMSXType,
|
|
||||||
|
|
||||||
/// <remarks>Used in Disk and Rom</remarks>
|
|
||||||
[Mapping("optional")]
|
|
||||||
Optional,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("original")]
|
|
||||||
Original,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("original_filename")]
|
|
||||||
OriginalFilename,
|
|
||||||
|
|
||||||
/// <remarks>Used in PartFeature</remarks>
|
|
||||||
[Mapping("part_feature_name")]
|
|
||||||
Part_Feature_Name,
|
|
||||||
|
|
||||||
/// <remarks>Used in PartFeature</remarks>
|
|
||||||
[Mapping("part_feature_value")]
|
|
||||||
Part_Feature_Value,
|
|
||||||
|
|
||||||
/// <remarks>Used in Part</remarks>
|
|
||||||
[Mapping("partinterface", "part_interface")]
|
|
||||||
Part_Interface,
|
|
||||||
|
|
||||||
/// <remarks>Used in Part</remarks>
|
|
||||||
[Mapping("partname", "part_name")]
|
|
||||||
Part_Name,
|
|
||||||
|
|
||||||
/// <remarks>Used in Archive</remarks>
|
|
||||||
[Mapping("physical")]
|
|
||||||
Physical,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("pixclock", "pix_clock")]
|
|
||||||
PixClock,
|
|
||||||
|
|
||||||
/// <remarks>Used in Input</remarks>
|
|
||||||
[Mapping("players")]
|
|
||||||
Players,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("refresh")]
|
|
||||||
Refresh,
|
|
||||||
|
|
||||||
/// <remarks>Used in Archive, Disk, Release, and Rom</remarks>
|
|
||||||
[Mapping("region")]
|
|
||||||
Region,
|
|
||||||
|
|
||||||
/// <remarks>Used in Archive</remarks>
|
|
||||||
[Mapping("regparent", "reg_parent")]
|
|
||||||
RegParent,
|
|
||||||
|
|
||||||
/// <remarks>Used in Condition</remarks>
|
|
||||||
[Mapping("relation")]
|
|
||||||
Relation,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("remark")]
|
|
||||||
Remark,
|
|
||||||
|
|
||||||
/// <remarks>Used in Driver</remarks>
|
|
||||||
[Mapping("requiresartwork", "requires_artwork")]
|
|
||||||
RequiresArtwork,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("rotate")]
|
|
||||||
Rotate,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("rotation")]
|
|
||||||
Rotation,
|
|
||||||
|
|
||||||
/// <remarks>Used in Driver</remarks>
|
|
||||||
[Mapping("savestatestatus", "savestate_status", "save_state_status")]
|
|
||||||
SaveStateStatus,
|
|
||||||
|
|
||||||
/// <remarks>Used in Input</remarks>
|
|
||||||
[Mapping("service")]
|
|
||||||
Service,
|
|
||||||
|
|
||||||
/// <remarks>Used in Setting</remarks>
|
|
||||||
[Mapping("setting_default", "value_default")]
|
|
||||||
Setting_Default,
|
|
||||||
|
|
||||||
/// <remarks>Used in Setting</remarks>
|
|
||||||
[Mapping("setting_name", "value_name")]
|
|
||||||
Setting_Name,
|
|
||||||
|
|
||||||
/// <remarks>Used in Setting</remarks>
|
|
||||||
[Mapping("setting_value", "value_value")]
|
|
||||||
Setting_Value,
|
|
||||||
|
|
||||||
/// <remarks>Used in Disk, Media, and Rom</remarks>
|
|
||||||
[Mapping("sha1", "sha_1", "sha1hash", "sha1_hash", "sha_1hash", "sha_1_hash")]
|
|
||||||
SHA1,
|
|
||||||
|
|
||||||
/// <remarks>Used in Media and Rom</remarks>
|
|
||||||
[Mapping("sha256", "sha_256", "sha256hash", "sha256_hash", "sha_256hash", "sha_256_hash")]
|
|
||||||
SHA256,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("sha384", "sha_384", "sha384hash", "sha384_hash", "sha_384hash", "sha_384_hash")]
|
|
||||||
SHA384,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("sha512", "sha_512", "sha512hash", "sha512_hash", "sha_512hash", "sha_512_hash")]
|
|
||||||
SHA512,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("size")]
|
|
||||||
Size,
|
|
||||||
|
|
||||||
/// <remarks>Used in SlotOption</remarks>
|
|
||||||
[Mapping("slotoption_default")]
|
|
||||||
SlotOption_Default,
|
|
||||||
|
|
||||||
/// <remarks>Used in SlotOption</remarks>
|
|
||||||
[Mapping("slotoption_devicename", "slotoption_device_name")]
|
|
||||||
SlotOption_DeviceName,
|
|
||||||
|
|
||||||
/// <remarks>Used in SlotOption</remarks>
|
|
||||||
[Mapping("slotoption_name")]
|
|
||||||
SlotOption_Name,
|
|
||||||
|
|
||||||
/// <remarks>Used in SoftwareList</remarks>
|
|
||||||
[Mapping("softwareliststatus", "softwarelist_status")]
|
|
||||||
SoftwareListStatus,
|
|
||||||
|
|
||||||
/// <remarks>Used in Media and Rom</remarks>
|
|
||||||
[Mapping("spamsum", "spam_sum")]
|
|
||||||
SpamSum,
|
|
||||||
|
|
||||||
/// <remarks>Used in Disk and Rom</remarks>
|
|
||||||
[Mapping("status")]
|
|
||||||
Status,
|
|
||||||
|
|
||||||
/// <remarks>Used in Rom</remarks>
|
|
||||||
[Mapping("summation")]
|
|
||||||
Summation,
|
|
||||||
|
|
||||||
/// <remarks>Used in Driver</remarks>
|
|
||||||
[Mapping("supportstatus", "support_status")]
|
|
||||||
SupportStatus,
|
|
||||||
|
|
||||||
/// <remarks>Used in Chip, Condition, Configuration, Device, DipSwitch, Display, Port, and SoftwareList</remarks>
|
|
||||||
[Mapping("tag")]
|
|
||||||
Tag,
|
|
||||||
|
|
||||||
/// <remarks>Used in Input</remarks>
|
|
||||||
[Mapping("tilt")]
|
|
||||||
Tilt,
|
|
||||||
|
|
||||||
/// <remarks>Internal value, common to all DatItems</remarks>
|
|
||||||
[Mapping("type")]
|
|
||||||
Type,
|
|
||||||
|
|
||||||
/// <remarks>Used in Driver</remarks>
|
|
||||||
[Mapping("unofficial")]
|
|
||||||
Unofficial,
|
|
||||||
|
|
||||||
/// <remarks>Used in Condition, Info, Rom, and SharedFeature</remarks>
|
|
||||||
[Mapping("value")]
|
|
||||||
Value,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("vbend")]
|
|
||||||
VBEnd,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("vbstart")]
|
|
||||||
VBStart,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("vtotal")]
|
|
||||||
VTotal,
|
|
||||||
|
|
||||||
/// <remarks>Used in Display</remarks>
|
|
||||||
[Mapping("width")]
|
|
||||||
Width,
|
|
||||||
|
|
||||||
/// <remarks>Used in Disk</remarks>
|
|
||||||
[Mapping("writable")]
|
|
||||||
Writable,
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Logging
|
#region Logging
|
||||||
|
|||||||
@@ -39,36 +39,6 @@ namespace SabreTools.Core.Tools
|
|||||||
return AsEnumValue<DatHeaderField>(headerInput);
|
return AsEnumValue<DatHeaderField>(headerInput);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get DatItemField value from input string
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="input">String to get value from</param>
|
|
||||||
/// <returns>DatItemField value corresponding to the string</returns>
|
|
||||||
public static DatItemField AsDatItemField(this string? input)
|
|
||||||
{
|
|
||||||
// If the input is empty, we return null
|
|
||||||
if (string.IsNullOrEmpty(input))
|
|
||||||
return DatItemField.NULL;
|
|
||||||
|
|
||||||
// Normalize the input
|
|
||||||
input = input!.ToLowerInvariant();
|
|
||||||
|
|
||||||
// Create regex
|
|
||||||
string datItemRegex = @"^(item|datitem)[.\-_\s]";
|
|
||||||
|
|
||||||
// If we don't have an item field, skip
|
|
||||||
if (!Regex.IsMatch(input, datItemRegex))
|
|
||||||
return DatItemField.NULL;
|
|
||||||
|
|
||||||
// Replace the match and re-normalize
|
|
||||||
string itemInput = Regex.Replace(input, datItemRegex, string.Empty)
|
|
||||||
.Replace(' ', '_')
|
|
||||||
.Replace('-', '_')
|
|
||||||
.Replace('.', '_');
|
|
||||||
|
|
||||||
return AsEnumValue<DatItemField>(itemInput);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get bool? value from input string
|
/// Get bool? value from input string
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -568,7 +568,7 @@ namespace SabreTools.DatFiles
|
|||||||
/// Return list of required fields missing from a DatItem
|
/// Return list of required fields missing from a DatItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>List of missing required fields, null or empty if none were found</returns>
|
/// <returns>List of missing required fields, null or empty if none were found</returns>
|
||||||
protected virtual List<DatItemField>? GetMissingRequiredFields(DatItem datItem) => null;
|
protected virtual List<string>? GetMissingRequiredFields(DatItem datItem) => null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get if a machine contains any writable items
|
/// Get if a machine contains any writable items
|
||||||
@@ -643,12 +643,12 @@ namespace SabreTools.DatFiles
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If we have an item with missing required fields
|
// If we have an item with missing required fields
|
||||||
List<DatItemField>? missingFields = GetMissingRequiredFields(datItem);
|
List<string>? missingFields = GetMissingRequiredFields(datItem);
|
||||||
if (missingFields != null && missingFields.Count != 0)
|
if (missingFields != null && missingFields.Count != 0)
|
||||||
{
|
{
|
||||||
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
|
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
|
||||||
#if NET20 || NET35
|
#if NET20 || NET35
|
||||||
logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.DatFormat}: {string.Join(", ", missingFields.Select(f => f.ToString()).ToArray())}");
|
logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.DatFormat}: {string.Join(", ", [.. missingFields])}");
|
||||||
#else
|
#else
|
||||||
logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.DatFormat}: {string.Join(", ", missingFields)}");
|
logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.DatFormat}: {string.Join(", ", missingFields)}");
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -22,24 +22,24 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
List<DatItemField> missingFields = [];
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
// Check item name
|
// Check item name
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (rom.Size == null || rom.Size < 0)
|
if (rom.Size == null || rom.Size < 0)
|
||||||
missingFields.Add(DatItemField.Size);
|
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||||
if (string.IsNullOrEmpty(rom.CRC)
|
if (string.IsNullOrEmpty(rom.CRC)
|
||||||
&& string.IsNullOrEmpty(rom.MD5)
|
&& string.IsNullOrEmpty(rom.MD5)
|
||||||
&& string.IsNullOrEmpty(rom.SHA1))
|
&& string.IsNullOrEmpty(rom.SHA1))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
List<DatItemField> missingFields = [];
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
// Check item name
|
// Check item name
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
return missingFields;
|
return missingFields;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,30 +35,30 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
var missingFields = new List<DatItemField>();
|
var missingFields = new List<string>();
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case Release release:
|
case Release release:
|
||||||
if (string.IsNullOrEmpty(release.Name))
|
if (string.IsNullOrEmpty(release.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Release.NameKey);
|
||||||
if (string.IsNullOrEmpty(release.Region))
|
if (string.IsNullOrEmpty(release.Region))
|
||||||
missingFields.Add(DatItemField.Region);
|
missingFields.Add(Models.Metadata.Release.RegionKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BiosSet biosset:
|
case BiosSet biosset:
|
||||||
if (string.IsNullOrEmpty(biosset.Name))
|
if (string.IsNullOrEmpty(biosset.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.BiosSet.NameKey);
|
||||||
if (string.IsNullOrEmpty(biosset.Description))
|
if (string.IsNullOrEmpty(biosset.Description))
|
||||||
missingFields.Add(DatItemField.Description);
|
missingFields.Add(Models.Metadata.BiosSet.DescriptionKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (string.IsNullOrEmpty(rom.Name))
|
if (string.IsNullOrEmpty(rom.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
if (rom.Size == null || rom.Size < 0)
|
if (rom.Size == null || rom.Size < 0)
|
||||||
missingFields.Add(DatItemField.Size);
|
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||||
if (string.IsNullOrEmpty(rom.CRC)
|
if (string.IsNullOrEmpty(rom.CRC)
|
||||||
&& string.IsNullOrEmpty(rom.MD5)
|
&& string.IsNullOrEmpty(rom.MD5)
|
||||||
&& string.IsNullOrEmpty(rom.SHA1)
|
&& string.IsNullOrEmpty(rom.SHA1)
|
||||||
@@ -67,66 +67,66 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
&& string.IsNullOrEmpty(rom.SHA512)
|
&& string.IsNullOrEmpty(rom.SHA512)
|
||||||
&& string.IsNullOrEmpty(rom.SpamSum))
|
&& string.IsNullOrEmpty(rom.SpamSum))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Disk disk:
|
case Disk disk:
|
||||||
if (string.IsNullOrEmpty(disk.Name))
|
if (string.IsNullOrEmpty(disk.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Disk.NameKey);
|
||||||
if (string.IsNullOrEmpty(disk.MD5)
|
if (string.IsNullOrEmpty(disk.MD5)
|
||||||
&& string.IsNullOrEmpty(disk.SHA1))
|
&& string.IsNullOrEmpty(disk.SHA1))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Sample sample:
|
case Sample sample:
|
||||||
if (string.IsNullOrEmpty(sample.Name))
|
if (string.IsNullOrEmpty(sample.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Sample.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Archive archive:
|
case Archive archive:
|
||||||
if (string.IsNullOrEmpty(archive.Name))
|
if (string.IsNullOrEmpty(archive.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Archive.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Chip chip:
|
case Chip chip:
|
||||||
if (!chip.ChipTypeSpecified)
|
if (!chip.ChipTypeSpecified)
|
||||||
missingFields.Add(DatItemField.ChipType);
|
missingFields.Add(Models.Metadata.Chip.ChipTypeKey);
|
||||||
if (string.IsNullOrEmpty(chip.Name))
|
if (string.IsNullOrEmpty(chip.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Chip.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Display display:
|
case Display display:
|
||||||
if (!display.DisplayTypeSpecified)
|
if (!display.DisplayTypeSpecified)
|
||||||
missingFields.Add(DatItemField.DisplayType);
|
missingFields.Add(Models.Metadata.Display.DisplayTypeKey);
|
||||||
if (!display.RotateSpecified)
|
if (!display.RotateSpecified)
|
||||||
missingFields.Add(DatItemField.Rotate);
|
missingFields.Add(Models.Metadata.Display.RotateKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Sound sound:
|
case Sound sound:
|
||||||
if (!sound.ChannelsSpecified)
|
if (!sound.ChannelsSpecified)
|
||||||
missingFields.Add(DatItemField.Channels);
|
missingFields.Add(Models.Metadata.Sound.ChannelsKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Input input:
|
case Input input:
|
||||||
if (!input.PlayersSpecified)
|
if (!input.PlayersSpecified)
|
||||||
missingFields.Add(DatItemField.Players);
|
missingFields.Add(Models.Metadata.Input.PlayersKey);
|
||||||
if (!input.ControlsSpecified)
|
if (!input.ControlsSpecified)
|
||||||
missingFields.Add(DatItemField.Control_Buttons);
|
missingFields.Add(Models.Metadata.Input.ControlKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DipSwitch dipswitch:
|
case DipSwitch dipswitch:
|
||||||
if (string.IsNullOrEmpty(dipswitch.Name))
|
if (string.IsNullOrEmpty(dipswitch.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.DipSwitch.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Driver driver:
|
case Driver driver:
|
||||||
if (!driver.StatusSpecified)
|
if (!driver.StatusSpecified)
|
||||||
missingFields.Add(DatItemField.SupportStatus);
|
missingFields.Add(Models.Metadata.Driver.StatusKey);
|
||||||
if (!driver.EmulationSpecified)
|
if (!driver.EmulationSpecified)
|
||||||
missingFields.Add(DatItemField.EmulationStatus);
|
missingFields.Add(Models.Metadata.Driver.EmulationKey);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,23 +22,23 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
List<DatItemField> missingFields = [];
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
// Check item name
|
// Check item name
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (!rom.SizeSpecified)
|
if (!rom.SizeSpecified)
|
||||||
missingFields.Add(DatItemField.Size);
|
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||||
// if (string.IsNullOrEmpty(rom.Date))
|
// if (string.IsNullOrEmpty(rom.Date))
|
||||||
// missingFields.Add(DatItemField.Date);
|
// missingFields.Add(Models.Metadata.Rom.DateKey);
|
||||||
if (string.IsNullOrEmpty(rom.CRC))
|
if (string.IsNullOrEmpty(rom.CRC))
|
||||||
missingFields.Add(DatItemField.CRC);
|
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,25 +22,25 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
List<DatItemField> missingFields = [];
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
// Check item name
|
// Check item name
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (string.IsNullOrEmpty(rom.SHA256))
|
if (string.IsNullOrEmpty(rom.SHA256))
|
||||||
missingFields.Add(DatItemField.SHA256);
|
missingFields.Add(Models.Metadata.Rom.SHA256Key);
|
||||||
if (string.IsNullOrEmpty(rom.SHA1))
|
if (string.IsNullOrEmpty(rom.SHA1))
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
if (string.IsNullOrEmpty(rom.MD5))
|
if (string.IsNullOrEmpty(rom.MD5))
|
||||||
missingFields.Add(DatItemField.MD5);
|
missingFields.Add(Models.Metadata.Rom.MD5Key);
|
||||||
if (string.IsNullOrEmpty(rom.CRC))
|
if (string.IsNullOrEmpty(rom.CRC))
|
||||||
missingFields.Add(DatItemField.CRC);
|
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
List<DatItemField> missingFields = [];
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
// Check item name
|
// Check item name
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
// Check hash linked to specific Hashfile type
|
// Check hash linked to specific Hashfile type
|
||||||
switch (_hash)
|
switch (_hash)
|
||||||
@@ -41,10 +41,10 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
{
|
{
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
if (string.IsNullOrEmpty((datItem as Rom)?.CRC))
|
if (string.IsNullOrEmpty((datItem as Rom)?.CRC))
|
||||||
missingFields.Add(DatItemField.CRC);
|
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
missingFields.Add(DatItemField.CRC);
|
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -53,18 +53,18 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
{
|
{
|
||||||
case ItemType.Disk:
|
case ItemType.Disk:
|
||||||
if (string.IsNullOrEmpty((datItem as Disk)?.MD5))
|
if (string.IsNullOrEmpty((datItem as Disk)?.MD5))
|
||||||
missingFields.Add(DatItemField.MD5);
|
missingFields.Add(Models.Metadata.Disk.MD5Key);
|
||||||
break;
|
break;
|
||||||
case ItemType.Media:
|
case ItemType.Media:
|
||||||
if (string.IsNullOrEmpty((datItem as Media)?.MD5))
|
if (string.IsNullOrEmpty((datItem as Media)?.MD5))
|
||||||
missingFields.Add(DatItemField.MD5);
|
missingFields.Add(Models.Metadata.Media.MD5Key);
|
||||||
break;
|
break;
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
if (string.IsNullOrEmpty((datItem as Rom)?.MD5))
|
if (string.IsNullOrEmpty((datItem as Rom)?.MD5))
|
||||||
missingFields.Add(DatItemField.MD5);
|
missingFields.Add(Models.Metadata.Rom.MD5Key);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
missingFields.Add(DatItemField.MD5);
|
missingFields.Add(Models.Metadata.Rom.MD5Key);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -73,18 +73,18 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
{
|
{
|
||||||
case ItemType.Disk:
|
case ItemType.Disk:
|
||||||
if (string.IsNullOrEmpty((datItem as Disk)?.SHA1))
|
if (string.IsNullOrEmpty((datItem as Disk)?.SHA1))
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||||
break;
|
break;
|
||||||
case ItemType.Media:
|
case ItemType.Media:
|
||||||
if (string.IsNullOrEmpty((datItem as Media)?.SHA1))
|
if (string.IsNullOrEmpty((datItem as Media)?.SHA1))
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Media.SHA1Key);
|
||||||
break;
|
break;
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
if (string.IsNullOrEmpty((datItem as Rom)?.SHA1))
|
if (string.IsNullOrEmpty((datItem as Rom)?.SHA1))
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -93,14 +93,14 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
{
|
{
|
||||||
case ItemType.Media:
|
case ItemType.Media:
|
||||||
if (string.IsNullOrEmpty((datItem as Media)?.SHA256))
|
if (string.IsNullOrEmpty((datItem as Media)?.SHA256))
|
||||||
missingFields.Add(DatItemField.SHA256);
|
missingFields.Add(Models.Metadata.Media.SHA256Key);
|
||||||
break;
|
break;
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
if (string.IsNullOrEmpty((datItem as Rom)?.SHA256))
|
if (string.IsNullOrEmpty((datItem as Rom)?.SHA256))
|
||||||
missingFields.Add(DatItemField.SHA256);
|
missingFields.Add(Models.Metadata.Rom.SHA256Key);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
missingFields.Add(DatItemField.SHA256);
|
missingFields.Add(Models.Metadata.Rom.SHA256Key);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -109,10 +109,10 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
{
|
{
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
if (string.IsNullOrEmpty((datItem as Rom)?.SHA384))
|
if (string.IsNullOrEmpty((datItem as Rom)?.SHA384))
|
||||||
missingFields.Add(DatItemField.SHA384);
|
missingFields.Add(Models.Metadata.Rom.SHA384Key);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
missingFields.Add(DatItemField.SHA384);
|
missingFields.Add(Models.Metadata.Rom.SHA384Key);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -121,10 +121,10 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
{
|
{
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
if (string.IsNullOrEmpty((datItem as Rom)?.SHA512))
|
if (string.IsNullOrEmpty((datItem as Rom)?.SHA512))
|
||||||
missingFields.Add(DatItemField.SHA512);
|
missingFields.Add(Models.Metadata.Rom.SHA512Key);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
missingFields.Add(DatItemField.SHA512);
|
missingFields.Add(Models.Metadata.Rom.SHA512Key);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -133,14 +133,14 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
{
|
{
|
||||||
case ItemType.Media:
|
case ItemType.Media:
|
||||||
if (string.IsNullOrEmpty((datItem as Media)?.SpamSum))
|
if (string.IsNullOrEmpty((datItem as Media)?.SpamSum))
|
||||||
missingFields.Add(DatItemField.SpamSum);
|
missingFields.Add(Models.Metadata.Media.SpamSumKey);
|
||||||
break;
|
break;
|
||||||
case ItemType.Rom:
|
case ItemType.Rom:
|
||||||
if (string.IsNullOrEmpty((datItem as Rom)?.SpamSum))
|
if (string.IsNullOrEmpty((datItem as Rom)?.SpamSum))
|
||||||
missingFields.Add(DatItemField.SpamSum);
|
missingFields.Add(Models.Metadata.Rom.SpamSumKey);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
missingFields.Add(DatItemField.SpamSum);
|
missingFields.Add(Models.Metadata.Rom.SpamSumKey);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -23,13 +23,13 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
List<DatItemField> missingFields = [];
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
// Check item name
|
// Check item name
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
@@ -37,17 +37,17 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
if (string.IsNullOrEmpty(disk.MD5)
|
if (string.IsNullOrEmpty(disk.MD5)
|
||||||
&& string.IsNullOrEmpty(disk.SHA1))
|
&& string.IsNullOrEmpty(disk.SHA1))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (rom.Size == null || rom.Size < 0)
|
if (rom.Size == null || rom.Size < 0)
|
||||||
missingFields.Add(DatItemField.Size);
|
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||||
if (string.IsNullOrEmpty(rom.CRC))
|
if (string.IsNullOrEmpty(rom.CRC))
|
||||||
missingFields.Add(DatItemField.CRC);
|
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||||
if (string.IsNullOrEmpty(rom.SHA1))
|
if (string.IsNullOrEmpty(rom.SHA1))
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,136 +42,136 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
var missingFields = new List<DatItemField>();
|
var missingFields = new List<string>();
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case BiosSet biosset:
|
case BiosSet biosset:
|
||||||
if (string.IsNullOrEmpty(biosset.Name))
|
if (string.IsNullOrEmpty(biosset.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.BiosSet.NameKey);
|
||||||
if (string.IsNullOrEmpty(biosset.Description))
|
if (string.IsNullOrEmpty(biosset.Description))
|
||||||
missingFields.Add(DatItemField.Description);
|
missingFields.Add(Models.Metadata.BiosSet.DescriptionKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (string.IsNullOrEmpty(rom.Name))
|
if (string.IsNullOrEmpty(rom.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
if (rom.Size == null || rom.Size < 0)
|
if (rom.Size == null || rom.Size < 0)
|
||||||
missingFields.Add(DatItemField.Size);
|
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||||
if (string.IsNullOrEmpty(rom.CRC)
|
if (string.IsNullOrEmpty(rom.CRC)
|
||||||
&& string.IsNullOrEmpty(rom.SHA1))
|
&& string.IsNullOrEmpty(rom.SHA1))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Disk disk:
|
case Disk disk:
|
||||||
if (string.IsNullOrEmpty(disk.Name))
|
if (string.IsNullOrEmpty(disk.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Disk.NameKey);
|
||||||
if (string.IsNullOrEmpty(disk.MD5)
|
if (string.IsNullOrEmpty(disk.MD5)
|
||||||
&& string.IsNullOrEmpty(disk.SHA1))
|
&& string.IsNullOrEmpty(disk.SHA1))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DeviceReference deviceref:
|
case DeviceReference deviceref:
|
||||||
if (string.IsNullOrEmpty(deviceref.Name))
|
if (string.IsNullOrEmpty(deviceref.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.DeviceRef.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Sample sample:
|
case Sample sample:
|
||||||
if (string.IsNullOrEmpty(sample.Name))
|
if (string.IsNullOrEmpty(sample.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Sample.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Chip chip:
|
case Chip chip:
|
||||||
if (string.IsNullOrEmpty(chip.Name))
|
if (string.IsNullOrEmpty(chip.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Chip.NameKey);
|
||||||
if (!chip.ChipTypeSpecified)
|
if (!chip.ChipTypeSpecified)
|
||||||
missingFields.Add(DatItemField.ChipType);
|
missingFields.Add(Models.Metadata.Chip.ChipTypeKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Display display:
|
case Display display:
|
||||||
if (!display.DisplayTypeSpecified)
|
if (!display.DisplayTypeSpecified)
|
||||||
missingFields.Add(DatItemField.DisplayType);
|
missingFields.Add(Models.Metadata.Display.DisplayTypeKey);
|
||||||
if (display.Refresh == null)
|
if (display.Refresh == null)
|
||||||
missingFields.Add(DatItemField.Refresh);
|
missingFields.Add(Models.Metadata.Display.RefreshKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Sound sound:
|
case Sound sound:
|
||||||
if (sound.Channels == null)
|
if (sound.Channels == null)
|
||||||
missingFields.Add(DatItemField.Channels);
|
missingFields.Add(Models.Metadata.Sound.ChannelsKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Input input:
|
case Input input:
|
||||||
if (input.Players == null)
|
if (input.Players == null)
|
||||||
missingFields.Add(DatItemField.Players);
|
missingFields.Add(Models.Metadata.Input.PlayersKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DipSwitch dipswitch:
|
case DipSwitch dipswitch:
|
||||||
if (string.IsNullOrEmpty(dipswitch.Name))
|
if (string.IsNullOrEmpty(dipswitch.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.DipSwitch.NameKey);
|
||||||
if (string.IsNullOrEmpty(dipswitch.Tag))
|
if (string.IsNullOrEmpty(dipswitch.Tag))
|
||||||
missingFields.Add(DatItemField.Tag);
|
missingFields.Add(Models.Metadata.DipSwitch.TagKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Configuration configuration:
|
case Configuration configuration:
|
||||||
if (string.IsNullOrEmpty(configuration.Name))
|
if (string.IsNullOrEmpty(configuration.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Configuration.NameKey);
|
||||||
if (string.IsNullOrEmpty(configuration.Tag))
|
if (string.IsNullOrEmpty(configuration.Tag))
|
||||||
missingFields.Add(DatItemField.Tag);
|
missingFields.Add(Models.Metadata.Configuration.TagKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Port port:
|
case Port port:
|
||||||
if (string.IsNullOrEmpty(port.Tag))
|
if (string.IsNullOrEmpty(port.Tag))
|
||||||
missingFields.Add(DatItemField.Tag);
|
missingFields.Add(Models.Metadata.Port.TagKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Adjuster adjuster:
|
case Adjuster adjuster:
|
||||||
if (string.IsNullOrEmpty(adjuster.Name))
|
if (string.IsNullOrEmpty(adjuster.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Adjuster.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Driver driver:
|
case Driver driver:
|
||||||
if (!driver.StatusSpecified)
|
if (!driver.StatusSpecified)
|
||||||
missingFields.Add(DatItemField.SupportStatus);
|
missingFields.Add(Models.Metadata.Driver.StatusKey);
|
||||||
if (!driver.EmulationSpecified)
|
if (!driver.EmulationSpecified)
|
||||||
missingFields.Add(DatItemField.EmulationStatus);
|
missingFields.Add(Models.Metadata.Driver.EmulationKey);
|
||||||
if (!driver.CocktailSpecified)
|
if (!driver.CocktailSpecified)
|
||||||
missingFields.Add(DatItemField.CocktailStatus);
|
missingFields.Add(Models.Metadata.Driver.CocktailKey);
|
||||||
if (!driver.SaveStateSpecified)
|
if (!driver.SaveStateSpecified)
|
||||||
missingFields.Add(DatItemField.SaveStateStatus);
|
missingFields.Add(Models.Metadata.Driver.SaveStateKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Feature feature:
|
case Feature feature:
|
||||||
if (!feature.TypeSpecified)
|
if (!feature.TypeSpecified)
|
||||||
missingFields.Add(DatItemField.FeatureType);
|
missingFields.Add(Models.Metadata.Feature.FeatureTypeKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Device device:
|
case Device device:
|
||||||
if (!device.DeviceTypeSpecified)
|
if (!device.DeviceTypeSpecified)
|
||||||
missingFields.Add(DatItemField.DeviceType);
|
missingFields.Add(Models.Metadata.Device.DeviceTypeKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Slot slot:
|
case Slot slot:
|
||||||
if (string.IsNullOrEmpty(slot.Name))
|
if (string.IsNullOrEmpty(slot.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Slot.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DatItems.Formats.SoftwareList softwarelist:
|
case DatItems.Formats.SoftwareList softwarelist:
|
||||||
if (string.IsNullOrEmpty(softwarelist.Tag))
|
if (string.IsNullOrEmpty(softwarelist.Tag))
|
||||||
missingFields.Add(DatItemField.Tag);
|
missingFields.Add(Models.Metadata.SoftwareList.TagKey);
|
||||||
if (string.IsNullOrEmpty(softwarelist.Name))
|
if (string.IsNullOrEmpty(softwarelist.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.SoftwareList.NameKey);
|
||||||
if (!softwarelist.StatusSpecified)
|
if (!softwarelist.StatusSpecified)
|
||||||
missingFields.Add(DatItemField.SoftwareListStatus);
|
missingFields.Add(Models.Metadata.SoftwareList.StatusKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RamOption ramoption:
|
case RamOption ramoption:
|
||||||
if (string.IsNullOrEmpty(ramoption.Name))
|
if (string.IsNullOrEmpty(ramoption.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.RamOption.NameKey);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,30 +29,30 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
var missingFields = new List<DatItemField>();
|
var missingFields = new List<string>();
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case Release release:
|
case Release release:
|
||||||
if (string.IsNullOrEmpty(release.Name))
|
if (string.IsNullOrEmpty(release.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Release.NameKey);
|
||||||
if (string.IsNullOrEmpty(release.Region))
|
if (string.IsNullOrEmpty(release.Region))
|
||||||
missingFields.Add(DatItemField.Region);
|
missingFields.Add(Models.Metadata.Release.RegionKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BiosSet biosset:
|
case BiosSet biosset:
|
||||||
if (string.IsNullOrEmpty(biosset.Name))
|
if (string.IsNullOrEmpty(biosset.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.BiosSet.NameKey);
|
||||||
if (string.IsNullOrEmpty(biosset.Description))
|
if (string.IsNullOrEmpty(biosset.Description))
|
||||||
missingFields.Add(DatItemField.Description);
|
missingFields.Add(Models.Metadata.BiosSet.DescriptionKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (string.IsNullOrEmpty(rom.Name))
|
if (string.IsNullOrEmpty(rom.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
if (rom.Size == null || rom.Size < 0)
|
if (rom.Size == null || rom.Size < 0)
|
||||||
missingFields.Add(DatItemField.Size);
|
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||||
if (string.IsNullOrEmpty(rom.CRC)
|
if (string.IsNullOrEmpty(rom.CRC)
|
||||||
&& string.IsNullOrEmpty(rom.MD5)
|
&& string.IsNullOrEmpty(rom.MD5)
|
||||||
&& string.IsNullOrEmpty(rom.SHA1)
|
&& string.IsNullOrEmpty(rom.SHA1)
|
||||||
@@ -61,65 +61,65 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
&& string.IsNullOrEmpty(rom.SHA512)
|
&& string.IsNullOrEmpty(rom.SHA512)
|
||||||
&& string.IsNullOrEmpty(rom.SpamSum))
|
&& string.IsNullOrEmpty(rom.SpamSum))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Disk disk:
|
case Disk disk:
|
||||||
if (string.IsNullOrEmpty(disk.Name))
|
if (string.IsNullOrEmpty(disk.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Disk.NameKey);
|
||||||
if (string.IsNullOrEmpty(disk.MD5)
|
if (string.IsNullOrEmpty(disk.MD5)
|
||||||
&& string.IsNullOrEmpty(disk.SHA1))
|
&& string.IsNullOrEmpty(disk.SHA1))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Media media:
|
case Media media:
|
||||||
if (string.IsNullOrEmpty(media.Name))
|
if (string.IsNullOrEmpty(media.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Media.NameKey);
|
||||||
if (string.IsNullOrEmpty(media.MD5)
|
if (string.IsNullOrEmpty(media.MD5)
|
||||||
&& string.IsNullOrEmpty(media.SHA1)
|
&& string.IsNullOrEmpty(media.SHA1)
|
||||||
&& string.IsNullOrEmpty(media.SHA256)
|
&& string.IsNullOrEmpty(media.SHA256)
|
||||||
&& string.IsNullOrEmpty(media.SpamSum))
|
&& string.IsNullOrEmpty(media.SpamSum))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Media.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DeviceReference deviceref:
|
case DeviceReference deviceref:
|
||||||
if (string.IsNullOrEmpty(deviceref.Name))
|
if (string.IsNullOrEmpty(deviceref.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.DeviceRef.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Sample sample:
|
case Sample sample:
|
||||||
if (string.IsNullOrEmpty(sample.Name))
|
if (string.IsNullOrEmpty(sample.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Sample.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Archive archive:
|
case Archive archive:
|
||||||
if (string.IsNullOrEmpty(archive.Name))
|
if (string.IsNullOrEmpty(archive.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Archive.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Driver driver:
|
case Driver driver:
|
||||||
if (!driver.StatusSpecified)
|
if (!driver.StatusSpecified)
|
||||||
missingFields.Add(DatItemField.SupportStatus);
|
missingFields.Add(Models.Metadata.Driver.StatusKey);
|
||||||
if (!driver.EmulationSpecified)
|
if (!driver.EmulationSpecified)
|
||||||
missingFields.Add(DatItemField.EmulationStatus);
|
missingFields.Add(Models.Metadata.Driver.EmulationKey);
|
||||||
if (!driver.CocktailSpecified)
|
if (!driver.CocktailSpecified)
|
||||||
missingFields.Add(DatItemField.CocktailStatus);
|
missingFields.Add(Models.Metadata.Driver.CocktailKey);
|
||||||
if (!driver.SaveStateSpecified)
|
if (!driver.SaveStateSpecified)
|
||||||
missingFields.Add(DatItemField.SaveStateStatus);
|
missingFields.Add(Models.Metadata.Driver.SaveStateKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DatItems.Formats.SoftwareList softwarelist:
|
case DatItems.Formats.SoftwareList softwarelist:
|
||||||
if (string.IsNullOrEmpty(softwarelist.Tag))
|
if (string.IsNullOrEmpty(softwarelist.Tag))
|
||||||
missingFields.Add(DatItemField.Tag);
|
missingFields.Add(Models.Metadata.SoftwareList.TagKey);
|
||||||
if (string.IsNullOrEmpty(softwarelist.Name))
|
if (string.IsNullOrEmpty(softwarelist.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.SoftwareList.NameKey);
|
||||||
if (!softwarelist.StatusSpecified)
|
if (!softwarelist.StatusSpecified)
|
||||||
missingFields.Add(DatItemField.SoftwareListStatus);
|
missingFields.Add(Models.Metadata.SoftwareList.StatusKey);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
internal partial class Missfile : DatFile
|
internal partial class Missfile : DatFile
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
// TODO: Check required fields
|
// TODO: Check required fields
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -22,22 +22,20 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
var missingFields = new List<DatItemField>();
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (rom.Size == null || rom.Size < 0)
|
if (rom.Size == null || rom.Size < 0)
|
||||||
missingFields.Add(DatItemField.Size);
|
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||||
if (string.IsNullOrEmpty(rom.CRC))
|
if (string.IsNullOrEmpty(rom.CRC))
|
||||||
{
|
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||||
missingFields.Add(DatItemField.SHA1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,18 +22,18 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
var missingFields = new List<DatItemField>();
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (string.IsNullOrEmpty(rom.SHA1))
|
if (string.IsNullOrEmpty(rom.SHA1))
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,21 +22,21 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
List<DatItemField> missingFields = [];
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
// Check item name
|
// Check item name
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (string.IsNullOrEmpty(rom.CRC))
|
if (string.IsNullOrEmpty(rom.CRC))
|
||||||
missingFields.Add(DatItemField.CRC);
|
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||||
if (!rom.SizeSpecified)
|
if (!rom.SizeSpecified)
|
||||||
missingFields.Add(DatItemField.Size);
|
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
List<DatItemField> missingFields = [];
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
// Check item name
|
// Check item name
|
||||||
if (string.IsNullOrEmpty(datItem.GetName()))
|
if (string.IsNullOrEmpty(datItem.GetName()))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||||
|
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
@@ -39,13 +39,13 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
if (string.IsNullOrEmpty(disk.MD5)
|
if (string.IsNullOrEmpty(disk.MD5)
|
||||||
&& string.IsNullOrEmpty(disk.SHA1))
|
&& string.IsNullOrEmpty(disk.SHA1))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (rom.Size == null || rom.Size < 0)
|
if (rom.Size == null || rom.Size < 0)
|
||||||
missingFields.Add(DatItemField.Size);
|
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||||
if (string.IsNullOrEmpty(rom.CRC)
|
if (string.IsNullOrEmpty(rom.CRC)
|
||||||
&& string.IsNullOrEmpty(rom.MD5)
|
&& string.IsNullOrEmpty(rom.MD5)
|
||||||
&& string.IsNullOrEmpty(rom.SHA1)
|
&& string.IsNullOrEmpty(rom.SHA1)
|
||||||
@@ -54,7 +54,7 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
&& string.IsNullOrEmpty(rom.SHA512)
|
&& string.IsNullOrEmpty(rom.SHA512)
|
||||||
&& string.IsNullOrEmpty(rom.SpamSum))
|
&& string.IsNullOrEmpty(rom.SpamSum))
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.SHA1);
|
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,37 +27,37 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
protected override List<DatItemField>? GetMissingRequiredFields(DatItem datItem)
|
protected override List<string>? GetMissingRequiredFields(DatItem datItem)
|
||||||
{
|
{
|
||||||
var missingFields = new List<DatItemField>();
|
var missingFields = new List<string>();
|
||||||
|
|
||||||
switch (datItem)
|
switch (datItem)
|
||||||
{
|
{
|
||||||
case DipSwitch dipSwitch:
|
case DipSwitch dipSwitch:
|
||||||
if (!dipSwitch.PartSpecified)
|
if (!dipSwitch.PartSpecified)
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.Part_Name);
|
missingFields.Add(Models.Metadata.Part.NameKey);
|
||||||
missingFields.Add(DatItemField.Part_Interface);
|
missingFields.Add(Models.Metadata.Part.InterfaceKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(dipSwitch.Part!.Name))
|
if (string.IsNullOrEmpty(dipSwitch.Part!.Name))
|
||||||
missingFields.Add(DatItemField.Part_Name);
|
missingFields.Add(Models.Metadata.Part.NameKey);
|
||||||
if (string.IsNullOrEmpty(dipSwitch.Part.Interface))
|
if (string.IsNullOrEmpty(dipSwitch.Part.Interface))
|
||||||
missingFields.Add(DatItemField.Part_Interface);
|
missingFields.Add(Models.Metadata.Part.InterfaceKey);
|
||||||
}
|
}
|
||||||
if (string.IsNullOrEmpty(dipSwitch.Name))
|
if (string.IsNullOrEmpty(dipSwitch.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.DipSwitch.NameKey);
|
||||||
if (string.IsNullOrEmpty(dipSwitch.Tag))
|
if (string.IsNullOrEmpty(dipSwitch.Tag))
|
||||||
missingFields.Add(DatItemField.Tag);
|
missingFields.Add(Models.Metadata.DipSwitch.TagKey);
|
||||||
if (string.IsNullOrEmpty(dipSwitch.Mask))
|
if (string.IsNullOrEmpty(dipSwitch.Mask))
|
||||||
missingFields.Add(DatItemField.Mask);
|
missingFields.Add(Models.Metadata.DipSwitch.MaskKey);
|
||||||
if (dipSwitch.ValuesSpecified)
|
if (dipSwitch.ValuesSpecified)
|
||||||
{
|
{
|
||||||
if (dipSwitch.Values!.Any(dv => string.IsNullOrEmpty(dv.Name)))
|
if (dipSwitch.Values!.Any(dv => string.IsNullOrEmpty(dv.Name)))
|
||||||
missingFields.Add(DatItemField.Part_Feature_Name);
|
missingFields.Add(Models.Metadata.DipValue.NameKey);
|
||||||
if (dipSwitch.Values!.Any(dv => string.IsNullOrEmpty(dv.Value)))
|
if (dipSwitch.Values!.Any(dv => string.IsNullOrEmpty(dv.Value)))
|
||||||
missingFields.Add(DatItemField.Part_Feature_Value);
|
missingFields.Add(Models.Metadata.DipValue.ValueKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -65,64 +65,64 @@ namespace SabreTools.DatFiles.Formats
|
|||||||
case Disk disk:
|
case Disk disk:
|
||||||
if (!disk.PartSpecified)
|
if (!disk.PartSpecified)
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.Part_Name);
|
missingFields.Add(Models.Metadata.Part.NameKey);
|
||||||
missingFields.Add(DatItemField.Part_Interface);
|
missingFields.Add(Models.Metadata.Part.InterfaceKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(disk.Part!.Name))
|
if (string.IsNullOrEmpty(disk.Part!.Name))
|
||||||
missingFields.Add(DatItemField.Part_Name);
|
missingFields.Add(Models.Metadata.Part.NameKey);
|
||||||
if (string.IsNullOrEmpty(disk.Part.Interface))
|
if (string.IsNullOrEmpty(disk.Part.Interface))
|
||||||
missingFields.Add(DatItemField.Part_Interface);
|
missingFields.Add(Models.Metadata.Part.InterfaceKey);
|
||||||
}
|
}
|
||||||
if (!disk.DiskAreaSpecified)
|
if (!disk.DiskAreaSpecified)
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.AreaName);
|
missingFields.Add(Models.Metadata.DiskArea.NameKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(disk.DiskArea!.Name))
|
if (string.IsNullOrEmpty(disk.DiskArea!.Name))
|
||||||
missingFields.Add(DatItemField.AreaName);
|
missingFields.Add(Models.Metadata.DiskArea.NameKey);
|
||||||
}
|
}
|
||||||
if (string.IsNullOrEmpty(disk.Name))
|
if (string.IsNullOrEmpty(disk.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Disk.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Info info:
|
case Info info:
|
||||||
if (string.IsNullOrEmpty(info.Name))
|
if (string.IsNullOrEmpty(info.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.Info.NameKey);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Rom rom:
|
case Rom rom:
|
||||||
if (!rom.PartSpecified)
|
if (!rom.PartSpecified)
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.Part_Name);
|
missingFields.Add(Models.Metadata.Part.NameKey);
|
||||||
missingFields.Add(DatItemField.Part_Interface);
|
missingFields.Add(Models.Metadata.Part.InterfaceKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(rom.Part!.Name))
|
if (string.IsNullOrEmpty(rom.Part!.Name))
|
||||||
missingFields.Add(DatItemField.Part_Name);
|
missingFields.Add(Models.Metadata.Part.NameKey);
|
||||||
if (string.IsNullOrEmpty(rom.Part.Interface))
|
if (string.IsNullOrEmpty(rom.Part.Interface))
|
||||||
missingFields.Add(DatItemField.Part_Interface);
|
missingFields.Add(Models.Metadata.Part.InterfaceKey);
|
||||||
}
|
}
|
||||||
if (!rom.DataAreaSpecified)
|
if (!rom.DataAreaSpecified)
|
||||||
{
|
{
|
||||||
missingFields.Add(DatItemField.AreaName);
|
missingFields.Add(Models.Metadata.DataArea.NameKey);
|
||||||
missingFields.Add(DatItemField.AreaSize);
|
missingFields.Add(Models.Metadata.DataArea.SizeKey);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(rom.DataArea!.Name))
|
if (string.IsNullOrEmpty(rom.DataArea!.Name))
|
||||||
missingFields.Add(DatItemField.AreaName);
|
missingFields.Add(Models.Metadata.DataArea.NameKey);
|
||||||
if (!rom.DataArea.SizeSpecified)
|
if (!rom.DataArea.SizeSpecified)
|
||||||
missingFields.Add(DatItemField.AreaSize);
|
missingFields.Add(Models.Metadata.DataArea.SizeKey);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SharedFeature sharedFeat:
|
case SharedFeature sharedFeat:
|
||||||
if (string.IsNullOrEmpty(sharedFeat.Name))
|
if (string.IsNullOrEmpty(sharedFeat.Name))
|
||||||
missingFields.Add(DatItemField.Name);
|
missingFields.Add(Models.Metadata.SharedFeat.NameKey);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// Unsupported ItemTypes should be caught already
|
// Unsupported ItemTypes should be caught already
|
||||||
|
|||||||
@@ -113,54 +113,54 @@ namespace SabreTools.DatTools
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="datFile">Current DatFile object to split</param>
|
/// <param name="datFile">Current DatFile object to split</param>
|
||||||
/// <returns>Dictionary of Field to DatFile mappings</returns>
|
/// <returns>Dictionary of Field to DatFile mappings</returns>
|
||||||
public static Dictionary<DatItemField, DatFile> SplitByHash(DatFile datFile)
|
public static Dictionary<string, DatFile> SplitByHash(DatFile datFile)
|
||||||
{
|
{
|
||||||
// Create each of the respective output DATs
|
// Create each of the respective output DATs
|
||||||
InternalStopwatch watch = new($"Splitting DAT by best available hashes");
|
InternalStopwatch watch = new($"Splitting DAT by best available hashes");
|
||||||
|
|
||||||
// Create the set of field-to-dat mappings
|
// Create the set of field-to-dat mappings
|
||||||
Dictionary<DatItemField, DatFile> fieldDats = [];
|
Dictionary<string, DatFile> fieldDats = [];
|
||||||
|
|
||||||
// TODO: Can this be made into a loop?
|
// TODO: Can this be made into a loop?
|
||||||
fieldDats[DatItemField.Status] = DatFile.Create(datFile.Header.CloneStandard());
|
fieldDats[Models.Metadata.Rom.StatusKey] = DatFile.Create(datFile.Header.CloneStandard());
|
||||||
fieldDats[DatItemField.Status].Header.FileName += " (Nodump)";
|
fieldDats[Models.Metadata.Rom.StatusKey].Header.FileName += " (Nodump)";
|
||||||
fieldDats[DatItemField.Status].Header.Name += " (Nodump)";
|
fieldDats[Models.Metadata.Rom.StatusKey].Header.Name += " (Nodump)";
|
||||||
fieldDats[DatItemField.Status].Header.Description += " (Nodump)";
|
fieldDats[Models.Metadata.Rom.StatusKey].Header.Description += " (Nodump)";
|
||||||
|
|
||||||
fieldDats[DatItemField.SHA512] = DatFile.Create(datFile.Header.CloneStandard());
|
fieldDats[Models.Metadata.Rom.SHA512Key] = DatFile.Create(datFile.Header.CloneStandard());
|
||||||
fieldDats[DatItemField.SHA512].Header.FileName += " (SHA-512)";
|
fieldDats[Models.Metadata.Rom.SHA512Key].Header.FileName += " (SHA-512)";
|
||||||
fieldDats[DatItemField.SHA512].Header.Name += " (SHA-512)";
|
fieldDats[Models.Metadata.Rom.SHA512Key].Header.Name += " (SHA-512)";
|
||||||
fieldDats[DatItemField.SHA512].Header.Description += " (SHA-512)";
|
fieldDats[Models.Metadata.Rom.SHA512Key].Header.Description += " (SHA-512)";
|
||||||
|
|
||||||
fieldDats[DatItemField.SHA384] = DatFile.Create(datFile.Header.CloneStandard());
|
fieldDats[Models.Metadata.Rom.SHA384Key] = DatFile.Create(datFile.Header.CloneStandard());
|
||||||
fieldDats[DatItemField.SHA384].Header.FileName += " (SHA-384)";
|
fieldDats[Models.Metadata.Rom.SHA384Key].Header.FileName += " (SHA-384)";
|
||||||
fieldDats[DatItemField.SHA384].Header.Name += " (SHA-384)";
|
fieldDats[Models.Metadata.Rom.SHA384Key].Header.Name += " (SHA-384)";
|
||||||
fieldDats[DatItemField.SHA384].Header.Description += " (SHA-384)";
|
fieldDats[Models.Metadata.Rom.SHA384Key].Header.Description += " (SHA-384)";
|
||||||
|
|
||||||
fieldDats[DatItemField.SHA256] = DatFile.Create(datFile.Header.CloneStandard());
|
fieldDats[Models.Metadata.Rom.SHA256Key] = DatFile.Create(datFile.Header.CloneStandard());
|
||||||
fieldDats[DatItemField.SHA256].Header.FileName += " (SHA-256)";
|
fieldDats[Models.Metadata.Rom.SHA256Key].Header.FileName += " (SHA-256)";
|
||||||
fieldDats[DatItemField.SHA256].Header.Name += " (SHA-256)";
|
fieldDats[Models.Metadata.Rom.SHA256Key].Header.Name += " (SHA-256)";
|
||||||
fieldDats[DatItemField.SHA256].Header.Description += " (SHA-256)";
|
fieldDats[Models.Metadata.Rom.SHA256Key].Header.Description += " (SHA-256)";
|
||||||
|
|
||||||
fieldDats[DatItemField.SHA1] = DatFile.Create(datFile.Header.CloneStandard());
|
fieldDats[Models.Metadata.Rom.SHA1Key] = DatFile.Create(datFile.Header.CloneStandard());
|
||||||
fieldDats[DatItemField.SHA1].Header.FileName += " (SHA-1)";
|
fieldDats[Models.Metadata.Rom.SHA1Key].Header.FileName += " (SHA-1)";
|
||||||
fieldDats[DatItemField.SHA1].Header.Name += " (SHA-1)";
|
fieldDats[Models.Metadata.Rom.SHA1Key].Header.Name += " (SHA-1)";
|
||||||
fieldDats[DatItemField.SHA1].Header.Description += " (SHA-1)";
|
fieldDats[Models.Metadata.Rom.SHA1Key].Header.Description += " (SHA-1)";
|
||||||
|
|
||||||
fieldDats[DatItemField.MD5] = DatFile.Create(datFile.Header.CloneStandard());
|
fieldDats[Models.Metadata.Rom.MD5Key] = DatFile.Create(datFile.Header.CloneStandard());
|
||||||
fieldDats[DatItemField.MD5].Header.FileName += " (MD5)";
|
fieldDats[Models.Metadata.Rom.MD5Key].Header.FileName += " (MD5)";
|
||||||
fieldDats[DatItemField.MD5].Header.Name += " (MD5)";
|
fieldDats[Models.Metadata.Rom.MD5Key].Header.Name += " (MD5)";
|
||||||
fieldDats[DatItemField.MD5].Header.Description += " (MD5)";
|
fieldDats[Models.Metadata.Rom.MD5Key].Header.Description += " (MD5)";
|
||||||
|
|
||||||
fieldDats[DatItemField.CRC] = DatFile.Create(datFile.Header.CloneStandard());
|
fieldDats[Models.Metadata.Rom.CRCKey] = DatFile.Create(datFile.Header.CloneStandard());
|
||||||
fieldDats[DatItemField.CRC].Header.FileName += " (CRC)";
|
fieldDats[Models.Metadata.Rom.CRCKey].Header.FileName += " (CRC)";
|
||||||
fieldDats[DatItemField.CRC].Header.Name += " (CRC)";
|
fieldDats[Models.Metadata.Rom.CRCKey].Header.Name += " (CRC)";
|
||||||
fieldDats[DatItemField.CRC].Header.Description += " (CRC)";
|
fieldDats[Models.Metadata.Rom.CRCKey].Header.Description += " (CRC)";
|
||||||
|
|
||||||
fieldDats[DatItemField.NULL] = DatFile.Create(datFile.Header.CloneStandard());
|
fieldDats["null"] = DatFile.Create(datFile.Header.CloneStandard());
|
||||||
fieldDats[DatItemField.NULL].Header.FileName += " (Other)";
|
fieldDats["null"].Header.FileName += " (Other)";
|
||||||
fieldDats[DatItemField.NULL].Header.Name += " (Other)";
|
fieldDats["null"].Header.Name += " (Other)";
|
||||||
fieldDats[DatItemField.NULL].Header.Description += " (Other)";
|
fieldDats["null"].Header.Description += " (Other)";
|
||||||
|
|
||||||
// Now populate each of the DAT objects in turn
|
// Now populate each of the DAT objects in turn
|
||||||
#if NET452_OR_GREATER || NETCOREAPP
|
#if NET452_OR_GREATER || NETCOREAPP
|
||||||
@@ -188,26 +188,26 @@ namespace SabreTools.DatTools
|
|||||||
if ((item.ItemType == ItemType.Rom && (item as Rom)!.ItemStatus == ItemStatus.Nodump)
|
if ((item.ItemType == ItemType.Rom && (item as Rom)!.ItemStatus == ItemStatus.Nodump)
|
||||||
|| (item.ItemType == ItemType.Disk && (item as Disk)!.ItemStatus == ItemStatus.Nodump))
|
|| (item.ItemType == ItemType.Disk && (item as Disk)!.ItemStatus == ItemStatus.Nodump))
|
||||||
{
|
{
|
||||||
fieldDats[DatItemField.Status].Items.Add(key, item);
|
fieldDats[Models.Metadata.Rom.StatusKey].Items.Add(key, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the file has a SHA-512
|
// If the file has a SHA-512
|
||||||
else if ((item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.SHA512)))
|
else if ((item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.SHA512)))
|
||||||
{
|
{
|
||||||
fieldDats[DatItemField.SHA512].Items.Add(key, item);
|
fieldDats[Models.Metadata.Rom.SHA512Key].Items.Add(key, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the file has a SHA-384
|
// If the file has a SHA-384
|
||||||
else if ((item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.SHA384)))
|
else if ((item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.SHA384)))
|
||||||
{
|
{
|
||||||
fieldDats[DatItemField.SHA384].Items.Add(key, item);
|
fieldDats[Models.Metadata.Rom.SHA384Key].Items.Add(key, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the file has a SHA-256
|
// If the file has a SHA-256
|
||||||
else if ((item.ItemType == ItemType.Media && !string.IsNullOrEmpty((item as Media)!.SHA256))
|
else if ((item.ItemType == ItemType.Media && !string.IsNullOrEmpty((item as Media)!.SHA256))
|
||||||
|| (item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.SHA256)))
|
|| (item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.SHA256)))
|
||||||
{
|
{
|
||||||
fieldDats[DatItemField.SHA256].Items.Add(key, item);
|
fieldDats[Models.Metadata.Rom.SHA256Key].Items.Add(key, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the file has a SHA-1
|
// If the file has a SHA-1
|
||||||
@@ -215,7 +215,7 @@ namespace SabreTools.DatTools
|
|||||||
|| (item.ItemType == ItemType.Media && !string.IsNullOrEmpty((item as Media)!.SHA1))
|
|| (item.ItemType == ItemType.Media && !string.IsNullOrEmpty((item as Media)!.SHA1))
|
||||||
|| (item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.SHA1)))
|
|| (item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.SHA1)))
|
||||||
{
|
{
|
||||||
fieldDats[DatItemField.SHA1].Items.Add(key, item);
|
fieldDats[Models.Metadata.Rom.SHA1Key].Items.Add(key, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the file has an MD5
|
// If the file has an MD5
|
||||||
@@ -223,18 +223,18 @@ namespace SabreTools.DatTools
|
|||||||
|| (item.ItemType == ItemType.Media && !string.IsNullOrEmpty((item as Media)!.MD5))
|
|| (item.ItemType == ItemType.Media && !string.IsNullOrEmpty((item as Media)!.MD5))
|
||||||
|| (item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.MD5)))
|
|| (item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.MD5)))
|
||||||
{
|
{
|
||||||
fieldDats[DatItemField.MD5].Items.Add(key, item);
|
fieldDats[Models.Metadata.Rom.MD5Key].Items.Add(key, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the file has a CRC
|
// If the file has a CRC
|
||||||
else if ((item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.CRC)))
|
else if ((item.ItemType == ItemType.Rom && !string.IsNullOrEmpty((item as Rom)!.CRC)))
|
||||||
{
|
{
|
||||||
fieldDats[DatItemField.CRC].Items.Add(key, item);
|
fieldDats[Models.Metadata.Rom.CRCKey].Items.Add(key, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fieldDats[DatItemField.NULL].Items.Add(key, item);
|
fieldDats["null"].Items.Add(key, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if NET40_OR_GREATER || NETCOREAPP
|
#if NET40_OR_GREATER || NETCOREAPP
|
||||||
|
|||||||
@@ -65,26 +65,6 @@ namespace SabreTools.Test.Core
|
|||||||
Assert.Equal(expected, actual);
|
Assert.Equal(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Theory]
|
|
||||||
[InlineData(null, DatItemField.NULL)]
|
|
||||||
[InlineData("name", DatItemField.NULL)]
|
|
||||||
[InlineData("item-name", DatItemField.Name)]
|
|
||||||
[InlineData("item.name", DatItemField.Name)]
|
|
||||||
[InlineData("item_name", DatItemField.Name)]
|
|
||||||
[InlineData("item name", DatItemField.Name)]
|
|
||||||
[InlineData("datitem-name", DatItemField.Name)]
|
|
||||||
[InlineData("datitem.name", DatItemField.Name)]
|
|
||||||
[InlineData("datitem_name", DatItemField.Name)]
|
|
||||||
[InlineData("datitem name", DatItemField.Name)]
|
|
||||||
[InlineData("ITEM.NAME", DatItemField.Name)]
|
|
||||||
[InlineData("iTeM.namE", DatItemField.Name)]
|
|
||||||
public void AsDatItemFieldProcessingTest(string? field, DatItemField expected)
|
|
||||||
{
|
|
||||||
// TODO: Write new test for all supported fields
|
|
||||||
DatItemField actual = field.AsDatItemField();
|
|
||||||
Assert.Equal(expected, actual);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(null, DeviceType.NULL)]
|
[InlineData(null, DeviceType.NULL)]
|
||||||
[InlineData("unknown", DeviceType.Unknown)]
|
[InlineData("unknown", DeviceType.Unknown)]
|
||||||
@@ -773,7 +753,6 @@ namespace SabreTools.Test.Core
|
|||||||
[InlineData(ChipType.NULL, 2)]
|
[InlineData(ChipType.NULL, 2)]
|
||||||
[InlineData(ControlType.NULL, 15)]
|
[InlineData(ControlType.NULL, 15)]
|
||||||
[InlineData(DatHeaderField.NULL, 94)]
|
[InlineData(DatHeaderField.NULL, 94)]
|
||||||
[InlineData(DatItemField.NULL, 197)]
|
|
||||||
[InlineData(DeviceType.NULL, 21)]
|
[InlineData(DeviceType.NULL, 21)]
|
||||||
[InlineData(DisplayType.NULL, 5)]
|
[InlineData(DisplayType.NULL, 5)]
|
||||||
[InlineData(Endianness.NULL, 2)]
|
[InlineData(Endianness.NULL, 2)]
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace SabreTools.Features
|
|||||||
AddFeature(OutputDirStringInput);
|
AddFeature(OutputDirStringInput);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool ProcessFeatures(Dictionary<string, Help.Feature> features)
|
public override bool ProcessFeatures(Dictionary<string, Feature?> features)
|
||||||
{
|
{
|
||||||
// If the base fails, just fail out
|
// If the base fails, just fail out
|
||||||
if (!base.ProcessFeatures(features))
|
if (!base.ProcessFeatures(features))
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace SabreTools.Features
|
|||||||
AddFeature(TypeFlag);
|
AddFeature(TypeFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool ProcessFeatures(Dictionary<string, Help.Feature> features)
|
public override bool ProcessFeatures(Dictionary<string, Feature?> features)
|
||||||
{
|
{
|
||||||
// If the base fails, just fail out
|
// If the base fails, just fail out
|
||||||
if (!base.ProcessFeatures(features))
|
if (!base.ProcessFeatures(features))
|
||||||
@@ -68,13 +68,13 @@ namespace SabreTools.Features
|
|||||||
Parser.ParseInto(internalDat, file);
|
Parser.ParseInto(internalDat, file);
|
||||||
|
|
||||||
// Get the output directory
|
// Get the output directory
|
||||||
OutputDir = OutputDir.Ensure();
|
OutputDir = OutputDir?.Ensure();
|
||||||
OutputDir = file.GetOutputPath(OutputDir, GetBoolean(features, InplaceValue));
|
OutputDir = file.GetOutputPath(OutputDir, GetBoolean(features, InplaceValue));
|
||||||
|
|
||||||
// Extension splitting
|
// Extension splitting
|
||||||
if (splittingMode.HasFlag(SplittingMode.Extension))
|
if (splittingMode.HasFlag(SplittingMode.Extension))
|
||||||
{
|
{
|
||||||
(DatFile extADat, DatFile extBDat) = DatTools.Splitter.SplitByExtension(internalDat, GetList(features, ExtAListValue), GetList(features, ExtBListValue));
|
(DatFile? extADat, DatFile? extBDat) = DatTools.Splitter.SplitByExtension(internalDat, GetList(features, ExtAListValue), GetList(features, ExtBListValue));
|
||||||
|
|
||||||
InternalStopwatch watch = new("Outputting extension-split DATs");
|
InternalStopwatch watch = new("Outputting extension-split DATs");
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ namespace SabreTools.Features
|
|||||||
// Hash splitting
|
// Hash splitting
|
||||||
if (splittingMode.HasFlag(SplittingMode.Hash))
|
if (splittingMode.HasFlag(SplittingMode.Hash))
|
||||||
{
|
{
|
||||||
Dictionary<DatItemField, DatFile> typeDats = DatTools.Splitter.SplitByHash(internalDat);
|
Dictionary<string, DatFile> typeDats = DatTools.Splitter.SplitByHash(internalDat);
|
||||||
|
|
||||||
InternalStopwatch watch = new("Outputting hash-split DATs");
|
InternalStopwatch watch = new("Outputting hash-split DATs");
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ namespace SabreTools.Features
|
|||||||
foreach (var itemType in typeDats.Keys)
|
foreach (var itemType in typeDats.Keys)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
Writer.Write(typeDats[itemType], OutputDir);
|
Writer.Write(typeDats[itemType], OutputDir!);
|
||||||
#if NET40_OR_GREATER || NETCOREAPP
|
#if NET40_OR_GREATER || NETCOREAPP
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ namespace SabreTools.Features
|
|||||||
AddFeature(InplaceFlag);
|
AddFeature(InplaceFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool ProcessFeatures(Dictionary<string, Help.Feature> features)
|
public override bool ProcessFeatures(Dictionary<string, Feature?> features)
|
||||||
{
|
{
|
||||||
// If the base fails, just fail out
|
// If the base fails, just fail out
|
||||||
if (!base.ProcessFeatures(features))
|
if (!base.ProcessFeatures(features))
|
||||||
|
|||||||
Reference in New Issue
Block a user