Add db export Archive fields

This commit is contained in:
Matt Nadareski
2023-04-07 14:34:49 -04:00
parent 01ce52ec35
commit c6c0b0ce8b
6 changed files with 155 additions and 2 deletions

View File

@@ -83,6 +83,12 @@ namespace SabreTools.Filtering
// Analog
public FilterItem<string> Analog_Mask { get; private set; } = new FilterItem<string>();
// Archive
public FilterItem<string> Number { get; private set; } = new FilterItem<string>();
public FilterItem<string> Clone { get; private set; } = new FilterItem<string>();
public FilterItem<string> RegParent { get; private set; } = new FilterItem<string>();
public FilterItem<string> Languages { get; private set; } = new FilterItem<string>();
// BiosSet
public FilterItem<string> Description { get; private set; } = new FilterItem<string>();
@@ -434,6 +440,23 @@ namespace SabreTools.Filtering
SetStringFilter(Analog_Mask, value, negate);
break;
// Archive
case DatItemField.Number:
SetStringFilter(Number, value, negate);
break;
case DatItemField.Clone:
SetStringFilter(Clone, value, negate);
break;
case DatItemField.RegParent:
SetStringFilter(RegParent, value, negate);
break;
case DatItemField.Languages:
SetStringFilter(Languages, value, negate);
break;
// BiosSet
case DatItemField.Description:
SetStringFilter(Description, value, negate);
@@ -859,6 +882,7 @@ namespace SabreTools.Filtering
{
Adjuster adjuster => PassesFilters(adjuster),
Analog analog => PassesFilters(analog),
Archive archive => PassesFilters(archive),
BiosSet biosSet => PassesFilters(biosSet),
Chip chip => PassesFilters(chip),
Condition condition => PassesFilters(condition),
@@ -934,6 +958,36 @@ namespace SabreTools.Filtering
return true;
}
/// <summary>
/// Check to see if an Archive passes the filters
/// </summary>
/// <param name="archive">Archive to check</param>
/// <returns>True if the item passed the filter, false otherwise</returns>
private bool PassesFilters(Archive archive)
{
// Filter on number
if (!PassStringFilter(Number, archive.Number))
return false;
// Filter on clone
if (!PassStringFilter(Clone, analog.Clone))
return false;
// Filter on regional parent
if (!PassStringFilter(RegParent, analog.RegParent))
return false;
// Filter on region
if (!PassStringFilter(Region, analog.Region))
return false;
// Filter on languages
if (!PassStringFilter(Languages, analog.Languages))
return false;
return true;
}
/// <summary>
/// Check to see if a BiosSet passes the filters
/// </summary>

View File

@@ -88,6 +88,7 @@ namespace SabreTools.Filtering
if (datItem is Adjuster) RemoveFields(datItem as Adjuster);
else if (datItem is Analog) RemoveFields(datItem as Analog);
else if (datItem is Archive) RemoveFields(datItem as Archive);
else if (datItem is BiosSet) RemoveFields(datItem as BiosSet);
else if (datItem is Chip) RemoveFields(datItem as Chip);
else if (datItem is Condition) RemoveFields(datItem as Condition);
@@ -300,6 +301,28 @@ namespace SabreTools.Filtering
analog.Mask = null;
}
/// <summary>
/// Remove fields with given values
/// </summary>
/// <param name="archive">Archive to remove fields from</param>
private void RemoveFields(Archive archive)
{
if (DatItemFields.Contains(DatItemField.Number))
archive.Number = null;
if (DatItemFields.Contains(DatItemField.Clone))
archive.Clone = null;
if (DatItemFields.Contains(DatItemField.RegParent))
archive.RegParent = null;
if (DatItemFields.Contains(DatItemField.Region))
archive.Region = null;
if (DatItemFields.Contains(DatItemField.Languages))
archive.Languages = null;
}
/// <summary>
/// Remove fields with given values
/// </summary>

View File

@@ -36,6 +36,7 @@ namespace SabreTools.Filtering
if (datItem is Adjuster) ReplaceFields(datItem as Adjuster, repDatItem as Adjuster, datItemFields);
else if (datItem is Analog) ReplaceFields(datItem as Analog, repDatItem as Analog, datItemFields);
else if (datItem is Archive) ReplaceFields(datItem as Archive, repDatItem as Archive, datItemFields);
else if (datItem is BiosSet) ReplaceFields(datItem as BiosSet, repDatItem as BiosSet, datItemFields);
else if (datItem is Chip) ReplaceFields(datItem as Chip, repDatItem as Chip, datItemFields);
else if (datItem is Condition) ReplaceFields(datItem as Condition, repDatItem as Condition, datItemFields);
@@ -254,6 +255,30 @@ namespace SabreTools.Filtering
analog.Mask = newItem.Mask;
}
/// <summary>
/// Replace fields with given values
/// </summary>
/// <param name="archive">Archive to remove replace fields in</param>
/// <param name="newItem">Archive to pull new information from</param>
/// <param name="datItemFields">List of fields representing what should be updated</param>
private static void ReplaceFields(Archive archive, Archive newItem, List<DatItemField> datItemFields)
{
if (datItemFields.Contains(DatItemField.Number))
archive.Number = newItem.Number;
if (datItemFields.Contains(DatItemField.Clone))
archive.Clone = newItem.Clone;
if (datItemFields.Contains(DatItemField.RegParent))
archive.RegParent = newItem.RegParent;
if (datItemFields.Contains(DatItemField.Region))
archive.Region = newItem.Region;
if (datItemFields.Contains(DatItemField.Languages))
archive.Languages = newItem.Languages;
}
/// <summary>
/// Replace fields with given values
/// </summary>