diff --git a/SabreTools.DatFiles/DatFile.ToMetadata.cs b/SabreTools.DatFiles/DatFile.ToMetadata.cs index 87814cfb..65db1e2c 100644 --- a/SabreTools.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.DatFiles/DatFile.ToMetadata.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using System.Linq; using SabreTools.Core.Tools; @@ -29,7 +28,7 @@ namespace SabreTools.DatFiles // Convert and assign the machines var machines = ConvertMachines(ignoreblanks); if (machines != null) - metadataFile[Models.Metadata.MetadataFile.MachineKey] = header; + metadataFile[Models.Metadata.MetadataFile.MachineKey] = machines; return metadataFile; } @@ -219,124 +218,124 @@ namespace SabreTools.DatFiles { case DatItems.Formats.Adjuster adjuster: var adjusterItem = ProcessItem(adjuster); - EnsureMachineKey(machine, Models.Metadata.Machine.AdjusterKey); + EnsureMachineKey(machine, Models.Metadata.Machine.AdjusterKey); AppendToMachineKey(machine, Models.Metadata.Machine.AdjusterKey, adjusterItem); break; case DatItems.Formats.Archive archive: var archiveItem = archive.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.ArchiveKey); + EnsureMachineKey(machine, Models.Metadata.Machine.ArchiveKey); AppendToMachineKey(machine, Models.Metadata.Machine.ArchiveKey, archiveItem); break; case DatItems.Formats.BiosSet biosSet: var biosSetItem = biosSet.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.BiosSetKey); + EnsureMachineKey(machine, Models.Metadata.Machine.BiosSetKey); AppendToMachineKey(machine, Models.Metadata.Machine.BiosSetKey, biosSetItem); break; case DatItems.Formats.Chip chip: var chipItem = chip.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.ChipKey); + EnsureMachineKey(machine, Models.Metadata.Machine.ChipKey); AppendToMachineKey(machine, Models.Metadata.Machine.ChipKey, chipItem); break; case DatItems.Formats.Configuration configuration: var configurationItem = ProcessItem(configuration); - EnsureMachineKey(machine, Models.Metadata.Machine.ConfigurationKey); + EnsureMachineKey(machine, Models.Metadata.Machine.ConfigurationKey); AppendToMachineKey(machine, Models.Metadata.Machine.ConfigurationKey, configurationItem); break; case DatItems.Formats.Device device: var deviceItem = ProcessItem(device); - EnsureMachineKey(machine, Models.Metadata.Machine.DeviceKey); + EnsureMachineKey(machine, Models.Metadata.Machine.DeviceKey); AppendToMachineKey(machine, Models.Metadata.Machine.DeviceKey, deviceItem); break; case DatItems.Formats.DeviceRef deviceRef: var deviceRefItem = deviceRef.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.DeviceRefKey); + EnsureMachineKey(machine, Models.Metadata.Machine.DeviceRefKey); AppendToMachineKey(machine, Models.Metadata.Machine.DeviceRefKey, deviceRefItem); break; case DatItems.Formats.DipSwitch dipSwitch: var dipSwitchItem = ProcessItem(dipSwitch, machine); - EnsureMachineKey(machine, Models.Metadata.Machine.DipSwitchKey); + EnsureMachineKey(machine, Models.Metadata.Machine.DipSwitchKey); AppendToMachineKey(machine, Models.Metadata.Machine.DipSwitchKey, dipSwitchItem); break; case DatItems.Formats.Disk disk: var diskItem = ProcessItem(disk, machine); - EnsureMachineKey(machine, Models.Metadata.Machine.DiskKey); + EnsureMachineKey(machine, Models.Metadata.Machine.DiskKey); AppendToMachineKey(machine, Models.Metadata.Machine.DiskKey, diskItem); break; case DatItems.Formats.Display display: // TODO: Handle cases where it's actually a Video var displayItem = display.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.DisplayKey); + EnsureMachineKey(machine, Models.Metadata.Machine.DisplayKey); AppendToMachineKey(machine, Models.Metadata.Machine.DisplayKey, displayItem); break; case DatItems.Formats.Driver driver: var driverItem = driver.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.DriverKey); + EnsureMachineKey(machine, Models.Metadata.Machine.DriverKey); AppendToMachineKey(machine, Models.Metadata.Machine.DriverKey, driverItem); break; case DatItems.Formats.Feature feature: var featureItem = feature.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.FeatureKey); + EnsureMachineKey(machine, Models.Metadata.Machine.FeatureKey); AppendToMachineKey(machine, Models.Metadata.Machine.FeatureKey, featureItem); break; case DatItems.Formats.Info info: var infoItem = info.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.InfoKey); + EnsureMachineKey(machine, Models.Metadata.Machine.InfoKey); AppendToMachineKey(machine, Models.Metadata.Machine.InfoKey, infoItem); break; case DatItems.Formats.Input input: var inputItem = ProcessItem(input); - EnsureMachineKey(machine, Models.Metadata.Machine.InputKey); + EnsureMachineKey(machine, Models.Metadata.Machine.InputKey); AppendToMachineKey(machine, Models.Metadata.Machine.InputKey, inputItem); break; case DatItems.Formats.Media media: var mediaItem = media.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.MediaKey); + EnsureMachineKey(machine, Models.Metadata.Machine.MediaKey); AppendToMachineKey(machine, Models.Metadata.Machine.MediaKey, mediaItem); break; case DatItems.Formats.Port port: var portItem = ProcessItem(port); - EnsureMachineKey(machine, Models.Metadata.Machine.PortKey); + EnsureMachineKey(machine, Models.Metadata.Machine.PortKey); AppendToMachineKey(machine, Models.Metadata.Machine.PortKey, portItem); break; case DatItems.Formats.RamOption ramOption: var ramOptionItem = ramOption.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.RamOptionKey); + EnsureMachineKey(machine, Models.Metadata.Machine.RamOptionKey); AppendToMachineKey(machine, Models.Metadata.Machine.RamOptionKey, ramOptionItem); break; case DatItems.Formats.Release release: var releaseItem = release.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.ReleaseKey); + EnsureMachineKey(machine, Models.Metadata.Machine.ReleaseKey); AppendToMachineKey(machine, Models.Metadata.Machine.ReleaseKey, releaseItem); break; case DatItems.Formats.Rom rom: // TODO: Handle cases where it's actually a Dump var romItem = ProcessItem(rom, machine); - EnsureMachineKey(machine, Models.Metadata.Machine.RomKey); + EnsureMachineKey(machine, Models.Metadata.Machine.RomKey); AppendToMachineKey(machine, Models.Metadata.Machine.RomKey, romItem); break; case DatItems.Formats.Sample sample: var sampleItem = sample.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.SampleKey); + EnsureMachineKey(machine, Models.Metadata.Machine.SampleKey); AppendToMachineKey(machine, Models.Metadata.Machine.SampleKey, sampleItem); break; case DatItems.Formats.SharedFeat sharedFeat: var sharedFeatItem = sharedFeat.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.SharedFeatKey); + EnsureMachineKey(machine, Models.Metadata.Machine.SharedFeatKey); AppendToMachineKey(machine, Models.Metadata.Machine.SharedFeatKey, sharedFeatItem); break; case DatItems.Formats.Slot slot: var slotItem = ProcessItem(slot); - EnsureMachineKey(machine, Models.Metadata.Machine.SlotKey); + EnsureMachineKey(machine, Models.Metadata.Machine.SlotKey); AppendToMachineKey(machine, Models.Metadata.Machine.SlotKey, slotItem); break; case DatItems.Formats.SoftwareList softwareList: var softwareListItem = softwareList.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.SoftwareListKey); + EnsureMachineKey(machine, Models.Metadata.Machine.SoftwareListKey); AppendToMachineKey(machine, Models.Metadata.Machine.SoftwareListKey, softwareListItem); break; case DatItems.Formats.Sound sound: var soundItem = sound.GetInternalClone(); - EnsureMachineKey(machine, Models.Metadata.Machine.SoundKey); + EnsureMachineKey(machine, Models.Metadata.Machine.SoundKey); AppendToMachineKey(machine, Models.Metadata.Machine.SoundKey, soundItem); break; } @@ -585,8 +584,8 @@ namespace SabreTools.DatFiles /// private static void EnsureMachineKey(Models.Metadata.Machine machine, string key) { - if (machine.Read(key) == null) - machine[key] = Activator.CreateInstance(); + if (machine.Read(key) == null) + machine[key] = new T[0]; } /// diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index c35aaef4..857e06ea 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -605,7 +605,7 @@ namespace SabreTools.DatFiles } // If the item is supposed to be removed, we ignore - if (datItem.GetFieldValue(DatItem.RemoveKey)) + if (datItem.GetFieldValue(DatItem.RemoveKey) == true) { string itemString = JsonConvert.SerializeObject(datItem, Formatting.None); logger?.Verbose($"Item '{itemString}' was skipped because it was marked for removal"); diff --git a/SabreTools.DatFiles/ItemDictionary.cs b/SabreTools.DatFiles/ItemDictionary.cs index b610286f..cb3f2fc0 100644 --- a/SabreTools.DatFiles/ItemDictionary.cs +++ b/SabreTools.DatFiles/ItemDictionary.cs @@ -219,7 +219,7 @@ namespace SabreTools.DatFiles TotalCount++; // Increment removal count - if (item.GetFieldValue(DatItem.RemoveKey)) + if (item.GetFieldValue(DatItem.RemoveKey) == true) RemovedCount++; // Increment the item count for the type @@ -399,8 +399,8 @@ namespace SabreTools.DatFiles // Filter the list return fi.Where(i => i != null) - .Where(i => !i.GetFieldValue(DatItem.RemoveKey)) - .Where(i => i.GetFieldValue(DatItem.MachineKey)!.GetFieldValue(Models.Metadata.Machine.NameKey) != null) + .Where(i => i.GetFieldValue(DatItem.RemoveKey) != true) + .Where(i => i.GetFieldValue(DatItem.MachineKey) != null) .ToConcurrentList(); } } @@ -500,7 +500,7 @@ namespace SabreTools.DatFiles TotalCount--; // Decrement removal count - if (item.GetFieldValue(DatItem.RemoveKey)) + if (item.GetFieldValue(DatItem.RemoveKey) == true) RemovedCount--; // Decrement the item count for the type @@ -907,7 +907,7 @@ namespace SabreTools.DatFiles foreach (string key in keys) { ConcurrentList? oldItemList = items[key]; - ConcurrentList? newItemList = oldItemList?.Where(i => !i.GetFieldValue(DatItem.RemoveKey))?.ToConcurrentList(); + ConcurrentList? newItemList = oldItemList?.Where(i => i.GetFieldValue(DatItem.RemoveKey) != true)?.ToConcurrentList(); Remove(key); AddRange(key, newItemList); @@ -944,12 +944,12 @@ namespace SabreTools.DatFiles for (int i = 0; i < roms.Count; i++) { DatItem other = roms[i]; - if (other.GetFieldValue(DatItem.RemoveKey)) + if (other.GetFieldValue(DatItem.RemoveKey) == true) continue; if (datItem.Equals(other)) { - other.SetFieldValue(DatItem.RemoveKey, true); + other.SetFieldValue(DatItem.RemoveKey, true); output.Add(other); } else diff --git a/SabreTools.DatFiles/ItemDictionaryDB.cs b/SabreTools.DatFiles/ItemDictionaryDB.cs index 7129d2b1..f4e0e7e3 100644 --- a/SabreTools.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.DatFiles/ItemDictionaryDB.cs @@ -336,7 +336,7 @@ namespace SabreTools.DatFiles TotalCount++; // Increment removal count - if (item.GetFieldValue(DatItem.RemoveKey)) + if (item.GetFieldValue(DatItem.RemoveKey) == true) RemovedCount++; // Increment the item count for the type @@ -530,7 +530,7 @@ namespace SabreTools.DatFiles // Filter the list return fi.Where(i => i != null) - .Where(i => !i.GetFieldValue(DatItem.RemoveKey)) + .Where(i => i.GetFieldValue(DatItem.RemoveKey) != true) .Where(i => i.GetFieldValue(DatItem.MachineKey)!.GetFieldValue(Models.Metadata.Machine.NameKey) != null) .ToConcurrentList(); } @@ -644,7 +644,7 @@ namespace SabreTools.DatFiles TotalCount--; // Decrement removal count - if (item.GetFieldValue(DatItem.RemoveKey)) + if (item.GetFieldValue(DatItem.RemoveKey) == true) RemovedCount--; // Decrement the item count for the type @@ -1079,7 +1079,7 @@ CREATE TABLE IF NOT EXISTS groups ( foreach (string key in keys) { ConcurrentList? oldItemList = this[key]; - ConcurrentList? newItemList = oldItemList?.Where(i => !i.GetFieldValue(DatItem.RemoveKey))?.ToConcurrentList(); + ConcurrentList? newItemList = oldItemList?.Where(i => i.GetFieldValue(DatItem.RemoveKey) != true)?.ToConcurrentList(); Remove(key); AddRange(key, newItemList); @@ -1113,12 +1113,12 @@ CREATE TABLE IF NOT EXISTS groups ( for (int i = 0; i < roms.Count; i++) { DatItem other = roms[i]; - if (other.GetFieldValue(DatItem.RemoveKey)) + if (other.GetFieldValue(DatItem.RemoveKey) == true) continue; if (datItem.Equals(other)) { - other.SetFieldValue(DatItem.RemoveKey, true); + other.SetFieldValue(DatItem.RemoveKey, true); output.Add(other); } else diff --git a/SabreTools.DatItems/Formats/Blank.cs b/SabreTools.DatItems/Formats/Blank.cs index 81b1b8cc..b4570106 100644 --- a/SabreTools.DatItems/Formats/Blank.cs +++ b/SabreTools.DatItems/Formats/Blank.cs @@ -36,7 +36,7 @@ namespace SabreTools.DatItems.Formats { var blank = new Blank(); blank.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); - blank.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); + blank.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); blank.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); blank.SetFieldValue(Models.Metadata.DatItem.TypeKey, GetFieldValue(Models.Metadata.DatItem.TypeKey)); diff --git a/SabreTools.DatItems/Formats/Disk.cs b/SabreTools.DatItems/Formats/Disk.cs index 7b6b5959..029c1b22 100644 --- a/SabreTools.DatItems/Formats/Disk.cs +++ b/SabreTools.DatItems/Formats/Disk.cs @@ -110,7 +110,7 @@ namespace SabreTools.DatItems.Formats rom.GetFieldValue(Rom.DataAreaKey)?.SetName(this.GetFieldValue(Disk.DiskAreaKey)?.GetName()); rom.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); rom.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)!.Clone() as Machine ?? new Machine()); - rom.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); + rom.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); rom.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); return rom; diff --git a/SabreTools.DatItems/Formats/File.cs b/SabreTools.DatItems/Formats/File.cs index 571ff5a9..a612be36 100644 --- a/SabreTools.DatItems/Formats/File.cs +++ b/SabreTools.DatItems/Formats/File.cs @@ -141,7 +141,7 @@ namespace SabreTools.DatItems.Formats }; file.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); file.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)!.Clone() as Machine ?? new Machine()); - file.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); + file.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); file.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); return file; @@ -174,7 +174,7 @@ namespace SabreTools.DatItems.Formats rom.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); rom.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)!.Clone() as Machine ?? new Machine()); rom.SetFieldValue(Models.Metadata.Rom.MD5Key, MD5); - rom.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); + rom.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); rom.SetFieldValue(Models.Metadata.Rom.SHA1Key, SHA1); rom.SetFieldValue(Models.Metadata.Rom.SHA256Key, SHA256); rom.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); diff --git a/SabreTools.DatItems/Formats/Media.cs b/SabreTools.DatItems/Formats/Media.cs index 28e1fd63..1be42c50 100644 --- a/SabreTools.DatItems/Formats/Media.cs +++ b/SabreTools.DatItems/Formats/Media.cs @@ -74,7 +74,7 @@ namespace SabreTools.DatItems.Formats var rom = new Rom(_internal.ConvertToRom()!); rom.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); rom.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); - rom.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); + rom.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); rom.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); return rom; diff --git a/SabreTools.DatItems/Formats/ReleaseDetails.cs b/SabreTools.DatItems/Formats/ReleaseDetails.cs index 8585dd71..bfdf76e2 100644 --- a/SabreTools.DatItems/Formats/ReleaseDetails.cs +++ b/SabreTools.DatItems/Formats/ReleaseDetails.cs @@ -146,7 +146,7 @@ namespace SabreTools.DatItems.Formats }; releaseDetails.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); releaseDetails.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); - releaseDetails.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); + releaseDetails.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); releaseDetails.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); releaseDetails.SetFieldValue(Models.Metadata.DatItem.TypeKey, GetFieldValue(Models.Metadata.DatItem.TypeKey)); diff --git a/SabreTools.DatItems/Formats/Serials.cs b/SabreTools.DatItems/Formats/Serials.cs index e7614467..230f4a4a 100644 --- a/SabreTools.DatItems/Formats/Serials.cs +++ b/SabreTools.DatItems/Formats/Serials.cs @@ -138,7 +138,7 @@ namespace SabreTools.DatItems.Formats }; serials.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); serials.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); - serials.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); + serials.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); serials.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); serials.SetFieldValue(Models.Metadata.DatItem.TypeKey, GetFieldValue(Models.Metadata.DatItem.TypeKey)); diff --git a/SabreTools.DatItems/Formats/SourceDetails.cs b/SabreTools.DatItems/Formats/SourceDetails.cs index bc5f752f..519161f4 100644 --- a/SabreTools.DatItems/Formats/SourceDetails.cs +++ b/SabreTools.DatItems/Formats/SourceDetails.cs @@ -181,7 +181,7 @@ namespace SabreTools.DatItems.Formats }; sourceDetails.SetFieldValue(DatItem.DupeTypeKey, GetFieldValue(DatItem.DupeTypeKey)); sourceDetails.SetFieldValue(DatItem.MachineKey, GetFieldValue(DatItem.MachineKey)); - sourceDetails.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); + sourceDetails.SetFieldValue(DatItem.RemoveKey, GetFieldValue(DatItem.RemoveKey)); sourceDetails.SetFieldValue(DatItem.SourceKey, GetFieldValue(DatItem.SourceKey)); sourceDetails.SetFieldValue(Models.Metadata.DatItem.TypeKey, GetFieldValue(Models.Metadata.DatItem.TypeKey)); diff --git a/SabreTools.DatTools/Verification.cs b/SabreTools.DatTools/Verification.cs index cbc4d7a1..1215e6eb 100644 --- a/SabreTools.DatTools/Verification.cs +++ b/SabreTools.DatTools/Verification.cs @@ -143,7 +143,7 @@ namespace SabreTools.DatTools { // Unmatched items will have a source ID of int.MaxValue, remove all others if (items[i].GetFieldValue(DatItem.SourceKey)?.Index != int.MaxValue) - items[i].SetFieldValue(DatItem.RemoveKey, true); + items[i].SetFieldValue(DatItem.RemoveKey, true); } // Set the list back, just in case diff --git a/SabreTools.Test/DatFiles/ItemDictionaryTests.cs b/SabreTools.Test/DatFiles/ItemDictionaryTests.cs index 49f2f356..92d0dcda 100644 --- a/SabreTools.Test/DatFiles/ItemDictionaryTests.cs +++ b/SabreTools.Test/DatFiles/ItemDictionaryTests.cs @@ -92,7 +92,7 @@ namespace SabreTools.Test.DatFiles var rom2 = new Rom(); rom2.SetName("rom-2"); rom2.SetFieldValue(Models.Metadata.Rom.CRCKey, "DEADBEEF"); - rom2.SetFieldValue(DatItem.RemoveKey, true); + rom2.SetFieldValue(DatItem.RemoveKey, true); rom2.SetFieldValue(Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44"); rom2.SetFieldValue(Models.Metadata.Rom.SizeKey, 1024); rom1.CopyMachineInformation(machine1);