diff --git a/SabreTools.Library/DatFiles/Listxml.cs b/SabreTools.Library/DatFiles/Listxml.cs index c09d7e69..4fe5bd7d 100644 --- a/SabreTools.Library/DatFiles/Listxml.cs +++ b/SabreTools.Library/DatFiles/Listxml.cs @@ -771,7 +771,7 @@ namespace SabreTools.Library.DatFiles case "diplocation": var dipLocation = new Location(); dipLocation.Name = reader.GetAttribute("name"); - dipLocation.Number = reader.GetAttribute("number"); + dipLocation.Number = Sanitizer.CleanLong(reader.GetAttribute("number")); dipLocation.Inverted = reader.GetAttribute("inverted").AsYesNo(); dipSwitch.Locations.Add(dipLocation); @@ -895,7 +895,7 @@ namespace SabreTools.Library.DatFiles case "conflocation": var confLocation = new Location(); confLocation.Name = reader.GetAttribute("name"); - confLocation.Number = reader.GetAttribute("number"); + confLocation.Number = Sanitizer.CleanLong(reader.GetAttribute("number")); confLocation.Inverted = reader.GetAttribute("inverted").AsYesNo(); configuration.Locations.Add(confLocation); @@ -1396,7 +1396,7 @@ namespace SabreTools.Library.DatFiles { xtw.WriteStartElement("conflocation"); xtw.WriteOptionalAttributeString("name", location.Name); - xtw.WriteOptionalAttributeString("number", location.Number); + xtw.WriteOptionalAttributeString("number", location.Number?.ToString()); xtw.WriteOptionalAttributeString("inverted", location.Inverted.FromYesNo()); xtw.WriteEndElement(); } @@ -1476,7 +1476,7 @@ namespace SabreTools.Library.DatFiles { xtw.WriteStartElement("diplocation"); xtw.WriteOptionalAttributeString("name", location.Name); - xtw.WriteOptionalAttributeString("number", location.Number); + xtw.WriteOptionalAttributeString("number", location.Number?.ToString()); xtw.WriteOptionalAttributeString("inverted", location.Inverted.FromYesNo()); xtw.WriteEndElement(); } diff --git a/SabreTools.Library/DatFiles/SabreDat.cs b/SabreTools.Library/DatFiles/SabreDat.cs index edb8809b..d8cb1276 100644 --- a/SabreTools.Library/DatFiles/SabreDat.cs +++ b/SabreTools.Library/DatFiles/SabreDat.cs @@ -732,7 +732,7 @@ namespace SabreTools.Library.DatFiles case "conflocation": var confLocation = new Location(); confLocation.Name = reader.GetAttribute("name"); - confLocation.Number = reader.GetAttribute("number"); + confLocation.Number = Sanitizer.CleanLong(reader.GetAttribute("number")); confLocation.Inverted = reader.GetAttribute("inverted").AsYesNo(); (configuration as Configuration).Locations.Add(confLocation); @@ -860,7 +860,7 @@ namespace SabreTools.Library.DatFiles case "diplocation": var dipLocation = new Location(); dipLocation.Name = reader.GetAttribute("name"); - dipLocation.Number = reader.GetAttribute("number"); + dipLocation.Number = Sanitizer.CleanLong(reader.GetAttribute("number")); dipLocation.Inverted = reader.GetAttribute("inverted").AsYesNo(); (dipSwitch as DipSwitch).Locations.Add(dipLocation); @@ -1298,7 +1298,7 @@ namespace SabreTools.Library.DatFiles { xtw.WriteStartElement("conflocation"); xtw.WriteOptionalAttributeString("name", location.Name); - xtw.WriteOptionalAttributeString("number", location.Number); + xtw.WriteOptionalAttributeString("number", location.Number?.ToString()); xtw.WriteOptionalAttributeString("inverted", location.Inverted.FromYesNo()); xtw.WriteEndElement(); } @@ -1381,7 +1381,7 @@ namespace SabreTools.Library.DatFiles { xtw.WriteStartElement("diplocation"); xtw.WriteOptionalAttributeString("name", location.Name); - xtw.WriteOptionalAttributeString("number", location.Number); + xtw.WriteOptionalAttributeString("number", location.Number?.ToString()); xtw.WriteOptionalAttributeString("inverted", location.Inverted.FromYesNo()); xtw.WriteEndElement(); } diff --git a/SabreTools.Library/DatItems/Location.cs b/SabreTools.Library/DatItems/Location.cs index 69f467e1..246a540e 100644 --- a/SabreTools.Library/DatItems/Location.cs +++ b/SabreTools.Library/DatItems/Location.cs @@ -26,7 +26,7 @@ namespace SabreTools.Library.DatItems /// Location ID /// [JsonProperty("number", DefaultValueHandling = DefaultValueHandling.Ignore)] - public string Number { get; set; } + public long? Number { get; set; } /// /// Determines if location is inverted or not @@ -61,7 +61,7 @@ namespace SabreTools.Library.DatItems Name = mappings[Field.DatItem_Location_Name]; if (mappings.Keys.Contains(Field.DatItem_Location_Number)) - Number = mappings[Field.DatItem_Location_Number]; + Number = Sanitizer.CleanLong(mappings[Field.DatItem_Location_Number]); if (mappings.Keys.Contains(Field.DatItem_Location_Inverted)) Inverted = mappings[Field.DatItem_Location_Inverted].AsYesNo(); @@ -169,9 +169,11 @@ namespace SabreTools.Library.DatItems return false; // Filter on number - if (filter.DatItem_Location_Number.MatchesPositiveSet(Number) == false) + if (filter.DatItem_Location_Number.MatchesNeutral(null, Number) == false) return false; - if (filter.DatItem_Location_Number.MatchesNegativeSet(Number) == true) + else if (filter.DatItem_Location_Number.MatchesPositive(null, Number) == false) + return false; + else if (filter.DatItem_Location_Number.MatchesNegative(null, Number) == false) return false; // Filter on inverted diff --git a/SabreTools.Library/Filtering/Filter.cs b/SabreTools.Library/Filtering/Filter.cs index 4a742dcf..b9482547 100644 --- a/SabreTools.Library/Filtering/Filter.cs +++ b/SabreTools.Library/Filtering/Filter.cs @@ -235,7 +235,7 @@ namespace SabreTools.Library.Filtering // Location public FilterItem DatItem_Location_Name { get; private set; } = new FilterItem(); - public FilterItem DatItem_Location_Number { get; private set; } = new FilterItem(); + public FilterItem DatItem_Location_Number { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; public FilterItem DatItem_Location_Inverted { get; private set; } = new FilterItem() { Neutral = null }; // Part @@ -974,7 +974,7 @@ namespace SabreTools.Library.Filtering break; case Field.DatItem_Location_Number: - SetStringFilter(DatItem_Location_Number, value, negate); + SetLongFilter(DatItem_Location_Number, value, negate); break; case Field.DatItem_Location_Inverted: