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