Turn dupe type key into a metadata property

This commit is contained in:
Matt Nadareski
2026-04-02 20:41:14 -04:00
parent c87db265dd
commit c0fd4d1334
10 changed files with 24 additions and 28 deletions

View File

@@ -444,9 +444,9 @@ namespace SabreTools.Metadata.DatFiles
// If the duplicate is external already
#if NET20 || NET35
if ((last.Read<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0)
if ((last.DupeType & DupeType.External) != 0)
#else
if (last.Read<DupeType>(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;

View File

@@ -750,9 +750,9 @@ namespace SabreTools.Metadata.DatFiles
// If the duplicate is external already
#if NET20 || NET35
if ((lastItem.Value.Value.Read<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0)
if ((lastItem.Value.Value.DupeType & DupeType.External) != 0)
#else
if (lastItem.Value.Value.Read<DupeType>(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]];

View File

@@ -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<DupeType>(DatItem.DupeTypeKey));
Assert.Equal(DupeType.All | DupeType.External, actual.DupeType);
DataArea? actualDataArea = actual.Read<DataArea?>(Rom.DataAreaKey);
Assert.NotNull(actualDataArea);

View File

@@ -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<DupeType>(DatItem.DupeTypeKey));
Assert.Equal(DupeType.All | DupeType.External, actual.DupeType);
Machine? actualMachine = actual.Machine;
Assert.NotNull(actualMachine);

View File

@@ -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<DupeType>(DatItem.DupeTypeKey));
Assert.Equal(DupeType.All | DupeType.External, actual.DupeType);
Machine? actualMachine = actual.Machine;
Assert.NotNull(actualMachine);

View File

@@ -56,16 +56,12 @@ namespace SabreTools.Metadata.DatItems
[XmlInclude(typeof(SourceDetails))]
public abstract class DatItem : ModelBackedItem<Data.Models.Metadata.DatItem>, IEquatable<DatItem>, IComparable<DatItem>, ICloneable
{
#region Constants
#region Fields
/// <summary>
/// Duplicate type when compared to another item
/// </summary>
public const string DupeTypeKey = "DUPETYPE";
#endregion
#region Fields
public DupeType DupeType { get; set; } = 0x00;
/// <summary>
/// Item type for the object

View File

@@ -80,13 +80,13 @@ namespace SabreTools.Metadata.DatItems.Formats
public Disk() : base()
{
Write<DupeType>(DupeTypeKey, 0x00);
DupeType = 0x00;
Status = ItemStatus.None;
}
public Disk(Data.Models.Metadata.Disk item) : base(item)
{
Write<DupeType>(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<DataArea?>(Rom.DataAreaKey, dataArea);
}
rom.Write(DupeTypeKey, Read<DupeType>(DupeTypeKey));
rom.DupeType = DupeType;
rom.Machine = Machine?.Clone() as Machine;
rom.Write(Rom.PartKey, Read<Part>(PartKey)?.Clone() as Part);
rom.RemoveFlag = RemoveFlag;

View File

@@ -120,7 +120,7 @@ namespace SabreTools.Metadata.DatItems.Formats
_sha256 = this._sha256,
Format = this.Format,
};
file.Write(DupeTypeKey, Read<DupeType>(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<string?>(Data.Models.Metadata.Rom.SHA1Key, SHA1);
rom.Write<string?>(Data.Models.Metadata.Rom.SHA256Key, SHA256);
rom.Write(DupeTypeKey, Read<DupeType>(DupeTypeKey));
rom.DupeType = DupeType;
rom.Machine = Machine?.Clone() as Machine;
rom.RemoveFlag = RemoveFlag;
rom.Source = Source?.Clone() as Source;

View File

@@ -25,12 +25,12 @@ namespace SabreTools.Metadata.DatItems.Formats
public Media() : base()
{
Write<DupeType>(DupeTypeKey, 0x00);
DupeType = 0x00;
}
public Media(Data.Models.Metadata.Media item) : base(item)
{
Write<DupeType>(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<DupeType>(DupeTypeKey));
rom.DupeType = DupeType;
rom.Machine = Machine?.Clone() as Machine;
rom.RemoveFlag = RemoveFlag;
rom.Source = Source?.Clone() as Source;

View File

@@ -136,7 +136,7 @@ namespace SabreTools.Metadata.DatItems.Formats
public Rom() : base()
{
Write<DupeType>(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<DupeType>(DupeTypeKey, 0x00);
DupeType = 0x00;
// Process hash values
long? size = ReadLong(Data.Models.Metadata.Rom.SizeKey);