mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Fix remove flag issues
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using SabreTools.Core.Tools;
|
using SabreTools.Core.Tools;
|
||||||
@@ -29,7 +28,7 @@ namespace SabreTools.DatFiles
|
|||||||
// Convert and assign the machines
|
// Convert and assign the machines
|
||||||
var machines = ConvertMachines(ignoreblanks);
|
var machines = ConvertMachines(ignoreblanks);
|
||||||
if (machines != null)
|
if (machines != null)
|
||||||
metadataFile[Models.Metadata.MetadataFile.MachineKey] = header;
|
metadataFile[Models.Metadata.MetadataFile.MachineKey] = machines;
|
||||||
|
|
||||||
return metadataFile;
|
return metadataFile;
|
||||||
}
|
}
|
||||||
@@ -219,124 +218,124 @@ namespace SabreTools.DatFiles
|
|||||||
{
|
{
|
||||||
case DatItems.Formats.Adjuster adjuster:
|
case DatItems.Formats.Adjuster adjuster:
|
||||||
var adjusterItem = ProcessItem(adjuster);
|
var adjusterItem = ProcessItem(adjuster);
|
||||||
EnsureMachineKey<Models.Metadata.Adjuster[]?>(machine, Models.Metadata.Machine.AdjusterKey);
|
EnsureMachineKey<Models.Metadata.Adjuster?>(machine, Models.Metadata.Machine.AdjusterKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.AdjusterKey, adjusterItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.AdjusterKey, adjusterItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Archive archive:
|
case DatItems.Formats.Archive archive:
|
||||||
var archiveItem = archive.GetInternalClone();
|
var archiveItem = archive.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Archive[]?>(machine, Models.Metadata.Machine.ArchiveKey);
|
EnsureMachineKey<Models.Metadata.Archive?>(machine, Models.Metadata.Machine.ArchiveKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.ArchiveKey, archiveItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.ArchiveKey, archiveItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.BiosSet biosSet:
|
case DatItems.Formats.BiosSet biosSet:
|
||||||
var biosSetItem = biosSet.GetInternalClone();
|
var biosSetItem = biosSet.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.BiosSet[]?>(machine, Models.Metadata.Machine.BiosSetKey);
|
EnsureMachineKey<Models.Metadata.BiosSet?>(machine, Models.Metadata.Machine.BiosSetKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.BiosSetKey, biosSetItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.BiosSetKey, biosSetItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Chip chip:
|
case DatItems.Formats.Chip chip:
|
||||||
var chipItem = chip.GetInternalClone();
|
var chipItem = chip.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Chip[]?>(machine, Models.Metadata.Machine.ChipKey);
|
EnsureMachineKey<Models.Metadata.Chip?>(machine, Models.Metadata.Machine.ChipKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.ChipKey, chipItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.ChipKey, chipItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Configuration configuration:
|
case DatItems.Formats.Configuration configuration:
|
||||||
var configurationItem = ProcessItem(configuration);
|
var configurationItem = ProcessItem(configuration);
|
||||||
EnsureMachineKey<Models.Metadata.Configuration[]?>(machine, Models.Metadata.Machine.ConfigurationKey);
|
EnsureMachineKey<Models.Metadata.Configuration?>(machine, Models.Metadata.Machine.ConfigurationKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.ConfigurationKey, configurationItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.ConfigurationKey, configurationItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Device device:
|
case DatItems.Formats.Device device:
|
||||||
var deviceItem = ProcessItem(device);
|
var deviceItem = ProcessItem(device);
|
||||||
EnsureMachineKey<Models.Metadata.Device[]?>(machine, Models.Metadata.Machine.DeviceKey);
|
EnsureMachineKey<Models.Metadata.Device?>(machine, Models.Metadata.Machine.DeviceKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.DeviceKey, deviceItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.DeviceKey, deviceItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.DeviceRef deviceRef:
|
case DatItems.Formats.DeviceRef deviceRef:
|
||||||
var deviceRefItem = deviceRef.GetInternalClone();
|
var deviceRefItem = deviceRef.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.DeviceRef[]?>(machine, Models.Metadata.Machine.DeviceRefKey);
|
EnsureMachineKey<Models.Metadata.DeviceRef?>(machine, Models.Metadata.Machine.DeviceRefKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.DeviceRefKey, deviceRefItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.DeviceRefKey, deviceRefItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.DipSwitch dipSwitch:
|
case DatItems.Formats.DipSwitch dipSwitch:
|
||||||
var dipSwitchItem = ProcessItem(dipSwitch, machine);
|
var dipSwitchItem = ProcessItem(dipSwitch, machine);
|
||||||
EnsureMachineKey<Models.Metadata.DipSwitch[]?>(machine, Models.Metadata.Machine.DipSwitchKey);
|
EnsureMachineKey<Models.Metadata.DipSwitch?>(machine, Models.Metadata.Machine.DipSwitchKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.DipSwitchKey, dipSwitchItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.DipSwitchKey, dipSwitchItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Disk disk:
|
case DatItems.Formats.Disk disk:
|
||||||
var diskItem = ProcessItem(disk, machine);
|
var diskItem = ProcessItem(disk, machine);
|
||||||
EnsureMachineKey<Models.Metadata.Disk[]?>(machine, Models.Metadata.Machine.DiskKey);
|
EnsureMachineKey<Models.Metadata.Disk?>(machine, Models.Metadata.Machine.DiskKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.DiskKey, diskItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.DiskKey, diskItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Display display:
|
case DatItems.Formats.Display display:
|
||||||
// TODO: Handle cases where it's actually a Video
|
// TODO: Handle cases where it's actually a Video
|
||||||
var displayItem = display.GetInternalClone();
|
var displayItem = display.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Display[]?>(machine, Models.Metadata.Machine.DisplayKey);
|
EnsureMachineKey<Models.Metadata.Display?>(machine, Models.Metadata.Machine.DisplayKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.DisplayKey, displayItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.DisplayKey, displayItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Driver driver:
|
case DatItems.Formats.Driver driver:
|
||||||
var driverItem = driver.GetInternalClone();
|
var driverItem = driver.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Driver[]?>(machine, Models.Metadata.Machine.DriverKey);
|
EnsureMachineKey<Models.Metadata.Driver?>(machine, Models.Metadata.Machine.DriverKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.DriverKey, driverItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.DriverKey, driverItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Feature feature:
|
case DatItems.Formats.Feature feature:
|
||||||
var featureItem = feature.GetInternalClone();
|
var featureItem = feature.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Feature[]?>(machine, Models.Metadata.Machine.FeatureKey);
|
EnsureMachineKey<Models.Metadata.Feature?>(machine, Models.Metadata.Machine.FeatureKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.FeatureKey, featureItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.FeatureKey, featureItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Info info:
|
case DatItems.Formats.Info info:
|
||||||
var infoItem = info.GetInternalClone();
|
var infoItem = info.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Info[]?>(machine, Models.Metadata.Machine.InfoKey);
|
EnsureMachineKey<Models.Metadata.Info?>(machine, Models.Metadata.Machine.InfoKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.InfoKey, infoItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.InfoKey, infoItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Input input:
|
case DatItems.Formats.Input input:
|
||||||
var inputItem = ProcessItem(input);
|
var inputItem = ProcessItem(input);
|
||||||
EnsureMachineKey<Models.Metadata.Input[]?>(machine, Models.Metadata.Machine.InputKey);
|
EnsureMachineKey<Models.Metadata.Input?>(machine, Models.Metadata.Machine.InputKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.InputKey, inputItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.InputKey, inputItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Media media:
|
case DatItems.Formats.Media media:
|
||||||
var mediaItem = media.GetInternalClone();
|
var mediaItem = media.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Media[]?>(machine, Models.Metadata.Machine.MediaKey);
|
EnsureMachineKey<Models.Metadata.Media?>(machine, Models.Metadata.Machine.MediaKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.MediaKey, mediaItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.MediaKey, mediaItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Port port:
|
case DatItems.Formats.Port port:
|
||||||
var portItem = ProcessItem(port);
|
var portItem = ProcessItem(port);
|
||||||
EnsureMachineKey<Models.Metadata.Port[]?>(machine, Models.Metadata.Machine.PortKey);
|
EnsureMachineKey<Models.Metadata.Port?>(machine, Models.Metadata.Machine.PortKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.PortKey, portItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.PortKey, portItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.RamOption ramOption:
|
case DatItems.Formats.RamOption ramOption:
|
||||||
var ramOptionItem = ramOption.GetInternalClone();
|
var ramOptionItem = ramOption.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.RamOption[]?>(machine, Models.Metadata.Machine.RamOptionKey);
|
EnsureMachineKey<Models.Metadata.RamOption?>(machine, Models.Metadata.Machine.RamOptionKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.RamOptionKey, ramOptionItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.RamOptionKey, ramOptionItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Release release:
|
case DatItems.Formats.Release release:
|
||||||
var releaseItem = release.GetInternalClone();
|
var releaseItem = release.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Release[]?>(machine, Models.Metadata.Machine.ReleaseKey);
|
EnsureMachineKey<Models.Metadata.Release?>(machine, Models.Metadata.Machine.ReleaseKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.ReleaseKey, releaseItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.ReleaseKey, releaseItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Rom rom:
|
case DatItems.Formats.Rom rom:
|
||||||
// TODO: Handle cases where it's actually a Dump
|
// TODO: Handle cases where it's actually a Dump
|
||||||
var romItem = ProcessItem(rom, machine);
|
var romItem = ProcessItem(rom, machine);
|
||||||
EnsureMachineKey<Models.Metadata.Rom[]?>(machine, Models.Metadata.Machine.RomKey);
|
EnsureMachineKey<Models.Metadata.Rom?>(machine, Models.Metadata.Machine.RomKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.RomKey, romItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.RomKey, romItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Sample sample:
|
case DatItems.Formats.Sample sample:
|
||||||
var sampleItem = sample.GetInternalClone();
|
var sampleItem = sample.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Sample[]?>(machine, Models.Metadata.Machine.SampleKey);
|
EnsureMachineKey<Models.Metadata.Sample?>(machine, Models.Metadata.Machine.SampleKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.SampleKey, sampleItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.SampleKey, sampleItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.SharedFeat sharedFeat:
|
case DatItems.Formats.SharedFeat sharedFeat:
|
||||||
var sharedFeatItem = sharedFeat.GetInternalClone();
|
var sharedFeatItem = sharedFeat.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.SharedFeat[]?>(machine, Models.Metadata.Machine.SharedFeatKey);
|
EnsureMachineKey<Models.Metadata.SharedFeat?>(machine, Models.Metadata.Machine.SharedFeatKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.SharedFeatKey, sharedFeatItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.SharedFeatKey, sharedFeatItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Slot slot:
|
case DatItems.Formats.Slot slot:
|
||||||
var slotItem = ProcessItem(slot);
|
var slotItem = ProcessItem(slot);
|
||||||
EnsureMachineKey<Models.Metadata.Slot[]?>(machine, Models.Metadata.Machine.SlotKey);
|
EnsureMachineKey<Models.Metadata.Slot?>(machine, Models.Metadata.Machine.SlotKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.SlotKey, slotItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.SlotKey, slotItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.SoftwareList softwareList:
|
case DatItems.Formats.SoftwareList softwareList:
|
||||||
var softwareListItem = softwareList.GetInternalClone();
|
var softwareListItem = softwareList.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.SoftwareList[]?>(machine, Models.Metadata.Machine.SoftwareListKey);
|
EnsureMachineKey<Models.Metadata.SoftwareList?>(machine, Models.Metadata.Machine.SoftwareListKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.SoftwareListKey, softwareListItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.SoftwareListKey, softwareListItem);
|
||||||
break;
|
break;
|
||||||
case DatItems.Formats.Sound sound:
|
case DatItems.Formats.Sound sound:
|
||||||
var soundItem = sound.GetInternalClone();
|
var soundItem = sound.GetInternalClone();
|
||||||
EnsureMachineKey<Models.Metadata.Sound[]?>(machine, Models.Metadata.Machine.SoundKey);
|
EnsureMachineKey<Models.Metadata.Sound?>(machine, Models.Metadata.Machine.SoundKey);
|
||||||
AppendToMachineKey(machine, Models.Metadata.Machine.SoundKey, soundItem);
|
AppendToMachineKey(machine, Models.Metadata.Machine.SoundKey, soundItem);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -585,8 +584,8 @@ namespace SabreTools.DatFiles
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private static void EnsureMachineKey<T>(Models.Metadata.Machine machine, string key)
|
private static void EnsureMachineKey<T>(Models.Metadata.Machine machine, string key)
|
||||||
{
|
{
|
||||||
if (machine.Read<T>(key) == null)
|
if (machine.Read<T[]?>(key) == null)
|
||||||
machine[key] = Activator.CreateInstance<T>();
|
machine[key] = new T[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -605,7 +605,7 @@ namespace SabreTools.DatFiles
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the item is supposed to be removed, we ignore
|
// If the item is supposed to be removed, we ignore
|
||||||
if (datItem.GetFieldValue<bool>(DatItem.RemoveKey))
|
if (datItem.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||||
{
|
{
|
||||||
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
|
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
|
||||||
logger?.Verbose($"Item '{itemString}' was skipped because it was marked for removal");
|
logger?.Verbose($"Item '{itemString}' was skipped because it was marked for removal");
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ namespace SabreTools.DatFiles
|
|||||||
TotalCount++;
|
TotalCount++;
|
||||||
|
|
||||||
// Increment removal count
|
// Increment removal count
|
||||||
if (item.GetFieldValue<bool>(DatItem.RemoveKey))
|
if (item.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||||
RemovedCount++;
|
RemovedCount++;
|
||||||
|
|
||||||
// Increment the item count for the type
|
// Increment the item count for the type
|
||||||
@@ -399,8 +399,8 @@ namespace SabreTools.DatFiles
|
|||||||
|
|
||||||
// Filter the list
|
// Filter the list
|
||||||
return fi.Where(i => i != null)
|
return fi.Where(i => i != null)
|
||||||
.Where(i => !i.GetFieldValue<bool>(DatItem.RemoveKey))
|
.Where(i => i.GetFieldValue<bool?>(DatItem.RemoveKey) != true)
|
||||||
.Where(i => i.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) != null)
|
.Where(i => i.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||||
.ToConcurrentList();
|
.ToConcurrentList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -500,7 +500,7 @@ namespace SabreTools.DatFiles
|
|||||||
TotalCount--;
|
TotalCount--;
|
||||||
|
|
||||||
// Decrement removal count
|
// Decrement removal count
|
||||||
if (item.GetFieldValue<bool>(DatItem.RemoveKey))
|
if (item.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||||
RemovedCount--;
|
RemovedCount--;
|
||||||
|
|
||||||
// Decrement the item count for the type
|
// Decrement the item count for the type
|
||||||
@@ -907,7 +907,7 @@ namespace SabreTools.DatFiles
|
|||||||
foreach (string key in keys)
|
foreach (string key in keys)
|
||||||
{
|
{
|
||||||
ConcurrentList<DatItem>? oldItemList = items[key];
|
ConcurrentList<DatItem>? oldItemList = items[key];
|
||||||
ConcurrentList<DatItem>? newItemList = oldItemList?.Where(i => !i.GetFieldValue<bool>(DatItem.RemoveKey))?.ToConcurrentList();
|
ConcurrentList<DatItem>? newItemList = oldItemList?.Where(i => i.GetFieldValue<bool>(DatItem.RemoveKey) != true)?.ToConcurrentList();
|
||||||
|
|
||||||
Remove(key);
|
Remove(key);
|
||||||
AddRange(key, newItemList);
|
AddRange(key, newItemList);
|
||||||
@@ -944,12 +944,12 @@ namespace SabreTools.DatFiles
|
|||||||
for (int i = 0; i < roms.Count; i++)
|
for (int i = 0; i < roms.Count; i++)
|
||||||
{
|
{
|
||||||
DatItem other = roms[i];
|
DatItem other = roms[i];
|
||||||
if (other.GetFieldValue<bool>(DatItem.RemoveKey))
|
if (other.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (datItem.Equals(other))
|
if (datItem.Equals(other))
|
||||||
{
|
{
|
||||||
other.SetFieldValue<bool>(DatItem.RemoveKey, true);
|
other.SetFieldValue<bool?>(DatItem.RemoveKey, true);
|
||||||
output.Add(other);
|
output.Add(other);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ namespace SabreTools.DatFiles
|
|||||||
TotalCount++;
|
TotalCount++;
|
||||||
|
|
||||||
// Increment removal count
|
// Increment removal count
|
||||||
if (item.GetFieldValue<bool>(DatItem.RemoveKey))
|
if (item.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||||
RemovedCount++;
|
RemovedCount++;
|
||||||
|
|
||||||
// Increment the item count for the type
|
// Increment the item count for the type
|
||||||
@@ -530,7 +530,7 @@ namespace SabreTools.DatFiles
|
|||||||
|
|
||||||
// Filter the list
|
// Filter the list
|
||||||
return fi.Where(i => i != null)
|
return fi.Where(i => i != null)
|
||||||
.Where(i => !i.GetFieldValue<bool>(DatItem.RemoveKey))
|
.Where(i => i.GetFieldValue<bool?>(DatItem.RemoveKey) != true)
|
||||||
.Where(i => i.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) != null)
|
.Where(i => i.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) != null)
|
||||||
.ToConcurrentList();
|
.ToConcurrentList();
|
||||||
}
|
}
|
||||||
@@ -644,7 +644,7 @@ namespace SabreTools.DatFiles
|
|||||||
TotalCount--;
|
TotalCount--;
|
||||||
|
|
||||||
// Decrement removal count
|
// Decrement removal count
|
||||||
if (item.GetFieldValue<bool>(DatItem.RemoveKey))
|
if (item.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||||
RemovedCount--;
|
RemovedCount--;
|
||||||
|
|
||||||
// Decrement the item count for the type
|
// Decrement the item count for the type
|
||||||
@@ -1079,7 +1079,7 @@ CREATE TABLE IF NOT EXISTS groups (
|
|||||||
foreach (string key in keys)
|
foreach (string key in keys)
|
||||||
{
|
{
|
||||||
ConcurrentList<DatItem>? oldItemList = this[key];
|
ConcurrentList<DatItem>? oldItemList = this[key];
|
||||||
ConcurrentList<DatItem>? newItemList = oldItemList?.Where(i => !i.GetFieldValue<bool>(DatItem.RemoveKey))?.ToConcurrentList();
|
ConcurrentList<DatItem>? newItemList = oldItemList?.Where(i => i.GetFieldValue<bool>(DatItem.RemoveKey) != true)?.ToConcurrentList();
|
||||||
|
|
||||||
Remove(key);
|
Remove(key);
|
||||||
AddRange(key, newItemList);
|
AddRange(key, newItemList);
|
||||||
@@ -1113,12 +1113,12 @@ CREATE TABLE IF NOT EXISTS groups (
|
|||||||
for (int i = 0; i < roms.Count; i++)
|
for (int i = 0; i < roms.Count; i++)
|
||||||
{
|
{
|
||||||
DatItem other = roms[i];
|
DatItem other = roms[i];
|
||||||
if (other.GetFieldValue<bool>(DatItem.RemoveKey))
|
if (other.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (datItem.Equals(other))
|
if (datItem.Equals(other))
|
||||||
{
|
{
|
||||||
other.SetFieldValue<bool>(DatItem.RemoveKey, true);
|
other.SetFieldValue<bool?>(DatItem.RemoveKey, true);
|
||||||
output.Add(other);
|
output.Add(other);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
{
|
{
|
||||||
var blank = new Blank();
|
var blank = new Blank();
|
||||||
blank.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
blank.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||||
blank.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
|
blank.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||||
blank.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
blank.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
blank.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
blank.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
||||||
|
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
rom.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.SetName(this.GetFieldValue<DiskArea?>(Disk.DiskAreaKey)?.GetName());
|
rom.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.SetName(this.GetFieldValue<DiskArea?>(Disk.DiskAreaKey)?.GetName());
|
||||||
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
||||||
rom.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
|
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||||
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
|
|
||||||
return rom;
|
return rom;
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
};
|
};
|
||||||
file.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
file.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
file.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
file.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
||||||
file.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
|
file.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||||
file.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
file.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
|
|
||||||
return file;
|
return file;
|
||||||
@@ -174,7 +174,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey)!.Clone() as Machine ?? new Machine());
|
||||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, MD5);
|
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, MD5);
|
||||||
rom.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
|
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, SHA1);
|
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, SHA1);
|
||||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, SHA256);
|
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, SHA256);
|
||||||
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
var rom = new Rom(_internal.ConvertToRom()!);
|
var rom = new Rom(_internal.ConvertToRom()!);
|
||||||
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
rom.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
rom.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||||
rom.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
|
rom.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||||
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
rom.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
|
|
||||||
return rom;
|
return rom;
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
};
|
};
|
||||||
releaseDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
releaseDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
releaseDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
releaseDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||||
releaseDetails.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
|
releaseDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||||
releaseDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
releaseDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
releaseDetails.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
releaseDetails.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
};
|
};
|
||||||
serials.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
serials.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
serials.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
serials.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||||
serials.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
|
serials.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||||
serials.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
serials.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
serials.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
serials.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
||||||
|
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ namespace SabreTools.DatItems.Formats
|
|||||||
};
|
};
|
||||||
sourceDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
sourceDetails.SetFieldValue<DupeType>(DatItem.DupeTypeKey, GetFieldValue<DupeType>(DatItem.DupeTypeKey));
|
||||||
sourceDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
sourceDetails.SetFieldValue<Machine>(DatItem.MachineKey, GetFieldValue<Machine>(DatItem.MachineKey));
|
||||||
sourceDetails.SetFieldValue<bool>(DatItem.RemoveKey, GetFieldValue<bool>(DatItem.RemoveKey));
|
sourceDetails.SetFieldValue<bool?>(DatItem.RemoveKey, GetFieldValue<bool?>(DatItem.RemoveKey));
|
||||||
sourceDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
sourceDetails.SetFieldValue<Source?>(DatItem.SourceKey, GetFieldValue<Source?>(DatItem.SourceKey));
|
||||||
sourceDetails.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
sourceDetails.SetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey, GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey));
|
||||||
|
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ namespace SabreTools.DatTools
|
|||||||
{
|
{
|
||||||
// Unmatched items will have a source ID of int.MaxValue, remove all others
|
// Unmatched items will have a source ID of int.MaxValue, remove all others
|
||||||
if (items[i].GetFieldValue<Source?>(DatItem.SourceKey)?.Index != int.MaxValue)
|
if (items[i].GetFieldValue<Source?>(DatItem.SourceKey)?.Index != int.MaxValue)
|
||||||
items[i].SetFieldValue<bool>(DatItem.RemoveKey, true);
|
items[i].SetFieldValue<bool?>(DatItem.RemoveKey, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the list back, just in case
|
// Set the list back, just in case
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ namespace SabreTools.Test.DatFiles
|
|||||||
var rom2 = new Rom();
|
var rom2 = new Rom();
|
||||||
rom2.SetName("rom-2");
|
rom2.SetName("rom-2");
|
||||||
rom2.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "DEADBEEF");
|
rom2.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, "DEADBEEF");
|
||||||
rom2.SetFieldValue<bool>(DatItem.RemoveKey, true);
|
rom2.SetFieldValue<bool?>(DatItem.RemoveKey, true);
|
||||||
rom2.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44");
|
rom2.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, "000000e948edcb4f7704b8af85a77a3339ecce44");
|
||||||
rom2.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
|
rom2.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, 1024);
|
||||||
rom1.CopyMachineInformation(machine1);
|
rom1.CopyMachineInformation(machine1);
|
||||||
|
|||||||
Reference in New Issue
Block a user