From 0b99602bc72391fd8e60f5ed72894b8abe8daa7a Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 21:17:28 -0400 Subject: [PATCH] Convert Metadata file keys to proper properties --- .../Metadata/MetadataFile.cs | 18 +--- .../DatFileTests.FromMetadata.cs | 8 +- .../DatFileTests.ToMetadata.cs | 4 +- .../DatFile.FromMetadata.cs | 6 +- .../DatFile.ToMetadata.cs | 8 +- SabreTools.Metadata.Filter/FilterKey.cs | 8 +- SabreTools.Metadata.Filter/FilterRunner.cs | 16 ++-- .../ArchiveDotOrg.Deserializer.cs | 2 +- .../ArchiveDotOrg.Serializer.cs | 7 +- .../AttractMode.Deserializer.cs | 4 +- .../AttractMode.Serializer.cs | 12 +-- .../ClrMamePro.Deserializer.cs | 11 +-- .../ClrMamePro.Serializer.cs | 14 +-- .../DosCenter.Deserializer.cs | 4 +- .../DosCenter.Serializer.cs | 12 +-- .../EverdriveSMDB.Deserializer.cs | 2 +- .../EverdriveSMDB.Serializer.cs | 7 +- .../Hashfile.Deserializer.cs | 2 +- .../Hashfile.Serializer.cs | 4 +- .../Listrom.Deserializer.cs | 2 +- .../Listrom.Serializer.cs | 7 +- .../Listxml.Deserializer.cs | 4 +- .../Listxml.Serializer.cs | 92 ++++--------------- .../Logiqx.Deserializer.cs | 4 +- .../Logiqx.Serializer.cs | 4 +- .../M1.Deserializer.cs | 4 +- .../M1.Serializer.cs | 7 +- .../Mess.Deserializer.cs | 4 +- .../Mess.Serializer.cs | 7 +- .../OfflineList.Deserializer.cs | 4 +- .../OfflineList.Serializer.cs | 7 +- .../OpenMSX.Deserializer.cs | 4 +- .../OpenMSX.Serializer.cs | 12 +-- .../RomCenter.Deserializer.cs | 4 +- .../RomCenter.Serializer.cs | 7 +- .../SeparatedValue.Deserializer.cs | 4 +- .../SeparatedValue.Serializer.cs | 7 +- .../SoftwareList.Deserializer.cs | 4 +- .../SoftwareList.Serializer.cs | 7 +- 39 files changed, 114 insertions(+), 230 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/MetadataFile.cs b/SabreTools.Data.Models/Metadata/MetadataFile.cs index 1bdbef9a..efbfbd1c 100644 --- a/SabreTools.Data.Models/Metadata/MetadataFile.cs +++ b/SabreTools.Data.Models/Metadata/MetadataFile.cs @@ -4,22 +4,14 @@ namespace SabreTools.Data.Models.Metadata /// /// Format-agnostic representation of a full metadata file /// + /// TODO: ICloneable + /// TODO: IComparable public class MetadataFile : DictionaryBase { - #region Keys + public Header? Header { get; set; } - /// Machine[] - [NoFilter] - public const string MachineKey = "machine"; + public InfoSource? InfoSource { get; set; } - /// Header - [NoFilter] - public const string HeaderKey = "header"; - - /// InfoSource - [NoFilter] - public const string InfoSourceKey = "infosource"; - - #endregion + public Machine[]? Machine { get; set; } } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 92432131..cc83a9fd 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -41,8 +41,8 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.Machine[]? machines = null; Data.Models.Metadata.MetadataFile? item = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = header, - [Data.Models.Metadata.MetadataFile.MachineKey] = machines, + Header = header, + Machine = machines, }; DatFile datFile = new Formats.Logiqx(null, useGame: false); @@ -59,8 +59,8 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.Machine[]? machines = [machine]; Data.Models.Metadata.MetadataFile? item = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = header, - [Data.Models.Metadata.MetadataFile.MachineKey] = machines, + Header = header, + Machine = machines, }; DatFile datFile = new Formats.Logiqx(null, useGame: false); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 8843f57f..a3045f03 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -32,7 +32,7 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.MetadataFile? actual = datFile.ConvertToMetadata(); Assert.NotNull(actual); - Data.Models.Metadata.Header? actualHeader = actual.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + Data.Models.Metadata.Header? actualHeader = actual.Header; ValidateMetadataHeader(actualHeader); } @@ -80,7 +80,7 @@ namespace SabreTools.Metadata.DatFiles.Test Data.Models.Metadata.MetadataFile? actual = datFile.ConvertToMetadata(); Assert.NotNull(actual); - Data.Models.Metadata.Machine[]? machines = actual.ReadArray(Data.Models.Metadata.MetadataFile.MachineKey); + Data.Models.Metadata.Machine[]? machines = actual.Machine; Assert.NotNull(machines); Data.Models.Metadata.Machine actualMachine = Assert.Single(machines); ValidateMetadataMachine(actualMachine); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index dba32835..2b27899d 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -35,7 +35,7 @@ namespace SabreTools.Metadata.DatFiles FilterRunner? filterRunner) { // If the metadata file is invalid, we can't do anything - if (item is null || item.Count == 0) + if (item is null) return; // Create an internal source and add to the dictionary @@ -43,12 +43,12 @@ namespace SabreTools.Metadata.DatFiles // long sourceIndex = AddSourceDB(source); // Get the header from the metadata - var header = item.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = item.Header; if (header is not null) ConvertHeader(header, keep); // Get the machines from the metadata - var machines = item.ReadArray(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = item.Machine; if (machines is not null) ConvertMachines(machines, source, sourceIndex: 0, statsOnly, filterRunner); } diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 601bab62..620517c6 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -24,12 +24,12 @@ namespace SabreTools.Metadata.DatFiles // Convert and assign the header var header = Header.GetInternalClone(); if (header is not null) - metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = header; + metadataFile.Header = header; // Convert and assign the machines var machines = ConvertMachines(ignoreblanks); if (machines is not null) - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = machines; + metadataFile.Machine = machines; return metadataFile; } @@ -49,12 +49,12 @@ namespace SabreTools.Metadata.DatFiles // Convert and assign the header var header = Header.GetInternalClone(); if (header is not null) - metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = header; + metadataFile.Header = header; // Convert and assign the machines var machines = ConvertMachinesDB(ignoreblanks); if (machines is not null) - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = machines; + metadataFile.Machine = machines; return metadataFile; } diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index 25555ac3..9a207be5 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -111,7 +111,7 @@ namespace SabreTools.Metadata.Filter if (constantMatch is not null) { // Return the sanitized ID - itemName = MetadataFile.HeaderKey; + itemName = "header"; fieldName = constantMatch; return true; } @@ -127,7 +127,7 @@ namespace SabreTools.Metadata.Filter if (propertyMatch is not null) { // Return the sanitized ID - itemName = MetadataFile.HeaderKey; + itemName = "header"; fieldName = propertyMatch.ToLowerInvariant(); return true; } @@ -151,7 +151,7 @@ namespace SabreTools.Metadata.Filter if (constantMatch is not null) { // Return the sanitized ID - itemName = MetadataFile.MachineKey; + itemName = "machine"; fieldName = constantMatch; return true; } @@ -167,7 +167,7 @@ namespace SabreTools.Metadata.Filter if (propertyMatch is not null) { // Return the sanitized ID - itemName = MetadataFile.MachineKey; + itemName = "machine"; fieldName = propertyMatch.ToLowerInvariant(); return true; } diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs index ddbe82ee..440731a8 100644 --- a/SabreTools.Metadata.Filter/FilterRunner.cs +++ b/SabreTools.Metadata.Filter/FilterRunner.cs @@ -36,8 +36,8 @@ namespace SabreTools.Metadata.Filter { string? itemName = dictionaryBase switch { - Header => MetadataFile.HeaderKey, - Machine => MetadataFile.MachineKey, + Header => "header", + Machine => "machine", DatItem => TypeHelper.GetXmlRootAttributeElementName(dictionaryBase.GetType()), _ => null, }; @@ -73,12 +73,12 @@ namespace SabreTools.Metadata.Filter string key = filter.Key.ToString(); // Special case for machine types - if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "isbios") - key = $"{MetadataFile.MachineKey}.COMBINEDTYPE"; - else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "isdevice") - key = $"{MetadataFile.MachineKey}.COMBINEDTYPE"; - else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "ismechanical") - key = $"{MetadataFile.MachineKey}.COMBINEDTYPE"; + if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "isbios") + key = $"{"machine"}.COMBINEDTYPE"; + else if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "isdevice") + key = $"{"machine"}.COMBINEDTYPE"; + else if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "ismechanical") + key = $"{"machine"}.COMBINEDTYPE"; // Set the expected group type GroupType groupType = GroupType.OR; diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs index fd4293da..8db234f7 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs @@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel var files = new Files(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs index 5e0125bc..d8cca52d 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs @@ -14,14 +14,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(), + Header = ConvertHeaderToInternalModel(), }; if (item?.File is not null && item.File.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.File, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.File, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs index 83db08db..dfd38d2f 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs @@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs index db50c734..0e42ad1d 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj), + Header = ConvertHeaderToInternalModel(obj), }; if (obj?.Row is not null && obj.Row.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); return metadataFile; } @@ -40,11 +37,8 @@ namespace SabreTools.Serialization.CrossModel /// /// Convert from to /// - private static Data.Models.Metadata.Machine? ConvertMachineToInternalModel(Row? item) + private static Data.Models.Metadata.Machine ConvertMachineToInternalModel(Row item) { - if (item is null) - return null; - var machine = new Data.Models.Metadata.Machine { Name = item.Name, diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index f4f87052..0b4d0200 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -18,18 +18,15 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new MetadataFile(); - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; if (header is not null) metadataFile.ClrMamePro = ConvertHeaderFromInternalModel(header); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) - { - metadataFile.Game - = Array.ConvertAll(machines, m => ConvertMachineFromInternalModel(m, game)); - } + metadataFile.Game = Array.ConvertAll(machines, m => ConvertMachineFromInternalModel(m, game)); - var info = obj.Read(Data.Models.Metadata.MetadataFile.InfoSourceKey); + var info = obj.InfoSource; if (info is not null) metadataFile.Info = ConvertInfoSourceFromInternalModel(info); diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index ba6663f2..3aefbebf 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -14,16 +14,13 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile(); if (obj?.ClrMamePro is not null) - metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj.ClrMamePro); + metadataFile.Header = ConvertHeaderToInternalModel(obj.ClrMamePro); if (obj?.Game is not null && obj.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel); if (obj?.Info is not null) - metadataFile[Data.Models.Metadata.MetadataFile.InfoSourceKey] = ConvertInfoSourceToInternalModel(obj.Info); + metadataFile.InfoSource = ConvertInfoSourceToInternalModel(obj.Info); return metadataFile; } @@ -57,11 +54,8 @@ namespace SabreTools.Serialization.CrossModel /// /// Convert from to /// - private static Data.Models.Metadata.Machine? ConvertMachineToInternalModel(GameBase? item) + private static Data.Models.Metadata.Machine ConvertMachineToInternalModel(GameBase item) { - if (item is null) - return null; - var machine = new Data.Models.Metadata.Machine { Name = item.Name, diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index aee163a9..e3ea96f1 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -13,11 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new MetadataFile(); - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; if (header is not null) metadataFile.DosCenter = ConvertHeaderFromInternalModel(header); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) metadataFile.Game = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index 48aec589..de188ae3 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -14,13 +14,10 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile(); if (obj?.DosCenter is not null) - metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj.DosCenter); + metadataFile.Header = ConvertHeaderToInternalModel(obj.DosCenter); if (obj?.Game is not null && obj.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel); return metadataFile; } @@ -54,10 +51,7 @@ namespace SabreTools.Serialization.CrossModel }; if (item.File is not null && item.File.Length > 0) - { - machine.Rom - = Array.ConvertAll(item.File, ConvertToInternalModel); - } + machine.Rom = Array.ConvertAll(item.File, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs index 488275b9..cf3e9c11 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs @@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs index 4dbc16a2..39e0029e 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(), + Header = ConvertHeaderToInternalModel(), }; if (obj?.Row is not null && obj.Row.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs index e32eb948..73687d69 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs @@ -18,7 +18,7 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is null || machines.Length == 0) return null; diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs index 77124dda..5eba2478 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs @@ -13,11 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(), + Header = ConvertHeaderToInternalModel(), }; var machine = ConvertMachineToInternalModel(obj); - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = new Data.Models.Metadata.Machine[] { machine }; + metadataFile.Machine = new Data.Models.Metadata.Machine[] { machine }; return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index f947f3c5..fe623002 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) metadataFile.Set = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index 7c868a3a..11425615 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -14,14 +14,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(), + Header = ConvertHeaderToInternalModel(), }; if (obj?.Set is not null && obj.Set.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Set, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Set, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 2f670c2d..55e169d9 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var mame = header is not null ? ConvertMameFromInternalModel(header) : new Mame(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) mame.Game = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 1989ec2c..a61e74f3 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Game is not null && item.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Game, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Game, ConvertMachineToInternalModel); return metadataFile; } @@ -62,52 +59,28 @@ namespace SabreTools.Serialization.CrossModel }; if (item.BiosSet is not null && item.BiosSet.Length > 0) - { - machine.BiosSet - = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); - } + machine.BiosSet = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); if (item.Rom is not null && item.Rom.Length > 0) - { - machine.Rom - = Array.ConvertAll(item.Rom, ConvertToInternalModel); - } + machine.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel); if (item.Disk is not null && item.Disk.Length > 0) - { - machine.Disk - = Array.ConvertAll(item.Disk, ConvertToInternalModel); - } + machine.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel); if (item.DeviceRef is not null && item.DeviceRef.Length > 0) - { - machine.DeviceRef - = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); - } + machine.DeviceRef = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); if (item.Sample is not null && item.Sample.Length > 0) - { - machine.Sample - = Array.ConvertAll(item.Sample, ConvertToInternalModel); - } + machine.Sample = Array.ConvertAll(item.Sample, ConvertToInternalModel); if (item.Chip is not null && item.Chip.Length > 0) - { - machine.Chip - = Array.ConvertAll(item.Chip, ConvertToInternalModel); - } + machine.Chip = Array.ConvertAll(item.Chip, ConvertToInternalModel); if (item.Display is not null && item.Display.Length > 0) - { - machine.Display - = Array.ConvertAll(item.Display, ConvertToInternalModel); - } + machine.Display = Array.ConvertAll(item.Display, ConvertToInternalModel); if (item.Video is not null && item.Video.Length > 0) - { - machine.Video - = Array.ConvertAll(item.Video, ConvertToInternalModel); - } + machine.Video = Array.ConvertAll(item.Video, ConvertToInternalModel); if (item.Sound is not null) machine.Sound = ConvertToInternalModel(item.Sound); @@ -116,61 +89,34 @@ namespace SabreTools.Serialization.CrossModel machine.Input = ConvertToInternalModel(item.Input); if (item.DipSwitch is not null && item.DipSwitch.Length > 0) - { - machine.DipSwitch - = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); - } + machine.DipSwitch = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); if (item.Configuration is not null && item.Configuration.Length > 0) - { - machine.Configuration - = Array.ConvertAll(item.Configuration, ConvertToInternalModel); - } + machine.Configuration = Array.ConvertAll(item.Configuration, ConvertToInternalModel); if (item.Port is not null && item.Port.Length > 0) - { - machine.Port - = Array.ConvertAll(item.Port, ConvertToInternalModel); - } + machine.Port = Array.ConvertAll(item.Port, ConvertToInternalModel); if (item.Adjuster is not null && item.Adjuster.Length > 0) - { - machine.Adjuster - = Array.ConvertAll(item.Adjuster, ConvertToInternalModel); - } + machine.Adjuster = Array.ConvertAll(item.Adjuster, ConvertToInternalModel); if (item.Driver is not null) machine.Driver = ConvertToInternalModel(item.Driver); if (item.Feature is not null && item.Feature.Length > 0) - { - machine.Feature - = Array.ConvertAll(item.Feature, ConvertToInternalModel); - } + machine.Feature = Array.ConvertAll(item.Feature, ConvertToInternalModel); if (item.Device is not null && item.Device.Length > 0) - { - machine.Device - = Array.ConvertAll(item.Device, ConvertToInternalModel); - } + machine.Device = Array.ConvertAll(item.Device, ConvertToInternalModel); if (item.Slot is not null && item.Slot.Length > 0) - { - machine.Slot - = Array.ConvertAll(item.Slot, ConvertToInternalModel); - } + machine.Slot = Array.ConvertAll(item.Slot, ConvertToInternalModel); if (item.SoftwareList is not null && item.SoftwareList.Length > 0) - { - machine.SoftwareList - = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); - } + machine.SoftwareList = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); if (item.RamOption is not null && item.RamOption.Length > 0) - { - machine.RamOption - = Array.ConvertAll(item.RamOption, ConvertToInternalModel); - } + machine.RamOption = Array.ConvertAll(item.RamOption, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index ca81602e..712597a6 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -18,7 +18,7 @@ namespace SabreTools.Serialization.CrossModel var datafile = new Datafile(); - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; if (header is not null) { datafile.Build = header.Build; @@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel datafile.Header = ConvertHeaderFromInternalModel(header); } - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) datafile.Game = Array.ConvertAll(machines, m => ConvertMachineFromInternalModel(m, game)); diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index b49e6291..df8c911f 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -13,7 +13,7 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; var machines = new List(); @@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel } if (machines.Count > 0) - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = machines.ToArray(); + metadataFile.Machine = [.. machines]; return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/M1.Deserializer.cs b/SabreTools.Serialization.CrossModel/M1.Deserializer.cs index 224eecdd..13fe1576 100644 --- a/SabreTools.Serialization.CrossModel/M1.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/M1.Deserializer.cs @@ -10,10 +10,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var m1 = header is not null ? ConvertM1FromInternalModel(header) : new Data.Models.Listxml.M1(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) m1.Game = Array.ConvertAll(machines, Listxml.ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/M1.Serializer.cs b/SabreTools.Serialization.CrossModel/M1.Serializer.cs index 4f5cc631..26c28362 100644 --- a/SabreTools.Serialization.CrossModel/M1.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/M1.Serializer.cs @@ -12,14 +12,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Game is not null && item.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs b/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs index b9868ff1..7ee53aa4 100644 --- a/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Mess.Deserializer.cs @@ -10,10 +10,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var m1 = header is not null ? ConvertMessFromInternalModel(header) : new Data.Models.Listxml.Mess(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) m1.Game = Array.ConvertAll(machines, Listxml.ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Mess.Serializer.cs b/SabreTools.Serialization.CrossModel/Mess.Serializer.cs index 05472a90..a148c625 100644 --- a/SabreTools.Serialization.CrossModel/Mess.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Mess.Serializer.cs @@ -12,14 +12,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Game is not null && item.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index 848cb263..35e03656 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var dat = header is not null ? ConvertHeaderFromInternalModel(header) : new Dat(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) { dat.Games = new Games diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index 98984444..3da54c2d 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Games?.Game is not null && item.Games.Game.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Games.Game, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Games.Game, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index 60832b07..0a021bb6 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var softwareDb = header is not null ? ConvertHeaderFromInternalModel(header) : new SoftwareDb(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) softwareDb.Software = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index 9565e6d6..e3bb4a66 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Software is not null && item.Software.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Software, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Software, ConvertMachineToInternalModel); return metadataFile; } @@ -53,10 +50,7 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Dump is not null && item.Dump.Length > 0) - { - machine.Dump - = Array.ConvertAll(item.Dump, ConvertToInternalModel); - } + machine.Dump = Array.ConvertAll(item.Dump, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index 48ec773c..732c960e 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 19c438ee..27c60028 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj), + Header = ConvertHeaderToInternalModel(obj), }; if (obj?.Games?.Rom is not null && obj.Games.Rom.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Games.Rom, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Games.Rom, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index 5a261aa7..c5861300 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new MetadataFile(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; var items = new List(); foreach (var machine in machines ?? []) { diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 23e53f73..947eb8b9 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj), + Header = ConvertHeaderToInternalModel(obj), }; if (obj?.Row is not null && obj.Row.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); return metadataFile; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 0f1b8b4b..5da779d7 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel if (obj is null) return null; - var header = obj.Read(Data.Models.Metadata.MetadataFile.HeaderKey); + var header = obj.Header; var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new Data.Models.SoftwareList.SoftwareList(); - var machines = obj.Read(Data.Models.Metadata.MetadataFile.MachineKey); + var machines = obj.Machine; if (machines is not null && machines.Length > 0) metadataFile.Software = Array.ConvertAll(machines, ConvertMachineFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 3c64bd17..c5625a60 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel var metadataFile = new Data.Models.Metadata.MetadataFile { - [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + Header = ConvertHeaderToInternalModel(item), }; if (item?.Software is not null && item.Software.Length > 0) - { - metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] - = Array.ConvertAll(item.Software, ConvertMachineToInternalModel); - } + metadataFile.Machine = Array.ConvertAll(item.Software, ConvertMachineToInternalModel); return metadataFile; }