Convert Metadata file keys to proper properties

This commit is contained in:
Matt Nadareski
2026-04-04 21:17:28 -04:00
parent 3b2b4bc525
commit 0b99602bc7
39 changed files with 114 additions and 230 deletions

View File

@@ -4,22 +4,14 @@ namespace SabreTools.Data.Models.Metadata
/// <summary>
/// Format-agnostic representation of a full metadata file
/// </summary>
/// TODO: ICloneable
/// TODO: IComparable<MetadataFile>
public class MetadataFile : DictionaryBase
{
#region Keys
public Header? Header { get; set; }
/// <remarks>Machine[]</remarks>
[NoFilter]
public const string MachineKey = "machine";
public InfoSource? InfoSource { get; set; }
/// <remarks>Header</remarks>
[NoFilter]
public const string HeaderKey = "header";
/// <remarks>InfoSource</remarks>
[NoFilter]
public const string InfoSourceKey = "infosource";
#endregion
public Machine[]? Machine { get; set; }
}
}

View File

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

View File

@@ -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.Header>(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.Machine>(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);

View File

@@ -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.Header>(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.Machine>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = item.Machine;
if (machines is not null)
ConvertMachines(machines, source, sourceIndex: 0, statsOnly, filterRunner);
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel
var files = new Files();
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
var items = new List<File>();
foreach (var machine in machines ?? [])
{

View File

@@ -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;
}

View File

@@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
var items = new List<Row>();
foreach (var machine in machines ?? [])
{

View File

@@ -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
/// <summary>
/// Convert from <see cref="Row"/> to <see cref="Models.Metadata.Machine"/>
/// </summary>
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,

View File

@@ -18,18 +18,15 @@ namespace SabreTools.Serialization.CrossModel
var metadataFile = new MetadataFile();
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(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.InfoSource>(Data.Models.Metadata.MetadataFile.InfoSourceKey);
var info = obj.InfoSource;
if (info is not null)
metadataFile.Info = ConvertInfoSourceFromInternalModel(info);

View File

@@ -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
/// <summary>
/// Convert from <see cref="GameBase"/> to <see cref="Models.Metadata.Machine"/>
/// </summary>
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,

View File

@@ -13,11 +13,11 @@ namespace SabreTools.Serialization.CrossModel
var metadataFile = new MetadataFile();
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
if (machines is not null && machines.Length > 0)
metadataFile.Game = Array.ConvertAll(machines, ConvertMachineFromInternalModel);

View File

@@ -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;
}

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel
var metadataFile = new MetadataFile();
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
var items = new List<Row>();
foreach (var machine in machines ?? [])
{

View File

@@ -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;
}

View File

@@ -18,7 +18,7 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
if (machines is null || machines.Length == 0)
return null;

View File

@@ -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;
}

View File

@@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel
var metadataFile = new MetadataFile();
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
if (machines is not null && machines.Length > 0)
metadataFile.Set = Array.ConvertAll(machines, ConvertMachineFromInternalModel);

View File

@@ -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;
}

View File

@@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
if (machines is not null && machines.Length > 0)
mame.Game = Array.ConvertAll(machines, ConvertMachineFromInternalModel);

View File

@@ -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;
}

View File

@@ -18,7 +18,7 @@ namespace SabreTools.Serialization.CrossModel
var datafile = new Datafile();
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(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));

View File

@@ -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<Data.Models.Metadata.Machine>();
@@ -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;
}

View File

@@ -10,10 +10,10 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
if (machines is not null && machines.Length > 0)
m1.Game = Array.ConvertAll(machines, Listxml.ConvertMachineFromInternalModel);

View File

@@ -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;
}

View File

@@ -10,10 +10,10 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
if (machines is not null && machines.Length > 0)
m1.Game = Array.ConvertAll(machines, Listxml.ConvertMachineFromInternalModel);

View File

@@ -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;
}

View File

@@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
if (machines is not null && machines.Length > 0)
{
dat.Games = new Games

View File

@@ -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;
}

View File

@@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
if (machines is not null && machines.Length > 0)
softwareDb.Software = Array.ConvertAll(machines, ConvertMachineFromInternalModel);

View File

@@ -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;
}

View File

@@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
var items = new List<Rom>();
foreach (var machine in machines ?? [])
{

View File

@@ -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;
}

View File

@@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
var items = new List<Row>();
foreach (var machine in machines ?? [])
{

View File

@@ -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;
}

View File

@@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel
if (obj is null)
return null;
var header = obj.Read<Data.Models.Metadata.Header>(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.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
var machines = obj.Machine;
if (machines is not null && machines.Length > 0)
metadataFile.Software = Array.ConvertAll(machines, ConvertMachineFromInternalModel);

View File

@@ -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;
}