Add full-file deserialization across the board

This commit is contained in:
Matt Nadareski
2023-08-10 00:59:36 -04:00
parent 4d3ce049e0
commit 887bde41d5
14 changed files with 449 additions and 198 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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