mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Force source index for IDDB AddItem
This commit is contained in:
@@ -145,10 +145,21 @@ namespace SabreTools.DatTools
|
||||
// Get all current items, machines, and mappings
|
||||
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var sources = datFile.ItemsDB.GetSources().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
|
||||
// Create a mapping from old machine index to new machine index
|
||||
// Create mappings from old index to new index
|
||||
var machineRemapping = new Dictionary<long, long>();
|
||||
var sourceRemapping = new Dictionary<long, long>();
|
||||
|
||||
// Loop through and add all sources
|
||||
foreach (var source in sources)
|
||||
{
|
||||
long newSourceIndex = extADat.ItemsDB.AddSource(source.Value);
|
||||
_ = extBDat.ItemsDB.AddSource(source.Value);
|
||||
sourceRemapping[source.Key] = newSourceIndex;
|
||||
}
|
||||
|
||||
// Loop through and add all machines
|
||||
foreach (var machine in machines)
|
||||
@@ -167,21 +178,22 @@ namespace SabreTools.DatTools
|
||||
foreach (var item in datItems)
|
||||
#endif
|
||||
{
|
||||
// Get the machine index for this item
|
||||
long machineIndex = mappings[item.Key];
|
||||
// Get the machine and source index for this item
|
||||
long machineIndex = itemMachineMappings[item.Key];
|
||||
long sourceIndex = itemSourceMappings[item.Key];
|
||||
|
||||
if (newExtA.Contains((item.Value.GetName() ?? string.Empty).GetNormalizedExtension()))
|
||||
{
|
||||
extADat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
extADat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
}
|
||||
else if (newExtB.Contains((item.Value.GetName() ?? string.Empty).GetNormalizedExtension()))
|
||||
{
|
||||
extBDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
extBDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
}
|
||||
else
|
||||
{
|
||||
extADat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
extBDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
extADat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
extBDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
}
|
||||
#if NET40_OR_GREATER || NETCOREAPP
|
||||
});
|
||||
@@ -383,10 +395,27 @@ namespace SabreTools.DatTools
|
||||
// Get all current items, machines, and mappings
|
||||
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var sources = datFile.ItemsDB.GetSources().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
|
||||
// Create a mapping from old machine index to new machine index
|
||||
// Create mappings from old index to new index
|
||||
var machineRemapping = new Dictionary<long, long>();
|
||||
var sourceRemapping = new Dictionary<long, long>();
|
||||
|
||||
// Loop through and add all sources
|
||||
foreach (var source in sources)
|
||||
{
|
||||
long newSourceIndex = fieldDats[Models.Metadata.Rom.StatusKey].ItemsDB.AddSource(source.Value);
|
||||
_ = fieldDats[Models.Metadata.Rom.SHA512Key].ItemsDB.AddSource(source.Value);
|
||||
_ = fieldDats[Models.Metadata.Rom.SHA384Key].ItemsDB.AddSource(source.Value);
|
||||
_ = fieldDats[Models.Metadata.Rom.SHA256Key].ItemsDB.AddSource(source.Value);
|
||||
_ = fieldDats[Models.Metadata.Rom.SHA1Key].ItemsDB.AddSource(source.Value);
|
||||
_ = fieldDats[Models.Metadata.Rom.MD5Key].ItemsDB.AddSource(source.Value);
|
||||
_ = fieldDats[Models.Metadata.Rom.CRCKey].ItemsDB.AddSource(source.Value);
|
||||
_ = fieldDats["null"].ItemsDB.AddSource(source.Value);
|
||||
sourceRemapping[source.Key] = newSourceIndex;
|
||||
}
|
||||
|
||||
// Loop through and add all machines
|
||||
foreach (var machine in machines)
|
||||
@@ -411,53 +440,54 @@ namespace SabreTools.DatTools
|
||||
foreach (var item in datItems)
|
||||
#endif
|
||||
{
|
||||
// Get the machine index for this item
|
||||
long machineIndex = mappings[item.Key];
|
||||
// Get the machine and source index for this item
|
||||
long machineIndex = itemMachineMappings[item.Key];
|
||||
long sourceIndex = itemSourceMappings[item.Key];
|
||||
|
||||
// Only process Disk, Media, and Rom
|
||||
switch (item.Value)
|
||||
{
|
||||
case Disk disk:
|
||||
if (disk.GetStringFieldValue(Models.Metadata.Disk.StatusKey).AsEnumValue<ItemStatus>() == ItemStatus.Nodump)
|
||||
fieldDats[Models.Metadata.Disk.StatusKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Disk.StatusKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
|
||||
fieldDats[Models.Metadata.Disk.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Disk.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)))
|
||||
fieldDats[Models.Metadata.Disk.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Disk.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)))
|
||||
fieldDats[Models.Metadata.Disk.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Disk.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else
|
||||
fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
break;
|
||||
|
||||
case Media media:
|
||||
if (!string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA256Key)))
|
||||
fieldDats[Models.Metadata.Media.SHA256Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Media.SHA256Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)))
|
||||
fieldDats[Models.Metadata.Media.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Media.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.MD5Key)))
|
||||
fieldDats[Models.Metadata.Media.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Media.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else
|
||||
fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
break;
|
||||
|
||||
case Rom rom:
|
||||
if (rom.GetStringFieldValue(Models.Metadata.Rom.StatusKey).AsEnumValue<ItemStatus>() == ItemStatus.Nodump)
|
||||
fieldDats[Models.Metadata.Rom.StatusKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Rom.StatusKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)))
|
||||
fieldDats[Models.Metadata.Rom.SHA512Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Rom.SHA512Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)))
|
||||
fieldDats[Models.Metadata.Rom.SHA384Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Rom.SHA384Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)))
|
||||
fieldDats[Models.Metadata.Rom.SHA256Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Rom.SHA256Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
|
||||
fieldDats[Models.Metadata.Rom.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Rom.SHA1Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)))
|
||||
fieldDats[Models.Metadata.Rom.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Rom.MD5Key].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)))
|
||||
fieldDats[Models.Metadata.Rom.CRCKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats[Models.Metadata.Rom.CRCKey].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
else
|
||||
fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
fieldDats["null"].ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -695,10 +725,21 @@ namespace SabreTools.DatTools
|
||||
// Get all current items, machines, and mappings
|
||||
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var sources = datFile.ItemsDB.GetSources().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
|
||||
// Create a mapping from old machine index to new machine index
|
||||
// Create mappings from old index to new index
|
||||
var machineRemapping = new Dictionary<long, long>();
|
||||
var sourceRemapping = new Dictionary<long, long>();
|
||||
|
||||
// Loop through and add all sources
|
||||
foreach (var source in sources)
|
||||
{
|
||||
long newSourceIndex = lessThan.ItemsDB.AddSource(source.Value);
|
||||
_ = greaterThan.ItemsDB.AddSource(source.Value);
|
||||
sourceRemapping[source.Key] = newSourceIndex;
|
||||
}
|
||||
|
||||
// Loop through and add all machines
|
||||
foreach (var machine in machines)
|
||||
@@ -717,24 +758,25 @@ namespace SabreTools.DatTools
|
||||
foreach (var item in datItems)
|
||||
#endif
|
||||
{
|
||||
// Get the machine index for this item
|
||||
long machineIndex = mappings[item.Key];
|
||||
// Get the machine and source index for this item
|
||||
long machineIndex = itemMachineMappings[item.Key];
|
||||
long sourceIndex = itemSourceMappings[item.Key];
|
||||
|
||||
// If the file is not a Rom, it automatically goes in the "lesser" dat
|
||||
if (item.Value is not Rom rom)
|
||||
lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
|
||||
// If the file is a Rom and has no size, put it in the "lesser" dat
|
||||
else if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null)
|
||||
lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
|
||||
// If the file is a Rom and less than the radix, put it in the "lesser" dat
|
||||
else if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < radix)
|
||||
lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
lessThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
|
||||
// If the file is a Rom and greater than or equal to the radix, put it in the "greater" dat
|
||||
else if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) >= radix)
|
||||
greaterThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
greaterThan.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
#if NET40_OR_GREATER || NETCOREAPP
|
||||
});
|
||||
#else
|
||||
@@ -939,10 +981,20 @@ namespace SabreTools.DatTools
|
||||
// Get all current items, machines, and mappings
|
||||
var datItems = datFile.ItemsDB.GetItems().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var machines = datFile.ItemsDB.GetMachines().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var mappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var sources = datFile.ItemsDB.GetSources().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var itemMachineMappings = datFile.ItemsDB.GetItemMachineMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
var itemSourceMappings = datFile.ItemsDB.GetItemSourceMappings().ToDictionary(m => m.Item1, m => m.Item2);
|
||||
|
||||
// Create a mapping from old machine index to new machine index
|
||||
// Create mappings from old index to new index
|
||||
var machineRemapping = new Dictionary<long, long>();
|
||||
var sourceRemapping = new Dictionary<long, long>();
|
||||
|
||||
// Loop through and add all sources
|
||||
foreach (var source in sources)
|
||||
{
|
||||
long newSourceIndex = indexDat.ItemsDB.AddSource(source.Value);
|
||||
sourceRemapping[source.Key] = newSourceIndex;
|
||||
}
|
||||
|
||||
// Loop through and add all machines
|
||||
foreach (var machine in machines)
|
||||
@@ -960,11 +1012,12 @@ namespace SabreTools.DatTools
|
||||
foreach (var item in datItems)
|
||||
#endif
|
||||
{
|
||||
// Get the machine index for this item
|
||||
long machineIndex = mappings[item.Key];
|
||||
// Get the machine and source index for this item
|
||||
long machineIndex = itemMachineMappings[item.Key];
|
||||
long sourceIndex = itemSourceMappings[item.Key];
|
||||
|
||||
if (item.Value.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>() == itemType)
|
||||
indexDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], statsOnly: false);
|
||||
indexDat.ItemsDB.AddItem(item.Value, machineRemapping[machineIndex], sourceRemapping[sourceIndex], statsOnly: false);
|
||||
#if NET40_OR_GREATER || NETCOREAPP
|
||||
});
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user