mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add full-file deserialization across the board
This commit is contained in:
@@ -8,13 +8,29 @@ namespace SabreTools.Serialization
|
||||
/// </summary>
|
||||
public partial class ArchiveDotOrg : XmlSerializer<Files>
|
||||
{
|
||||
// TODO: Add deserialization of entire Files
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to an array of <cref="Models.ArchiveDotOrg.Files"/>
|
||||
/// </summary>
|
||||
public static Files? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var files = new Files();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
files.File = machines.SelectMany(ConvertFromInternalModel).ToArray();
|
||||
|
||||
return files;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.ArchiveDotOrg.File"/>
|
||||
/// </summary>
|
||||
public static File[]? ConvertFromInternalModel(Models.Internal.Machine? item)
|
||||
private static File[]? ConvertFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -121,13 +121,30 @@ namespace SabreTools.Serialization
|
||||
return dat;
|
||||
}
|
||||
|
||||
// TODO: Add deserialization of entire MetadataFile
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.AttractMode.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
var metadataFile = header != null ? ConvertHeaderFromInternalModel(header) : new MetadataFile();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
metadataFile.Row = machines.SelectMany(ConvertMachineFromInternalModel).ToArray();
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.AttractMode.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertHeaderToInternalModel(Models.Internal.Header? item)
|
||||
private static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -142,7 +159,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.AttractMode.Row"/>
|
||||
/// </summary>
|
||||
public static Row?[]? ConvertMachineToInternalModel(Models.Internal.Machine? item)
|
||||
private static Row?[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -153,7 +170,7 @@ namespace SabreTools.Serialization
|
||||
if (rom == null)
|
||||
return null;
|
||||
|
||||
var rowItem = ConvertToInternalModel(rom);
|
||||
var rowItem = ConvertFromInternalModel(rom);
|
||||
|
||||
rowItem.Name = item.ReadString(Models.Internal.Machine.NameKey);
|
||||
rowItem.Emulator = item.ReadString(Models.Internal.Machine.EmulatorKey);
|
||||
@@ -181,7 +198,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.AttractMode.Row"/>
|
||||
/// </summary>
|
||||
private static Row? ConvertToInternalModel(Models.Internal.Rom? item)
|
||||
private static Row? ConvertFromInternalModel(Models.Internal.Rom? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -830,13 +830,33 @@ namespace SabreTools.Serialization
|
||||
return driver;
|
||||
}
|
||||
|
||||
// TODO: Add deserialization of entire MetadataFile
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.ClrMamePro.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item, bool game = false)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var metadataFile = new MetadataFile();
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
if (header != null)
|
||||
metadataFile.ClrMamePro = ConvertHeaderFromInternalModel(header);
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
metadataFile.Game = machines.Select(machine => ConvertMachineFromInternalModel(machine, game)).ToArray();
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.ClrMamePro.ClrMamePro"/>
|
||||
/// </summary>
|
||||
public static Models.ClrMamePro.ClrMamePro? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
private static Models.ClrMamePro.ClrMamePro? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -865,7 +885,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Archive"/> to <cref="Models.ClrMamePro.Machine"/>
|
||||
/// </summary>
|
||||
public static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item, bool game = false)
|
||||
private static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item, bool game = false)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -18,18 +18,10 @@ namespace SabreTools.Serialization
|
||||
/// <param name="path">Path to the file to deserialize</param>
|
||||
/// <returns>Deserialized data on success, null on failure</returns>
|
||||
public static MetadataFile? Deserialize(string path)
|
||||
{
|
||||
try
|
||||
{
|
||||
using var stream = PathProcessor.OpenStream(path);
|
||||
return Deserialize(stream);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// TODO: Handle logging the exception
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Deserializes a DosCenter metadata file in a stream to the defined type
|
||||
@@ -37,8 +29,6 @@ namespace SabreTools.Serialization
|
||||
/// <param name="stream">Stream to deserialize</param>
|
||||
/// <returns>Deserialized data on success, null on failure</returns>
|
||||
public static MetadataFile? Deserialize(Stream? stream)
|
||||
{
|
||||
try
|
||||
{
|
||||
// If the stream is null
|
||||
if (stream == null)
|
||||
@@ -190,12 +180,6 @@ namespace SabreTools.Serialization
|
||||
dat.ADDITIONAL_ELEMENTS = additional.ToArray();
|
||||
return dat;
|
||||
}
|
||||
catch
|
||||
{
|
||||
// TODO: Handle logging the exception
|
||||
return default;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a File object from the current reader context
|
||||
@@ -232,13 +216,33 @@ namespace SabreTools.Serialization
|
||||
return file;
|
||||
}
|
||||
|
||||
// TODO: Add deserialization of entire MetadataFile
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.DosCenter.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var metadataFile = new MetadataFile();
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
if (header != null)
|
||||
metadataFile.DosCenter = ConvertHeaderFromInternalModel(header);
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
metadataFile.Game = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.DosCenter.DosCenter"/>
|
||||
/// </summary>
|
||||
public static Models.DosCenter.DosCenter? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
private static Models.DosCenter.DosCenter? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -259,7 +263,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.DosCenter.Game"/>
|
||||
/// </summary>
|
||||
public static Game? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
private static Game? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -77,25 +77,41 @@ namespace SabreTools.Serialization
|
||||
return dat;
|
||||
}
|
||||
|
||||
// TODO: Add deserialization of entire MetadataFile
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.EverdriveSMDB.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var metadataFile = new MetadataFile();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
metadataFile.Row = machines.SelectMany(ConvertMachineFromInternalModel).ToArray();
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.EverdriveSMDB.Row"/>
|
||||
/// </summary>
|
||||
public static Row[]? ConvertMachineToEverdriveSMDB(Models.Internal.Machine item)
|
||||
private static Row[]? ConvertMachineFromInternalModel(Models.Internal.Machine item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var roms = item.Read<Models.Internal.Rom[]>(Models.Internal.Machine.RomKey);
|
||||
return roms?.Select(ConvertToEverdriveSMDB)?.ToArray();
|
||||
return roms?.Select(ConvertFromInternalModel)?.ToArray();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.EverdriveSMDB.Row"/>
|
||||
/// </summary>
|
||||
private static Row? ConvertToEverdriveSMDB(Models.Internal.Rom? item)
|
||||
private static Row? ConvertFromInternalModel(Models.Internal.Rom? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -142,13 +142,27 @@ namespace SabreTools.Serialization
|
||||
return dat;
|
||||
}
|
||||
|
||||
// TODO: Add deserialization of entire Hashfile
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to an array of <cref="Models.Hashfile.Hashfile"/>
|
||||
/// </summary>
|
||||
public static Models.Hashfile.Hashfile[]? ConvertFromInternalModel(Models.Internal.MetadataFile? item, Hash hash)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
return machines.Select(machine => ConvertMachineFromInternalModel(machine, hash)).ToArray();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Hashfile.Hashfile"/>
|
||||
/// </summary>
|
||||
public static Models.Hashfile.Hashfile? ConvertMachineToInternalModel(Models.Internal.Machine? item, Hash hash)
|
||||
private static Models.Hashfile.Hashfile? ConvertMachineFromInternalModel(Models.Internal.Machine? item, Hash hash)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -188,13 +188,29 @@ namespace SabreTools.Serialization
|
||||
return dat;
|
||||
}
|
||||
|
||||
// TODO: Add deserialization of entire MetadataFile
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.Listrom.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var metadataFile = new MetadataFile();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
metadataFile.Set = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Listrom.Set"/>
|
||||
/// </summary>
|
||||
public static Set? ConvertMachineToListrom(Models.Internal.Machine? item)
|
||||
private static Set? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -209,11 +225,11 @@ namespace SabreTools.Serialization
|
||||
|
||||
var roms = item.Read<Models.Internal.Rom[]>(Models.Internal.Machine.RomKey);
|
||||
if (roms != null)
|
||||
rowItems.AddRange(roms.Select(ConvertToListrom));
|
||||
rowItems.AddRange(roms.Select(ConvertFromInternalModel));
|
||||
|
||||
var disks = item.Read<Models.Internal.Disk[]>(Models.Internal.Machine.DiskKey);
|
||||
if (disks != null)
|
||||
rowItems.AddRange(disks.Select(ConvertToListrom));
|
||||
rowItems.AddRange(disks.Select(ConvertFromInternalModel));
|
||||
|
||||
set.Row = rowItems.ToArray();
|
||||
return set;
|
||||
@@ -222,7 +238,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Disk"/> to <cref="Models.Listrom.Row"/>
|
||||
/// </summary>
|
||||
private static Row? ConvertToListrom(Models.Internal.Disk? item)
|
||||
private static Row? ConvertFromInternalModel(Models.Internal.Disk? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -245,7 +261,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.Listrom.Row"/>
|
||||
/// </summary>
|
||||
private static Row? ConvertToListrom(Models.Internal.Rom? item)
|
||||
private static Row? ConvertFromInternalModel(Models.Internal.Rom? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -10,10 +10,46 @@ namespace SabreTools.Serialization
|
||||
{
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.Listxml.M1"/>
|
||||
/// </summary>
|
||||
public static M1? ConvertM1FromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
var m1 = header != null ? ConvertM1FromInternalModel(header) : new M1();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
m1.Game = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||
|
||||
return m1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.Listxml.Mame"/>
|
||||
/// </summary>
|
||||
public static Mame? ConvertMameFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
var mame = header != null ? ConvertMameFromInternalModel(header) : new Mame();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
mame.Game = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||
|
||||
return mame;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.Listxml.M1"/>
|
||||
/// </summary>
|
||||
public static M1? ConvertM1FromInternalModel(Models.Internal.Header? item)
|
||||
private static M1? ConvertM1FromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -28,7 +64,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.Listxml.Mame"/>
|
||||
/// </summary>
|
||||
public static Mame? ConvertMameFromInternalModel(Models.Internal.Header? item)
|
||||
private static Mame? ConvertMameFromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -39,13 +75,14 @@ namespace SabreTools.Serialization
|
||||
Debug = item.ReadString(Models.Internal.Header.DebugKey),
|
||||
MameConfig = item.ReadString(Models.Internal.Header.MameConfigKey),
|
||||
};
|
||||
|
||||
return mame;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Listxml.GameBase"/>
|
||||
/// </summary>
|
||||
public static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
private static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -8,13 +8,39 @@ namespace SabreTools.Serialization
|
||||
/// </summary>
|
||||
public partial class Logiqx : XmlSerializer<Datafile>
|
||||
{
|
||||
// TODO: Add deserialization of entire Datafile
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.Logiqx.Datafile"/>
|
||||
/// </summary>
|
||||
public static Datafile? ConvertFromInternalModel(Models.Internal.MetadataFile? item, bool game = false)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var datafile = new Datafile
|
||||
{
|
||||
Build = item.ReadString(Models.Internal.Header.BuildKey),
|
||||
Debug = item.ReadString(Models.Internal.Header.DebugKey),
|
||||
SchemaLocation = item.ReadString(Models.Internal.Header.SchemaLocationKey),
|
||||
};
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
if (header != null)
|
||||
datafile.Header = ConvertHeaderFromInternalModel(header);
|
||||
|
||||
// TODO: Handle Dir items
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
datafile.Game = machines.Select(machine => ConvertMachineFromInternalModel(machine, game)).ToArray();
|
||||
|
||||
return datafile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.Logiqx.Header"/>
|
||||
/// </summary>
|
||||
public static Header? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
private static Header ConvertHeaderFromInternalModel(Models.Internal.Header item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -76,7 +102,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Logiqx.GameBase"/>
|
||||
/// </summary>
|
||||
public static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item, bool game = false)
|
||||
private static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item, bool game = false)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -8,13 +8,30 @@ namespace SabreTools.Serialization
|
||||
/// </summary>
|
||||
public partial class OfflineList : XmlSerializer<Dat>
|
||||
{
|
||||
// TODO: Add deserialization of entire Dat
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.OfflineList.Dat"/>
|
||||
/// </summary>
|
||||
public static Dat? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
var dat = header != null ? ConvertHeaderFromInternalModel(header) : new Dat();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
dat.Games = new Games { Game = machines.Select(ConvertMachineFromInternalModel).ToArray() };
|
||||
|
||||
return dat;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.OfflineList.Dat"/>
|
||||
/// </summary>
|
||||
public static Dat? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
private static Dat? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -66,7 +83,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.OfflineList.Game"/>
|
||||
/// </summary>
|
||||
public static Game? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
private static Game? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -8,13 +8,30 @@ namespace SabreTools.Serialization
|
||||
/// </summary>
|
||||
public partial class OpenMSX : XmlSerializer<SoftwareDb>
|
||||
{
|
||||
// TODO: Add deserialization of entire SoftwareDb
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.OpenMSX.SoftwareDb"/>
|
||||
/// </summary>
|
||||
public static SoftwareDb? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
var softwareDb = header != null ? ConvertHeaderFromInternalModel(header) : new SoftwareDb();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
softwareDb.Software = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||
|
||||
return softwareDb;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.OpenMSX.SoftwareDb"/>
|
||||
/// </summary>
|
||||
public static SoftwareDb? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
private static SoftwareDb? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -29,7 +46,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.OpenMSX.Software"/>
|
||||
/// </summary>
|
||||
public static Software? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
private static Software? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -221,13 +221,30 @@ namespace SabreTools.Serialization
|
||||
return dat;
|
||||
}
|
||||
|
||||
// TODO: Add deserialization of entire MetadataFile
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.RomCenter.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
var metadataFile = header != null ? ConvertHeaderFromInternalModel(header) : new MetadataFile();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
metadataFile.Games = new Games { Rom = machines.SelectMany(ConvertMachineFromInternalModel).ToArray() };
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.RomCenter.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
private static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -283,7 +300,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.RomCenter.Rom"/>
|
||||
/// </summary>
|
||||
public static Rom?[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
private static Rom?[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -120,13 +120,30 @@ namespace SabreTools.Serialization
|
||||
return dat;
|
||||
}
|
||||
|
||||
// TODO: Add deserialization of entire MetadataFile
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.SeparatedValue.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
var metadataFile = header != null ? ConvertHeaderFromInternalModel(header) : new MetadataFile();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
metadataFile.Row = machines.SelectMany(ConvertMachineFromInternalModel).ToArray();
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.SeparatedValue.MetadataFile"/>
|
||||
/// </summary>
|
||||
public static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
private static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -141,7 +158,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.SeparatedValue.Row"/>
|
||||
/// </summary>
|
||||
public static Row[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
private static Row[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
@@ -8,13 +8,30 @@ namespace SabreTools.Serialization
|
||||
/// </summary>
|
||||
public partial class SoftawreList : XmlSerializer<SoftwareList>
|
||||
{
|
||||
// TODO: Add deserialization of entire SoftwareList
|
||||
#region Deserialize
|
||||
#region Internal
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.SoftawreList.SoftwareList"/>
|
||||
/// </summary>
|
||||
public static SoftwareList? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||
var metadataFile = header != null ? ConvertHeaderFromInternalModel(header) : new SoftwareList();
|
||||
|
||||
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||
if (machines != null && machines.Any())
|
||||
metadataFile.Software = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.SoftwareList.SoftwareList"/>
|
||||
/// </summary>
|
||||
public static SoftwareList? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
private static SoftwareList? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
@@ -31,7 +48,7 @@ namespace SabreTools.Serialization
|
||||
/// <summary>
|
||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.SoftwareList.Software"/>
|
||||
/// </summary>
|
||||
public static Software? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
private static Software? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||
{
|
||||
if (item == null)
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user