From 9628dfd279a71dcf0f5a184aead0f3af71ad9700 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 10 Mar 2024 00:59:53 -0500 Subject: [PATCH] Convert SeparatedFile --- .../Formats/SeparatedValue.Reader.cs | 109 +----------------- 1 file changed, 3 insertions(+), 106 deletions(-) diff --git a/SabreTools.DatFiles/Formats/SeparatedValue.Reader.cs b/SabreTools.DatFiles/Formats/SeparatedValue.Reader.cs index 113bf663..5c6678d8 100644 --- a/SabreTools.DatFiles/Formats/SeparatedValue.Reader.cs +++ b/SabreTools.DatFiles/Formats/SeparatedValue.Reader.cs @@ -1,9 +1,4 @@ using System; -using System.Linq; -using SabreTools.Core; -using SabreTools.Core.Tools; -using SabreTools.DatItems; -using SabreTools.DatItems.Formats; namespace SabreTools.DatFiles.Formats { @@ -19,9 +14,10 @@ namespace SabreTools.DatFiles.Formats { // Deserialize the input file var metadataFile = new Serialization.Files.SeparatedValue().Deserialize(filename, _delim); + var metadata = new Serialization.CrossModel.SeparatedValue().Serialize(metadataFile); - // Convert the row data to the internal format - ConvertRows(metadataFile?.Row, filename, indexId, statsOnly); + // Convert to the internal format + ConvertMetadata(metadata, filename, indexId, statsOnly); } catch (Exception ex) when (!throwOnError) { @@ -29,104 +25,5 @@ namespace SabreTools.DatFiles.Formats logger.Error(ex, message); } } - - #region Converters - - /// - /// Convert rows information - /// - /// Array of deserialized models to convert - /// Name of the file to be parsed - /// Index ID for the DAT - /// True to only add item statistics while parsing, false otherwise - private void ConvertRows(Models.SeparatedValue.Row[]? rows, string filename, int indexId, bool statsOnly) - { - // If the rows array is missing, we can't do anything - if (rows == null || !rows.Any()) - return; - - // Loop through the rows and add - foreach (var row in rows) - { - ConvertRow(row, filename, indexId, statsOnly); - } - } - - /// - /// Convert rows information - /// - /// Deserialized model to convert - /// Name of the file to be parsed - /// Index ID for the DAT - /// True to only add item statistics while parsing, false otherwise - private void ConvertRow(Models.SeparatedValue.Row? row, string filename, int indexId, bool statsOnly) - { - // If the row is missing, we can't do anything - if (row == null) - return; - - // Read DAT-level values - //Header.FileName ??= row.FileName; - Header.Name ??= row.InternalName; - Header.Description ??= row.Description; - - // Read Machine values - var machine = new Machine(); - machine.SetFieldValue(Models.Metadata.Machine.DescriptionKey, row.GameDescription); - machine.SetFieldValue(Models.Metadata.Machine.NameKey, row.GameName); - - // Read item values - DatItem? item = null; - switch (row.Type.AsEnumValue()) - { - case ItemType.Disk: - item = new Disk - { - Source = new Source { Index = indexId, Name = filename }, - }; - item.SetName(row.DiskName); - item.SetFieldValue(Models.Metadata.Disk.StatusKey, row.Status?.AsEnumValue() ?? ItemStatus.NULL); - item.SetFieldValue(Models.Metadata.Disk.MD5Key, row.MD5); - item.SetFieldValue(Models.Metadata.Disk.SHA1Key, row.SHA1); - break; - - case ItemType.Media: - item = new Media - { - Source = new Source { Index = indexId, Name = filename }, - }; - item.SetName(row.DiskName); - item.SetFieldValue(Models.Metadata.Media.MD5Key, row.MD5); - item.SetFieldValue(Models.Metadata.Media.SHA1Key, row.SHA1); - item.SetFieldValue(Models.Metadata.Media.SHA256Key, row.SHA256); - item.SetFieldValue(Models.Metadata.Media.SpamSumKey, row.SpamSum); - break; - - case ItemType.Rom: - item = new Rom - { - Source = new Source { Index = indexId, Name = filename }, - }; - item.SetName(row.RomName); - item.SetFieldValue(Models.Metadata.Rom.CRCKey, row.CRC); - item.SetFieldValue(Models.Metadata.Rom.MD5Key, row.MD5); - item.SetFieldValue(Models.Metadata.Rom.SHA1Key, row.SHA1); - item.SetFieldValue(Models.Metadata.Rom.SHA256Key, row.SHA256); - item.SetFieldValue(Models.Metadata.Rom.SHA384Key, row.SHA384); - item.SetFieldValue(Models.Metadata.Rom.SHA512Key, row.SHA512); - item.SetFieldValue(Models.Metadata.Rom.SpamSumKey, row.SpamSum); - item.SetFieldValue(Models.Metadata.Rom.StatusKey, row.Status.AsEnumValue()); - break; - } - - // Now process and add the item - if (item != null) - { - item.CopyMachineInformation(machine); - ParseAddHelper(item, statsOnly); - } - } - - #endregion } }