From c0fd4d13346fdcf54d007fc77a3131c795f2a664 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 2 Apr 2026 20:41:14 -0400 Subject: [PATCH] Turn dupe type key into a metadata property --- SabreTools.Metadata.DatFiles/ItemDictionary.cs | 6 +++--- SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs | 6 +++--- SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs | 4 ++-- SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs | 4 ++-- SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs | 4 ++-- SabreTools.Metadata.DatItems/DatItem.cs | 8 ++------ SabreTools.Metadata.DatItems/Formats/Disk.cs | 6 +++--- SabreTools.Metadata.DatItems/Formats/File.cs | 4 ++-- SabreTools.Metadata.DatItems/Formats/Media.cs | 6 +++--- SabreTools.Metadata.DatItems/Formats/Rom.cs | 4 ++-- 10 files changed, 24 insertions(+), 28 deletions(-) diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 76ad7d7c..3f3c30a8 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -444,9 +444,9 @@ namespace SabreTools.Metadata.DatFiles // If the duplicate is external already #if NET20 || NET35 - if ((last.Read(DatItem.DupeTypeKey) & DupeType.External) != 0) + if ((last.DupeType & DupeType.External) != 0) #else - if (last.Read(DatItem.DupeTypeKey).HasFlag(DupeType.External)) + if (last.DupeType.HasFlag(DupeType.External)) #endif output |= DupeType.External; @@ -539,7 +539,7 @@ namespace SabreTools.Metadata.DatFiles savedRom.FillMissingInformation(romItem); // Set the duplicate type on the saved item - savedItem.Write(DatItem.DupeTypeKey, dupetype); + savedItem.DupeType = dupetype; // Get the sources associated with the items var savedSource = savedItem.Source; diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index b878e02e..f9ded0ea 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -750,9 +750,9 @@ namespace SabreTools.Metadata.DatFiles // If the duplicate is external already #if NET20 || NET35 - if ((lastItem.Value.Value.Read(DatItem.DupeTypeKey) & DupeType.External) != 0) + if ((lastItem.Value.Value.DupeType & DupeType.External) != 0) #else - if (lastItem.Value.Value.Read(DatItem.DupeTypeKey).HasFlag(DupeType.External)) + if (lastItem.Value.Value.DupeType.HasFlag(DupeType.External)) #endif output |= DupeType.External; @@ -921,7 +921,7 @@ namespace SabreTools.Metadata.DatFiles else if (datItem is Rom romItem && savedItem is Rom savedRom) savedRom.FillMissingInformation(romItem); - savedItem.Write(DatItem.DupeTypeKey, dupetype); + savedItem.DupeType = dupetype; // Get the sources associated with the items var savedSource = _sources[_itemToSourceMapping[savedIndex]]; diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index 577063ba..7c4475d9 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -30,7 +30,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test disk.Optional = true; disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); - disk.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); + disk.DupeType = DupeType.All | DupeType.External; disk.Machine = machine; disk.Write(Disk.PartKey, part); disk.RemoveFlag = false; @@ -45,7 +45,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(true, actual.Optional); Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal(DupeType.All | DupeType.External, actual.Read(DatItem.DupeTypeKey)); + Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); DataArea? actualDataArea = actual.Read(Rom.DataAreaKey); Assert.NotNull(actualDataArea); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs index e36a99ef..48a8eb8c 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/FileTests.cs @@ -26,7 +26,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test SHA256 = "DEADBEEF", Format = "XXXXXX" }; - file.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); + file.DupeType = DupeType.All | DupeType.External; file.Machine = machine; file.RemoveFlag = false; file.Source = source; @@ -41,7 +41,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal("000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Equal("00000000000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal("00000000000000000000000000000000000000000000000000000000deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA256Key)); - Assert.Equal(DupeType.All | DupeType.External, actual.Read(DatItem.DupeTypeKey)); + Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); diff --git a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs index b78b6934..81783000 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/MediaTests.cs @@ -21,7 +21,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test media.Write(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString); media.Write(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString); media.Write(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString); - media.Write(DatItem.DupeTypeKey, DupeType.All | DupeType.External); + media.DupeType = DupeType.All | DupeType.External; media.Machine = machine; media.RemoveFlag = false; media.Source = source; @@ -33,7 +33,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); Assert.Equal(HashType.SHA256.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA256Key)); Assert.Equal(HashType.SpamSum.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); - Assert.Equal(DupeType.All | DupeType.External, actual.Read(DatItem.DupeTypeKey)); + Assert.Equal(DupeType.All | DupeType.External, actual.DupeType); Machine? actualMachine = actual.Machine; Assert.NotNull(actualMachine); diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs index 09d482ca..604e2dec 100644 --- a/SabreTools.Metadata.DatItems/DatItem.cs +++ b/SabreTools.Metadata.DatItems/DatItem.cs @@ -56,16 +56,12 @@ namespace SabreTools.Metadata.DatItems [XmlInclude(typeof(SourceDetails))] public abstract class DatItem : ModelBackedItem, IEquatable, IComparable, ICloneable { - #region Constants + #region Fields /// /// Duplicate type when compared to another item /// - public const string DupeTypeKey = "DUPETYPE"; - - #endregion - - #region Fields + public DupeType DupeType { get; set; } = 0x00; /// /// Item type for the object diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index 7dc47aff..6fd08022 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -80,13 +80,13 @@ namespace SabreTools.Metadata.DatItems.Formats public Disk() : base() { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; Status = ItemStatus.None; } public Disk(Data.Models.Metadata.Disk item) : base(item) { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; // Process hash values string? md5 = ReadString(Data.Models.Metadata.Disk.MD5Key); @@ -129,7 +129,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(Rom.DataAreaKey, dataArea); } - rom.Write(DupeTypeKey, Read(DupeTypeKey)); + rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; rom.Write(Rom.PartKey, Read(PartKey)?.Clone() as Part); rom.RemoveFlag = RemoveFlag; diff --git a/SabreTools.Metadata.DatItems/Formats/File.cs b/SabreTools.Metadata.DatItems/Formats/File.cs index 5af2bdc8..aba4ee09 100644 --- a/SabreTools.Metadata.DatItems/Formats/File.cs +++ b/SabreTools.Metadata.DatItems/Formats/File.cs @@ -120,7 +120,7 @@ namespace SabreTools.Metadata.DatItems.Formats _sha256 = this._sha256, Format = this.Format, }; - file.Write(DupeTypeKey, Read(DupeTypeKey)); + file.DupeType = DupeType; file.Machine = Machine!.Clone() as Machine ?? new Machine(); file.RemoveFlag = RemoveFlag; file.Source = Source?.Clone() as Source; @@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatItems.Formats rom.Write(Data.Models.Metadata.Rom.SHA1Key, SHA1); rom.Write(Data.Models.Metadata.Rom.SHA256Key, SHA256); - rom.Write(DupeTypeKey, Read(DupeTypeKey)); + rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; rom.RemoveFlag = RemoveFlag; rom.Source = Source?.Clone() as Source; diff --git a/SabreTools.Metadata.DatItems/Formats/Media.cs b/SabreTools.Metadata.DatItems/Formats/Media.cs index d8104119..319fcf04 100644 --- a/SabreTools.Metadata.DatItems/Formats/Media.cs +++ b/SabreTools.Metadata.DatItems/Formats/Media.cs @@ -25,12 +25,12 @@ namespace SabreTools.Metadata.DatItems.Formats public Media() : base() { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; } public Media(Data.Models.Metadata.Media item) : base(item) { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; // Process hash values string? md5 = ReadString(Data.Models.Metadata.Media.MD5Key); @@ -67,7 +67,7 @@ namespace SabreTools.Metadata.DatItems.Formats { var rom = new Rom(_internal.ConvertToRom()!); - rom.Write(DupeTypeKey, Read(DupeTypeKey)); + rom.DupeType = DupeType; rom.Machine = Machine?.Clone() as Machine; rom.RemoveFlag = RemoveFlag; rom.Source = Source?.Clone() as Source; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 278f679c..45b6dd9c 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -136,7 +136,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Rom() : base() { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; Status = ItemStatus.None; } @@ -247,7 +247,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Rom(Data.Models.Metadata.Rom item) : base(item) { - Write(DupeTypeKey, 0x00); + DupeType = 0x00; // Process hash values long? size = ReadLong(Data.Models.Metadata.Rom.SizeKey);