Convert Disk fully over to properties

This commit is contained in:
Matt Nadareski
2026-04-04 01:15:40 -04:00
parent e5e279a48d
commit 9ffa2a5e23
55 changed files with 487 additions and 433 deletions

View File

@@ -654,9 +654,11 @@ namespace SabreTools.Metadata.DatFiles
if (filterRunner is not null && !filterRunner.Run(disk))
continue;
var diskItem = new Disk(disk, machine, source);
diskItem.Write<DiskArea?>(Disk.DiskAreaKey, diskAreaitem);
diskItem.Write<Part?>(Disk.PartKey, partItem);
var diskItem = new Disk(disk, machine, source)
{
DiskArea = diskAreaitem,
Part = partItem,
};
AddItem(diskItem, statsOnly);
// AddItemDB(diskItem, machineIndex, sourceIndex, statsOnly);

View File

@@ -297,7 +297,7 @@ namespace SabreTools.Metadata.DatFiles
// Special disk handling
if (item is Disk disk)
{
string? mergeTag = disk.ReadString(Data.Models.Metadata.Disk.MergeKey);
string? mergeTag = disk.Merge;
// If the merge tag exists and the parent already contains it, skip
if (mergeTag is not null && GetItemsForBucket(cloneOf)
@@ -433,7 +433,7 @@ namespace SabreTools.Metadata.DatFiles
// Special disk handling
if (item.Value is Disk disk)
{
string? mergeTag = disk.ReadString(Data.Models.Metadata.Disk.MergeKey);
string? mergeTag = disk.Merge;
// If the merge tag exists and the parent already contains it, skip
if (mergeTag is not null && GetItemsForBucketDB(cloneOf).Values
@@ -722,8 +722,7 @@ namespace SabreTools.Metadata.DatFiles
continue;
deviceReferences.Add(deviceReference);
var deviceRef = new DeviceRef();
deviceRef.Name = deviceReference;
var deviceRef = new DeviceRef { Name = deviceReference };
deviceRef.CopyMachineInformation(copyFrom);
Items.AddItem(deviceRef, statsOnly: false);
}
@@ -772,8 +771,7 @@ namespace SabreTools.Metadata.DatFiles
continue;
slotOptions.Add(slotOption);
var slotOptionItem = new SlotOption();
slotOptionItem.DevName = slotOption;
var slotOptionItem = new SlotOption { DevName = slotOption };
slotOptionItem.CopyMachineInformation(copyFrom);
var slotItem = new Slot();
@@ -887,8 +885,7 @@ namespace SabreTools.Metadata.DatFiles
{
if (!deviceReferences.Contains(deviceReference))
{
var deviceRef = new DeviceRef();
deviceRef.Name = deviceReference;
var deviceRef = new DeviceRef { Name = deviceReference };
ItemsDB.AddItem(deviceRef, machine.Key, source.Key);
}
}
@@ -943,8 +940,7 @@ namespace SabreTools.Metadata.DatFiles
{
if (!slotOptions.Contains(slotOption))
{
var slotOptionItem = new SlotOption();
slotOptionItem.DevName = slotOption;
var slotOptionItem = new SlotOption { DevName = slotOption };
var slotItem = new Slot();
slotItem.Write<SlotOption[]?>(Data.Models.Metadata.Slot.SlotOptionKey, [slotOptionItem]);

View File

@@ -164,17 +164,17 @@ namespace SabreTools.Metadata.DatFiles
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem);
// Add Part and DiskArea mappings
bool diskContainsPart = diskItem.ContainsKey(DatItems.Formats.Disk.PartKey);
bool diskContainsDiskArea = diskItem.ContainsKey(DatItems.Formats.Disk.DiskAreaKey);
bool diskContainsPart = disk.Part is not null;
bool diskContainsDiskArea = disk.DiskArea is not null;
if (diskContainsPart && diskContainsDiskArea)
{
var partItem = diskItem.Read<DatItems.Formats.Part>(DatItems.Formats.Disk.PartKey);
var partItem = disk.Part;
if (partItem is not null)
{
var partItemInternal = partItem.GetInternalClone();
partMappings[partItemInternal] = diskItem;
var diskAreaItem = diskItem.Read<DatItems.Formats.DiskArea>(DatItems.Formats.Disk.DiskAreaKey);
var diskAreaItem = disk.DiskArea;
if (diskAreaItem is not null)
diskAreaMappings[partItemInternal] = (diskAreaItem.GetInternalClone(), diskItem);
}
@@ -585,17 +585,17 @@ namespace SabreTools.Metadata.DatFiles
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem);
// Add Part and DiskArea mappings
bool diskContainsPart = diskItem.ContainsKey(DatItems.Formats.Disk.PartKey);
bool diskContainsDiskArea = diskItem.ContainsKey(DatItems.Formats.Disk.DiskAreaKey);
bool diskContainsPart = disk.Part is not null;
bool diskContainsDiskArea = disk.DiskArea is not null;
if (diskContainsPart && diskContainsDiskArea)
{
var partItem = diskItem.Read<DatItems.Formats.Part>(DatItems.Formats.Disk.PartKey);
var partItem = disk.Part;
if (partItem is not null)
{
var partItemInternal = partItem.GetInternalClone();
partMappings[partItemInternal] = diskItem;
var diskAreaItem = diskItem.Read<DatItems.Formats.DiskArea>(DatItems.Formats.Disk.DiskAreaKey);
var diskAreaItem = disk.DiskArea;
if (diskAreaItem is not null)
diskAreaMappings[partItemInternal] = (diskAreaItem.GetInternalClone(), diskItem);
}

View File

@@ -503,7 +503,7 @@ namespace SabreTools.Metadata.DatFiles
if (item is Disk disk)
{
// We can only write out if there's a SHA-1
string? sha1 = disk.ReadString(Data.Models.Metadata.Disk.SHA1Key);
string? sha1 = disk.SHA1;
if (!string.IsNullOrEmpty(sha1))
{
name = Utilities.GetDepotPath(sha1, Modifiers.OutputDepot.Depth)?.Replace('\\', '/');
@@ -606,8 +606,8 @@ namespace SabreTools.Metadata.DatFiles
// Ensure we have the proper values for replacement
if (item is Disk disk)
{
md5 = disk.ReadString(Data.Models.Metadata.Disk.MD5Key) ?? string.Empty;
sha1 = disk.ReadString(Data.Models.Metadata.Disk.SHA1Key) ?? string.Empty;
md5 = disk.MD5 ?? string.Empty;
sha1 = disk.SHA1 ?? string.Empty;
}
else if (item is DatItems.Formats.File file)
{
@@ -1038,11 +1038,11 @@ namespace SabreTools.Metadata.DatFiles
/// </summary>
private static string GetDuplicateSuffix(Disk datItem)
{
string? md5 = datItem.ReadString(Data.Models.Metadata.Disk.MD5Key);
string? md5 = datItem.MD5;
if (!string.IsNullOrEmpty(md5))
return $"_{md5}";
string? sha1 = datItem.ReadString(Data.Models.Metadata.Disk.SHA1Key);
string? sha1 = datItem.SHA1;
if (!string.IsNullOrEmpty(sha1))
return $"_{sha1}";

View File

@@ -330,8 +330,8 @@ namespace SabreTools.Metadata.DatFiles
ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1);
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1);
}
AddStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0);
@@ -459,8 +459,8 @@ namespace SabreTools.Metadata.DatFiles
ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1);
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1);
}
RemoveStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0);

View File

@@ -114,10 +114,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Disk disk:
if (string.IsNullOrEmpty(disk.Name))
missingFields.Add(nameof(Data.Models.Metadata.Disk.Name));
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
if (string.IsNullOrEmpty(disk.MD5)
&& string.IsNullOrEmpty(disk.SHA1))
{
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;

View File

@@ -37,10 +37,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Disk disk:
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
if (string.IsNullOrEmpty(disk.MD5)
&& string.IsNullOrEmpty(disk.SHA1))
{
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;

View File

@@ -282,10 +282,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Disk disk:
if (string.IsNullOrEmpty(disk.Name))
missingFields.Add(nameof(Data.Models.Metadata.Disk.Name));
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
if (string.IsNullOrEmpty(disk.MD5)
&& string.IsNullOrEmpty(disk.SHA1))
{
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;

View File

@@ -306,10 +306,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Disk disk:
if (string.IsNullOrEmpty(disk.Name))
missingFields.Add(nameof(Data.Models.Metadata.Disk.Name));
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
if (string.IsNullOrEmpty(disk.MD5)
&& string.IsNullOrEmpty(disk.SHA1))
{
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;

View File

@@ -40,8 +40,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Disk disk:
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)))
missingFields.Add(Data.Models.Metadata.Disk.MD5Key);
if (string.IsNullOrEmpty(disk.MD5))
missingFields.Add(nameof(Data.Models.Metadata.Disk.MD5));
break;
case Media medium:

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
@@ -73,10 +73,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Disk disk:
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
if (string.IsNullOrEmpty(disk.MD5)
&& string.IsNullOrEmpty(disk.SHA1))
{
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
}
break;

View File

@@ -40,8 +40,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Disk disk:
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
if (string.IsNullOrEmpty(disk.SHA1))
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
break;
case Media medium:

View File

@@ -145,9 +145,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
}
else
{
if (string.IsNullOrEmpty(disk.Read<Part?>(Disk.PartKey)!.Name))
if (string.IsNullOrEmpty(disk.Part!.Name))
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
if (string.IsNullOrEmpty(disk.Read<Part?>(Disk.PartKey)!.Interface))
if (string.IsNullOrEmpty(disk.Part.Interface))
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
}
@@ -157,7 +157,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
}
else
{
if (string.IsNullOrEmpty(disk.Read<DiskArea?>(Disk.DiskAreaKey)!.Name))
if (string.IsNullOrEmpty(disk.DiskArea!.Name))
missingFields.Add(nameof(Data.Models.Metadata.DiskArea.Name));
}

View File

@@ -99,8 +99,8 @@ namespace SabreTools.Metadata.DatFiles
{
// If the file has aboslutely no hashes, skip and log
if (disk.Status != ItemStatus.Nodump
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
&& string.IsNullOrEmpty(disk.MD5)
&& string.IsNullOrEmpty(disk.SHA1))
{
_logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump");
disk.Status = ItemStatus.Nodump;

View File

@@ -188,8 +188,8 @@ namespace SabreTools.Metadata.DatFiles
{
// If the file has aboslutely no hashes, skip and log
if (disk.Status != ItemStatus.Nodump
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
&& string.IsNullOrEmpty(disk.MD5)
&& string.IsNullOrEmpty(disk.SHA1))
{
_logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump");
disk.Status = ItemStatus.Nodump;