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))