From cc3bc5bf34d44f102126ac4f6c4f0e6ffe1294e0 Mon Sep 17 00:00:00 2001 From: dex_moth Date: Tue, 12 Dec 2023 20:29:52 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B2=D1=81=D1=91=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Airbus/FormAirbusCollection.cs | 10 ++++-- Airbus/Generics/AirbusCollectionInfo.cs | 27 ++++++++++++++ Airbus/Generics/AirbusGenericCollection.cs | 2 +- Airbus/Generics/AirbusGenericStorage.cs | 42 +++++++++++----------- Airbus/Generics/DrawningAirbusEqutables.cs | 2 +- Airbus/Generics/SetGeneric.cs | 7 +++- Airbus/ProjectAirbus.csproj | 3 -- Airbus/nlog.config | 11 ------ 8 files changed, 63 insertions(+), 41 deletions(-) create mode 100644 Airbus/Generics/AirbusCollectionInfo.cs delete mode 100644 Airbus/nlog.config diff --git a/Airbus/FormAirbusCollection.cs b/Airbus/FormAirbusCollection.cs index e7a0938..134fd54 100644 --- a/Airbus/FormAirbusCollection.cs +++ b/Airbus/FormAirbusCollection.cs @@ -40,8 +40,7 @@ namespace ProjectAirbus { return; } - var obj = _storage[listBoxStorages.SelectedItem.ToString() ?? - string.Empty]; + var obj = _storage[listBoxStorages.SelectedItem.ToString() ?? string.Empty]; if (obj == null) { return; @@ -96,7 +95,7 @@ namespace ProjectAirbus listBoxStorages.Items.Clear(); for (int i = 0; i < _storage.Keys.Count; i++) { - listBoxStorages.Items.Add(_storage.Keys[i]); + listBoxStorages.Items.Add(_storage.Keys[i].Name); } if (listBoxStorages.Items.Count > 0 && (index == -1 || index >= listBoxStorages.Items.Count)) { @@ -184,6 +183,11 @@ namespace ProjectAirbus MessageBox.Show(ex.Message); _logger.LogWarning(ex.Message); } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + _logger.LogWarning(ex.Message); + } } // удалить самолёт diff --git a/Airbus/Generics/AirbusCollectionInfo.cs b/Airbus/Generics/AirbusCollectionInfo.cs new file mode 100644 index 0000000..79f5d95 --- /dev/null +++ b/Airbus/Generics/AirbusCollectionInfo.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectAirbus.Generics +{ + internal class AirbusCollectionInfo : IEquatable + { + public string Name { get; private set; } + public string Description { get; private set; } + public AirbusCollectionInfo(string name, string description) + { + Name = name; + Description = description; + } + public bool Equals(AirbusCollectionInfo? other) + { + if (ReferenceEquals(other, null)) + return false; + + return Name.Equals(other.Name); + } + public override int GetHashCode() => Name.GetHashCode(); + } +} diff --git a/Airbus/Generics/AirbusGenericCollection.cs b/Airbus/Generics/AirbusGenericCollection.cs index 9b11744..bbbdfed 100644 --- a/Airbus/Generics/AirbusGenericCollection.cs +++ b/Airbus/Generics/AirbusGenericCollection.cs @@ -38,7 +38,7 @@ namespace ProjectAirbus.Generics { if (obj != null) { - return collect._collection.Insert(obj); + return collect._collection.Insert(obj, new DrawningAirbusEqutables()); } return -1; } diff --git a/Airbus/Generics/AirbusGenericStorage.cs b/Airbus/Generics/AirbusGenericStorage.cs index 657691c..9c15cd5 100644 --- a/Airbus/Generics/AirbusGenericStorage.cs +++ b/Airbus/Generics/AirbusGenericStorage.cs @@ -13,9 +13,9 @@ namespace ProjectAirbus.Generics internal class AirbusGenericStorage { //Словарь (хранилище) - readonly Dictionary> _airbusStorages; + readonly Dictionary> _airbusStorages; //Возвращение списка названий наборов - public List Keys => _airbusStorages.Keys.ToList(); + public List Keys => _airbusStorages.Keys.ToList(); //Ширина окна отрисовки private readonly int _pictureWidth; //Высота окна отрисовки @@ -28,10 +28,9 @@ namespace ProjectAirbus.Generics // Разделитель для записи информации по объекту в файл private static readonly char _separatorForObject = ':'; - public AirbusGenericStorage(int pictureWidth, int pictureHeight) { - _airbusStorages = new Dictionary>(); + _airbusStorages = new Dictionary>(); _pictureWidth = pictureWidth; _pictureHeight = pictureHeight; } @@ -39,25 +38,24 @@ namespace ProjectAirbus.Generics // Добавление набора public void AddSet(string name) { - // проверка, что нет набора с таким именем - foreach (string nameStorage in Keys) - { - if (nameStorage == name) - { - return; - } - } - _airbusStorages.Add(name, new AirbusGenericCollection(_pictureWidth, _pictureHeight)); + AirbusCollectionInfo set = new AirbusCollectionInfo(name, string.Empty); + + if (_airbusStorages.ContainsKey(set)) + return; + + _airbusStorages.Add(set, new AirbusGenericCollection(_pictureWidth, _pictureHeight)); } // Удаление набора public void DelSet(string name) { - if ( _airbusStorages.ContainsKey(name)) - { - _airbusStorages.Remove(name); - } + AirbusCollectionInfo set = new AirbusCollectionInfo(name, string.Empty); + // проверка, что нет набора с таким именем + if (!_airbusStorages.ContainsKey(set)) + return; + + _airbusStorages.Remove(set); } // Доступ к набору @@ -65,11 +63,13 @@ namespace ProjectAirbus.Generics { get { - if (_airbusStorages.ContainsKey(ind)) + AirbusCollectionInfo set = new AirbusCollectionInfo(ind, string.Empty); + + if (!_airbusStorages.ContainsKey(set)) { - return _airbusStorages[ind]; + return null; } - return null; + return _airbusStorages[set]; } } @@ -162,7 +162,7 @@ namespace ProjectAirbus.Generics } } } - _airbusStorages.Add(record[0], collection); + _airbusStorages.Add(new AirbusCollectionInfo(record[0], string.Empty), collection); curLine = sr.ReadLine(); } } diff --git a/Airbus/Generics/DrawningAirbusEqutables.cs b/Airbus/Generics/DrawningAirbusEqutables.cs index a59d898..b9785f7 100644 --- a/Airbus/Generics/DrawningAirbusEqutables.cs +++ b/Airbus/Generics/DrawningAirbusEqutables.cs @@ -48,7 +48,7 @@ namespace ProjectAirbus.Generics return true; } - public int GetHashCode([DisallowNull] DrawningAirbus obj) + public int GetHashCode([DisallowNull] DrawningAirbus? obj) { return obj.GetHashCode(); } diff --git a/Airbus/Generics/SetGeneric.cs b/Airbus/Generics/SetGeneric.cs index 3c5faba..e0668cd 100644 --- a/Airbus/Generics/SetGeneric.cs +++ b/Airbus/Generics/SetGeneric.cs @@ -29,7 +29,7 @@ namespace ProjectAirbus.Generics // Добавление объекта в начало набора public int Insert(T airbus, IEqualityComparer? equal = null) { - return Insert(airbus, 0); + return Insert(airbus, 0, equal); } // Добавление объекта в набор на конкретную позицию @@ -43,6 +43,11 @@ namespace ProjectAirbus.Generics { throw new IndexOutOfRangeException("Индекс вне границ коллекции"); } + if (equal != null && _places.Contains(airbus,equal)) + { + throw new ArgumentException("Данный объект уже есть в коллекции"); + } + _places.Insert(position, airbus); return 0; } diff --git a/Airbus/ProjectAirbus.csproj b/Airbus/ProjectAirbus.csproj index 3cfa888..ee7064d 100644 --- a/Airbus/ProjectAirbus.csproj +++ b/Airbus/ProjectAirbus.csproj @@ -36,9 +36,6 @@ - - Always - Always diff --git a/Airbus/nlog.config b/Airbus/nlog.config deleted file mode 100644 index cccd4e0..0000000 --- a/Airbus/nlog.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file