diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index 0761949f..6c964342 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -527,6 +527,39 @@ namespace SabreTools.DatFiles if (machine == null) return item; + // Process the possibly nullified item + return ProcessNullifiedItemImpl(rom, machine); + } + + /// + /// Process any DatItems that are "null", usually created from directory population + /// + /// DatItem to check for "null" status + /// Cleaned DatItem + protected KeyValuePair ProcessNullifiedItemDB(KeyValuePair item) + { + // If we don't have a Rom, we can ignore it + if (item.Value is not Rom rom) + return item; + + // Get machine for the item + var machine = ItemsDB.GetMachineForItem(item.Key); + if (machine.Value == null) + return item; + + // Process the possibly nullified item + return new KeyValuePair(item.Key, ProcessNullifiedItemImpl(rom, machine.Value)); + } + + /// + /// Process any DatItems that are "null", usually created from directory population + /// + /// Rom to check for "null" status + /// Machine for logging + /// Cleaned DatItem + /// TODO: Investigate what the machine name is really being used for + private DatItem ProcessNullifiedItemImpl(Rom rom, Machine machine) + { // If the Rom has "null" characteristics, ensure all fields if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null && rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null") @@ -558,54 +591,6 @@ namespace SabreTools.DatFiles return rom; } - /// - /// Process any DatItems that are "null", usually created from directory population - /// - /// DatItem to check for "null" status - /// Cleaned DatItem - protected KeyValuePair ProcessNullifiedItemDB(KeyValuePair item) - { - // If we don't have a Rom, we can ignore it - if (item.Value is not Rom rom) - return item; - - // Get machine for the item - var machine = ItemsDB.GetMachineForItem(item.Key); - var machineObj = machine.Value; - if (machineObj == null) - return item; - - // If the Rom has "null" characteristics, ensure all fields - if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null - && rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null") - { - _logger.Verbose($"Empty folder found: {machineObj.GetStringFieldValue(Models.Metadata.Machine.NameKey)}"); - - rom.SetName(rom.GetName() == "null" ? "-" : rom.GetName()); - rom.SetFieldValue(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString()); - rom.SetFieldValue(Models.Metadata.Rom.CRCKey, - rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null" ? ZeroHash.CRC32Str : null); - rom.SetFieldValue(Models.Metadata.Rom.MD2Key, - rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key) == "null" ? ZeroHash.GetString(HashType.MD2) : null); - rom.SetFieldValue(Models.Metadata.Rom.MD4Key, - rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key) == "null" ? ZeroHash.GetString(HashType.MD4) : null); - rom.SetFieldValue(Models.Metadata.Rom.MD5Key, - rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) == "null" ? ZeroHash.MD5Str : null); - rom.SetFieldValue(Models.Metadata.Rom.SHA1Key, - rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) == "null" ? ZeroHash.SHA1Str : null); - rom.SetFieldValue(Models.Metadata.Rom.SHA256Key, - rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) == "null" ? ZeroHash.SHA256Str : null); - rom.SetFieldValue(Models.Metadata.Rom.SHA384Key, - rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key) == "null" ? ZeroHash.SHA384Str : null); - rom.SetFieldValue(Models.Metadata.Rom.SHA512Key, - rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key) == "null" ? ZeroHash.SHA512Str : null); - rom.SetFieldValue(Models.Metadata.Rom.SpamSumKey, - rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) == "null" ? ZeroHash.SpamSumStr : null); - } - - return new KeyValuePair(item.Key, rom); - } - /// /// Return list of required fields missing from a DatItem ///