Enum type conversion to property

This commit is contained in:
Matt Nadareski
2026-04-02 02:18:08 -04:00
parent 4c9ff19cf3
commit c4524d20f0
121 changed files with 1507 additions and 1158 deletions

View File

@@ -6,7 +6,6 @@ using System.Threading.Tasks;
using SabreTools.Metadata.Filter;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
using SabreTools.Data.Extensions;
using MergingFlag = SabreTools.Data.Models.Metadata.MergingFlag;
using NodumpFlag = SabreTools.Data.Models.Metadata.NodumpFlag;
using PackingFlag = SabreTools.Data.Models.Metadata.PackingFlag;
@@ -93,8 +92,8 @@ namespace SabreTools.Metadata.DatFiles
// Selectively set all possible fields -- TODO: Figure out how to make this less manual
if (Header.ReadString(Data.Models.Metadata.Header.AuthorKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.AuthorKey, header.ReadString(Data.Models.Metadata.Header.AuthorKey));
if (Header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag() == MergingFlag.None)
Header.Write<string?>(Data.Models.Metadata.Header.BiosModeKey, header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag().AsStringValue());
if (Header.BiosMode == MergingFlag.None)
Header.BiosMode = header.BiosMode;
if (Header.ReadString(Data.Models.Metadata.Header.BuildKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.BuildKey, header.ReadString(Data.Models.Metadata.Header.BuildKey));
if (Header.ReadString(Data.Models.Metadata.Header.CategoryKey) is null)
@@ -113,12 +112,12 @@ namespace SabreTools.Metadata.DatFiles
Header.Write<string?>(Data.Models.Metadata.Header.EmailKey, header.ReadString(Data.Models.Metadata.Header.EmailKey));
if (Header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.EmulatorVersionKey, header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey));
if (Header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag() == MergingFlag.None)
Header.Write<string?>(Data.Models.Metadata.Header.ForceMergingKey, header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag().AsStringValue());
if (Header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag() == NodumpFlag.None)
Header.Write<string?>(Data.Models.Metadata.Header.ForceNodumpKey, header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag().AsStringValue());
if (Header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None)
Header.Write<string?>(Data.Models.Metadata.Header.ForcePackingKey, header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag().AsStringValue());
if (Header.ForceMerging == MergingFlag.None)
Header.ForceMerging = header.ForceMerging;
if (Header.ForceNodump == NodumpFlag.None)
Header.ForceNodump = header.ForceNodump;
if (Header.ForcePacking == PackingFlag.None)
Header.ForcePacking = header.ForcePacking;
if (Header.ForceZipping is null)
Header.ForceZipping = header.ForceZipping;
if (Header.ReadString(Data.Models.Metadata.Header.HeaderKey) is null)
@@ -145,14 +144,14 @@ namespace SabreTools.Metadata.DatFiles
Header.Write<string?>(Data.Models.Metadata.Header.PluginKey, header.ReadString(Data.Models.Metadata.Header.PluginKey));
if (Header.ReadString(Data.Models.Metadata.Header.RefNameKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.RefNameKey, header.ReadString(Data.Models.Metadata.Header.RefNameKey));
if (Header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag() == MergingFlag.None)
Header.Write<string?>(Data.Models.Metadata.Header.RomModeKey, header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag().AsStringValue());
if (Header.RomMode == MergingFlag.None)
Header.RomMode = header.RomMode;
if (Header.ReadString(Data.Models.Metadata.Header.RomTitleKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.RomTitleKey, header.ReadString(Data.Models.Metadata.Header.RomTitleKey));
if (Header.ReadString(Data.Models.Metadata.Header.RootDirKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.RootDirKey, header.ReadString(Data.Models.Metadata.Header.RootDirKey));
if (Header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag() == MergingFlag.None)
Header.Write<string?>(Data.Models.Metadata.Header.SampleModeKey, header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag().AsStringValue());
if (Header.SampleMode == MergingFlag.None)
Header.SampleMode = header.SampleMode;
if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.SchemaLocationKey, header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey));
if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey) is null)
@@ -613,10 +612,10 @@ namespace SabreTools.Metadata.DatFiles
long? size = romItem.ReadLong(Data.Models.Metadata.Rom.SizeKey);
// If the rom is a continue or ignore
string? loadFlag = rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey);
Data.Models.Metadata.LoadFlag? loadFlag = rom.LoadFlag;
if (loadFlag is not null
&& (loadFlag.Equals("continue", StringComparison.OrdinalIgnoreCase)
|| loadFlag.Equals("ignore", StringComparison.OrdinalIgnoreCase)))
&& (loadFlag == Data.Models.Metadata.LoadFlag.Continue
|| loadFlag == Data.Models.Metadata.LoadFlag.Ignore))
{
var lastRom = addRoms[addRoms.Count - 1];
long? lastSize = lastRom.ReadLong(Data.Models.Metadata.Rom.SizeKey);

View File

@@ -358,7 +358,7 @@ namespace SabreTools.Metadata.DatFiles
else
{
aggregateDataArea = [];
aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey);
aggregateDataArea.Endianness = dataArea.Endianness;
aggregateDataArea.Name = dataArea.Name;
aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey);
aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey);
@@ -784,7 +784,7 @@ namespace SabreTools.Metadata.DatFiles
else
{
aggregateDataArea = [];
aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey);
aggregateDataArea.Endianness = dataArea.Endianness;
aggregateDataArea.Name = dataArea.Name;
aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey);
aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey);
@@ -937,7 +937,7 @@ namespace SabreTools.Metadata.DatFiles
[Data.Models.Metadata.Video.AspectYKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectYKey).ToString(),
[Data.Models.Metadata.Video.HeightKey] = displayItem.ReadLong(Data.Models.Metadata.Display.HeightKey).ToString(),
[Data.Models.Metadata.Video.RefreshKey] = displayItem.ReadDouble(Data.Models.Metadata.Display.RefreshKey).ToString(),
[Data.Models.Metadata.Video.ScreenKey] = displayItem.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType()?.AsStringValue(),
Screen = displayItem.DisplayType,
[Data.Models.Metadata.Video.WidthKey] = displayItem.ReadLong(Data.Models.Metadata.Display.WidthKey).ToString()
};
@@ -977,7 +977,7 @@ namespace SabreTools.Metadata.DatFiles
var romItem = item.GetInternalClone();
// Create a Dump for every Rom that has a subtype
switch (romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType).AsOpenMSXSubType())
switch (romItem.OpenMSXMediaType)
{
case OpenMSXSubType.Rom:
var dumpRom = new Data.Models.Metadata.Dump();

View File

@@ -37,6 +37,12 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.Name = value;
}
public MergingFlag BiosMode
{
get => _internal.BiosMode;
set => _internal.BiosMode = value;
}
[JsonIgnore]
public bool CanOpenSpecified
{
@@ -53,6 +59,24 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.Debug = value;
}
public MergingFlag ForceMerging
{
get => _internal.ForceMerging;
set => _internal.ForceMerging = value;
}
public NodumpFlag ForceNodump
{
get => _internal.ForceNodump;
set => _internal.ForceNodump = value;
}
public PackingFlag ForcePacking
{
get => _internal.ForcePacking;
set => _internal.ForcePacking = value;
}
public bool? ForceZipping
{
get => _internal.ForceZipping;
@@ -104,6 +128,18 @@ namespace SabreTools.Metadata.DatFiles
}
}
public MergingFlag RomMode
{
get => _internal.RomMode;
set => _internal.RomMode = value;
}
public MergingFlag SampleMode
{
get => _internal.SampleMode;
set => _internal.SampleMode = value;
}
[JsonIgnore]
public bool SearchSpecified
{
@@ -152,20 +188,6 @@ namespace SabreTools.Metadata.DatFiles
{
var header = (_internal.Clone() as Data.Models.Metadata.Header)!;
// Remove fields with default values
if (header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag() == MergingFlag.None)
header.Remove(Data.Models.Metadata.Header.ForceMergingKey);
if (header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag() == NodumpFlag.None)
header.Remove(Data.Models.Metadata.Header.ForceNodumpKey);
if (header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None)
header.Remove(Data.Models.Metadata.Header.ForcePackingKey);
if (header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag() == MergingFlag.None)
header.Remove(Data.Models.Metadata.Header.BiosModeKey);
if (header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag() == MergingFlag.None)
header.Remove(Data.Models.Metadata.Header.RomModeKey);
if (header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag() == MergingFlag.None)
header.Remove(Data.Models.Metadata.Header.SampleModeKey);
// Convert subheader values
if (CanOpenSpecified)
header[Data.Models.Metadata.Header.CanOpenKey] = new Data.Models.OfflineList.CanOpen { Extension = ReadStringArray(Data.Models.Metadata.Header.CanOpenKey) };

View File

@@ -1,5 +1,4 @@
using System.Collections.Generic;
using SabreTools.Data.Extensions;
using SabreTools.Hashing;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
@@ -408,7 +407,7 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="disk">Item to add info from</param>
private void AddItemStatistics(Disk disk)
{
ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus();
ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
@@ -427,7 +426,7 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="disk">Item to add info from</param>
private void AddItemStatistics(Data.Models.Metadata.Disk disk)
{
ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus();
ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
@@ -483,7 +482,7 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="rom">Item to add info from</param>
private void AddItemStatistics(Rom rom)
{
ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus();
ItemStatus? status = rom.Status;
if (status != ItemStatus.Nodump)
{
TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0;
@@ -514,7 +513,7 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="rom">Item to add info from</param>
private void AddItemStatistics(Data.Models.Metadata.Rom rom)
{
ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus();
ItemStatus? status = rom.Status;
if (status != ItemStatus.Nodump)
{
TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0;
@@ -599,7 +598,7 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="disk">Item to remove info for</param>
private void RemoveItemStatistics(Disk disk)
{
ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus();
ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
@@ -618,7 +617,7 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="disk">Item to remove info for</param>
private void RemoveItemStatistics(Data.Models.Metadata.Disk disk)
{
ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus();
ItemStatus? status = disk.Status;
if (status != ItemStatus.Nodump)
{
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
@@ -674,7 +673,7 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="rom">Item to remove info for</param>
private void RemoveItemStatistics(Rom rom)
{
ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus();
ItemStatus? status = rom.Status;
if (status != ItemStatus.Nodump)
{
TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0;
@@ -705,7 +704,7 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="rom">Item to remove info for</param>
private void RemoveItemStatistics(Data.Models.Metadata.Rom rom)
{
ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus();
ItemStatus? status = rom.Status;
if (status != ItemStatus.Nodump)
{
TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0;

View File

@@ -1,6 +1,5 @@
using System;
using System;
using System.Collections.Generic;
using SabreTools.Data.Extensions;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
using SabreTools.Metadata.Filter;
@@ -134,15 +133,15 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Chip chip:
if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null)
missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey);
if (chip.ChipType is null)
missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType));
if (string.IsNullOrEmpty(chip.GetName()))
missingFields.Add(nameof(Data.Models.Metadata.Chip.Name));
break;
case Display display:
if (display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType() is null)
missingFields.Add(Data.Models.Metadata.Display.DisplayTypeKey);
if (display.DisplayType is null)
missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType));
if (display.ReadLong(Data.Models.Metadata.Display.RotateKey) is null)
missingFields.Add(Data.Models.Metadata.Display.RotateKey);
break;
@@ -165,10 +164,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Driver driver:
if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.StatusKey);
if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.EmulationKey);
if (driver.Status is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.Status));
if (driver.Emulation is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation));
break;
default:

View File

@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Extensions;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
using SabreTools.Metadata.Filter;
@@ -304,13 +303,13 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Chip chip:
if (string.IsNullOrEmpty(chip.GetName()))
missingFields.Add(nameof(Data.Models.Metadata.Chip.Name));
if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null)
missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey);
if (chip.ChipType is null)
missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType));
break;
case Display display:
if (display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType() is null)
missingFields.Add(Data.Models.Metadata.Display.DisplayTypeKey);
if (display.DisplayType is null)
missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType));
if (display.ReadDouble(Data.Models.Metadata.Display.RefreshKey) is null)
missingFields.Add(Data.Models.Metadata.Display.RefreshKey);
break;
@@ -350,24 +349,24 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Driver driver:
if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.StatusKey);
if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.EmulationKey);
if (driver.ReadString(Data.Models.Metadata.Driver.CocktailKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.CocktailKey);
if (driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.SaveStateKey);
if (driver.Status is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.Status));
if (driver.Emulation is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation));
if (driver.Cocktail is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.Cocktail));
if (driver.SaveState is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.SaveState));
break;
case Feature feature:
if (feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey).AsFeatureType() is null)
missingFields.Add(Data.Models.Metadata.Feature.FeatureTypeKey);
if (feature.FeatureType is null)
missingFields.Add(nameof(Data.Models.Metadata.Feature.FeatureType));
break;
case Device device:
if (device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey).AsDeviceType() is null)
missingFields.Add(Data.Models.Metadata.Device.DeviceTypeKey);
if (device.DeviceType is null)
missingFields.Add(nameof(Data.Models.Metadata.Device.DeviceType));
break;
case Slot slot:
@@ -380,8 +379,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey);
if (string.IsNullOrEmpty(softwarelist.GetName()))
missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name));
if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null)
missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey);
if (softwarelist.Status == null)
missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status));
break;
case RamOption ramoption:

View File

@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using SabreTools.Data.Extensions;
using SabreTools.Metadata.DatItems;
using SabreTools.Metadata.DatItems.Formats;
@@ -344,14 +343,14 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Driver driver:
if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.StatusKey);
if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.EmulationKey);
if (driver.ReadString(Data.Models.Metadata.Driver.CocktailKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.CocktailKey);
if (driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey).AsSupportStatus() is null)
missingFields.Add(Data.Models.Metadata.Driver.SaveStateKey);
if (driver.Status is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.Status));
if (driver.Emulation is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation));
if (driver.Cocktail is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.Cocktail));
if (driver.SaveState is null)
missingFields.Add(nameof(Data.Models.Metadata.Driver.SaveState));
break;
case DatItems.Formats.SoftwareList softwarelist:
@@ -359,8 +358,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey);
if (string.IsNullOrEmpty(softwarelist.GetName()))
missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name));
if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null)
missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey);
if (softwarelist.Status == null)
missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status));
break;
default:

View File

@@ -14,7 +14,6 @@ using SabreTools.Hashing;
using SabreTools.Logging;
using SabreTools.Text.Compare;
using SabreTools.Text.Extensions;
using SabreTools.Data.Extensions;
using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus;
namespace SabreTools.Metadata.DatFiles
@@ -99,12 +98,12 @@ namespace SabreTools.Metadata.DatFiles
if (item is Disk disk)
{
// If the file has aboslutely no hashes, skip and log
if (disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() != ItemStatus.Nodump
if (disk.Status != ItemStatus.Nodump
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
{
_logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump");
disk.Write<string?>(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Nodump.AsStringValue());
disk.Status = ItemStatus.Nodump;
}
item = disk;
@@ -167,19 +166,19 @@ namespace SabreTools.Metadata.DatFiles
}
// If the file has no size and it's not the above case, skip and log
else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump && (size == 0 || size is null))
else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null))
{
//logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
rom.Write<string?>(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue());
rom.Status = ItemStatus.Nodump;
}
// If the file has a size but aboslutely no hashes, skip and log
else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump
else if (rom.Status != ItemStatus.Nodump
&& size is not null && size > 0
&& !rom.HasHashes())
{
//logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
rom.Write<string?>(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue());
rom.Status = ItemStatus.Nodump;
}
item = rom;
@@ -497,13 +496,13 @@ namespace SabreTools.Metadata.DatFiles
continue;
// If it's a nodump, add and skip
if (datItem is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() == ItemStatus.Nodump)
if (datItem is Rom rom && rom.Status == ItemStatus.Nodump)
{
output.Add(datItem);
nodumpCount++;
continue;
}
else if (datItem is Disk disk && disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() == ItemStatus.Nodump)
else if (datItem is Disk disk && disk.Status == ItemStatus.Nodump)
{
output.Add(datItem);
nodumpCount++;

View File

@@ -16,7 +16,6 @@ using SabreTools.Hashing;
using SabreTools.Logging;
using SabreTools.Text.Compare;
using SabreTools.Text.Extensions;
using SabreTools.Data.Extensions;
using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus;
/*
@@ -188,12 +187,12 @@ namespace SabreTools.Metadata.DatFiles
if (item is Disk disk)
{
// If the file has aboslutely no hashes, skip and log
if (disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() != ItemStatus.Nodump
if (disk.Status != ItemStatus.Nodump
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
{
_logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump");
disk.Write<string?>(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Nodump.AsStringValue());
disk.Status = ItemStatus.Nodump;
}
item = disk;
@@ -256,19 +255,19 @@ namespace SabreTools.Metadata.DatFiles
}
// If the file has no size and it's not the above case, skip and log
else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump && (size == 0 || size is null))
else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null))
{
//logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
rom.Write<string?>(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue());
rom.Status = ItemStatus.Nodump;
}
// If the file has a size but aboslutely no hashes, skip and log
else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump
else if (rom.Status != ItemStatus.Nodump
&& size is not null && size > 0
&& !rom.HasHashes())
{
//logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
rom.Write<string?>(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue());
rom.Status = ItemStatus.Nodump;
}
item = rom;
@@ -873,13 +872,13 @@ namespace SabreTools.Metadata.DatFiles
continue;
// If it's a nodump, add and skip
if (datItem is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() == ItemStatus.Nodump)
if (datItem is Rom rom && rom.Status == ItemStatus.Nodump)
{
output.Add(new KeyValuePair<long, DatItem>(itemIndex, datItem));
nodumpCount++;
continue;
}
else if (datItem is Disk disk && disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() == ItemStatus.Nodump)
else if (datItem is Disk disk && disk.Status == ItemStatus.Nodump)
{
output.Add(new KeyValuePair<long, DatItem>(itemIndex, datItem));
nodumpCount++;