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
///