diff --git a/SabreTools.Serialization/Internal.Hashfile.cs b/SabreTools.Serialization/Internal.Hashfile.cs index 208ca833..355335e5 100644 --- a/SabreTools.Serialization/Internal.Hashfile.cs +++ b/SabreTools.Serialization/Internal.Hashfile.cs @@ -1,3 +1,7 @@ +using System.Collections.Generic; +using System.Linq; +using SabreTools.Core; + namespace SabreTools.Serialization { /// @@ -7,6 +11,86 @@ namespace SabreTools.Serialization { #region Serialize + /// + /// Convert from to + /// + public static Models.Internal.Machine ConvertMachineFromHashfile(Models.Hashfile.Hashfile item) + { + var machine = new Models.Internal.Machine(); + + if (item.SFV != null && item.SFV.Any()) + { + var roms = new List(); + foreach (var sfv in item.SFV) + { + roms.Add(ConvertFromSFV(sfv)); + } + machine[Models.Internal.Machine.RomKey] = roms.ToArray(); + } + + else if (item.MD5 != null && item.MD5.Any()) + { + var roms = new List(); + foreach (var md5 in item.MD5) + { + roms.Add(ConvertFromMD5(md5)); + } + machine[Models.Internal.Machine.RomKey] = roms.ToArray(); + } + + else if (item.SHA1 != null && item.SHA1.Any()) + { + var roms = new List(); + foreach (var sha1 in item.SHA1) + { + roms.Add(ConvertFromSHA1(sha1)); + } + machine[Models.Internal.Machine.RomKey] = roms.ToArray(); + } + + else if (item.SHA256 != null && item.SHA256.Any()) + { + var roms = new List(); + foreach (var sha256 in item.SHA256) + { + roms.Add(ConvertFromSHA256(sha256)); + } + machine[Models.Internal.Machine.RomKey] = roms.ToArray(); + } + + else if (item.SHA384 != null && item.SHA384.Any()) + { + var roms = new List(); + foreach (var sha384 in item.SHA384) + { + roms.Add(ConvertFromSHA384(sha384)); + } + machine[Models.Internal.Machine.RomKey] = roms.ToArray(); + } + + else if (item.SHA512 != null && item.SHA512.Any()) + { + var roms = new List(); + foreach (var sha512 in item.SHA512) + { + roms.Add(ConvertFromSHA512(sha512)); + } + machine[Models.Internal.Machine.RomKey] = roms.ToArray(); + } + + else if (item.SpamSum != null && item.SpamSum.Any()) + { + var roms = new List(); + foreach (var spamSum in item.SpamSum) + { + roms.Add(ConvertFromSpamSum(spamSum)); + } + machine[Models.Internal.Machine.RomKey] = roms.ToArray(); + } + + return machine; + } + /// /// Convert from to /// @@ -102,6 +186,85 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.Hashfile.Hashfile ConvertMachineToHashfile(Models.Internal.Machine item, Hash hash) + { + var hashfile = new Models.Hashfile.Hashfile(); + + if (item.ContainsKey(Models.Internal.Machine.RomKey) && item[Models.Internal.Machine.RomKey] is Models.Internal.Rom[] roms) + { + switch (hash) + { + case Hash.CRC: + var sfvItems = new List(); + foreach (var rom in roms) + { + sfvItems.Add(ConvertToSFV(rom)); + } + hashfile.SFV = sfvItems.ToArray(); + break; + + case Hash.MD5: + var md5Items = new List(); + foreach (var rom in roms) + { + md5Items.Add(ConvertToMD5(rom)); + } + hashfile.MD5 = md5Items.ToArray(); + break; + + case Hash.SHA1: + var sha1Items = new List(); + foreach (var rom in roms) + { + sha1Items.Add(ConvertToSHA1(rom)); + } + hashfile.SHA1 = sha1Items.ToArray(); + break; + + case Hash.SHA256: + var sha256Items = new List(); + foreach (var rom in roms) + { + sha256Items.Add(ConvertToSHA256(rom)); + } + hashfile.SHA256 = sha256Items.ToArray(); + break; + + case Hash.SHA384: + var sha384Items = new List(); + foreach (var rom in roms) + { + sha384Items.Add(ConvertToSHA384(rom)); + } + hashfile.SHA384 = sha384Items.ToArray(); + break; + + case Hash.SHA512: + var sha512Items = new List(); + foreach (var rom in roms) + { + sha512Items.Add(ConvertToSHA512(rom)); + } + hashfile.SHA512 = sha512Items.ToArray(); + break; + + case Hash.SpamSum: + var spamSumItems = new List(); + foreach (var rom in roms) + { + spamSumItems.Add(ConvertToSpamSum(rom)); + } + hashfile.SpamSum = spamSumItems.ToArray(); + break; + } + } + + return hashfile; + } + /// /// Convert from to ///