diff --git a/ProjectCar/ProjectCar/CollectionGenericObjects/AbstractCompany.cs b/ProjectCar/ProjectCar/CollectionGenericObjects/AbstractCompany.cs index 47de47a..c6aeece 100644 --- a/ProjectCar/ProjectCar/CollectionGenericObjects/AbstractCompany.cs +++ b/ProjectCar/ProjectCar/CollectionGenericObjects/AbstractCompany.cs @@ -1,5 +1,5 @@ -using ProjectGasMachine.Drawnings; -using ProjectGasMachine.Exceptions; +using ProjectGasMachine.Exceptions; +using ProjectGasMachine.Drawnings; using System; using System.Collections.Generic; using System.Linq; @@ -65,7 +65,18 @@ public abstract class AbstractCompany /// public static int operator +(AbstractCompany company, DrawningMachine machine) { - return company._collection.Insert(machine, 0); + try + { + return company._collection.Insert(machine, 0, new DrawningMachineEqutables()); + } + catch (ObjectAlreadyInCollectionException) + { + return -1; + } + catch (CollectionOverflowException) + { + return -1; + } } /// @@ -125,6 +136,12 @@ public abstract class AbstractCompany return bitmap; } + /// + /// Сортировка + /// + /// Сравнитель объектов + public void Sort(IComparer comparer) => _collection?.CollectionSort(comparer); + /// /// Вывод заднего фона /// diff --git a/ProjectCar/ProjectCar/CollectionGenericObjects/CollectionInfo.cs b/ProjectCar/ProjectCar/CollectionGenericObjects/CollectionInfo.cs new file mode 100644 index 0000000..1b74797 --- /dev/null +++ b/ProjectCar/ProjectCar/CollectionGenericObjects/CollectionInfo.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectGasMachine.CollectionGenericObjects; + +/// +/// Класс, хранящиий информацию по коллекции +/// +public class CollectionInfo : IEquatable +{ + /// + /// Название + /// + public string Name { get; private set; } + + /// + /// Тип + /// + public CollectionType CollectionType { get; private set; } + + /// + /// Описание + /// + public string Description { get; private set; } + + /// + /// Разделитель для записи информации по объекту в файл + /// + private static readonly string _separator = "-"; + + /// + /// Конструктор + /// + /// Название + /// Тип + /// Описание + public CollectionInfo(string name, CollectionType collectionType, string description) + { + Name = name; + CollectionType = collectionType; + Description = description; + } + + /// + /// Создание объекта из строки + /// + /// Строка + /// Объект или null + public static CollectionInfo? GetCollectionInfo(string data) + { + string[] strs = data.Split(_separator, StringSplitOptions.RemoveEmptyEntries); + if (strs.Length < 1 || strs.Length > 3) + { + return null; + } + + return new CollectionInfo(strs[0], (CollectionType)Enum.Parse(typeof(CollectionType), strs[1]), + strs.Length > 2 ? strs[2] : string.Empty); + } + + public override string ToString() + { + return Name + _separator + CollectionType + _separator + Description; + } + + public bool Equals(CollectionInfo? other) + { + return Name == other?.Name; + } + + public override bool Equals(object? obj) + { + return Equals(obj as CollectionInfo); + } + + public override int GetHashCode() + { + return Name.GetHashCode(); + } +} diff --git a/ProjectCar/ProjectCar/CollectionGenericObjects/ICollectionGenericObjects.cs b/ProjectCar/ProjectCar/CollectionGenericObjects/ICollectionGenericObjects.cs index 5aeb486..72b4572 100644 --- a/ProjectCar/ProjectCar/CollectionGenericObjects/ICollectionGenericObjects.cs +++ b/ProjectCar/ProjectCar/CollectionGenericObjects/ICollectionGenericObjects.cs @@ -1,11 +1,11 @@ -using ProjectGasMachine.CollectionGenericObjects; +using ProjectGasMachine.Drawnings; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -namespace ProjectGasMachine; +namespace ProjectGasMachine.CollectionGenericObjects; /// /// Интерфейс описания действий для набора хранимых объектов @@ -28,16 +28,18 @@ public interface ICollectionGenericObjects /// Добавление объекта в коллекцию /// /// Добавляемый объект + /// Сравнение двух объектов /// true - вставка прошла удачно, false - вставка не удалась - int Insert(T obj); + int Insert(T obj, IEqualityComparer? comparer = null); /// /// Добавление объекта в коллекцию на конкретную позицию /// /// Добавляемый объект /// Позиция + /// Сравнение двух объектов /// true - вставка прошла удачно, false - вставка не удалась - int Insert(T obj, int position); + int Insert(T obj, int position, IEqualityComparer? comparer = null); /// /// Удаление объекта из коллекции с конкретной позиции @@ -63,4 +65,10 @@ public interface ICollectionGenericObjects /// /// Поэлементый вывод элементов коллекции IEnumerable GetItems(); + + /// + /// Сортировка коллекции + /// + /// Сравнитель объектов + void CollectionSort(IComparer comparer); } diff --git a/ProjectCar/ProjectCar/CollectionGenericObjects/ListGenericObjects.cs b/ProjectCar/ProjectCar/CollectionGenericObjects/ListGenericObjects.cs index ec822ac..7a5bcc0 100644 --- a/ProjectCar/ProjectCar/CollectionGenericObjects/ListGenericObjects.cs +++ b/ProjectCar/ProjectCar/CollectionGenericObjects/ListGenericObjects.cs @@ -1,5 +1,7 @@  +using ProjectGasMachine.Drawnings; using ProjectGasMachine.Exceptions; +using System.Linq; namespace ProjectGasMachine.CollectionGenericObjects; @@ -46,9 +48,16 @@ public class ListGenericObjects : ICollectionGenericObjects return _collection[position]; } - public int Insert(T obj) + public int Insert(T obj, IEqualityComparer? comparer = null) { // TODO выброс ошибки, если переполнение + if (comparer != null) + { + if (_collection.Contains(obj, comparer)) + { + throw new ObjectAlreadyInCollectionException(); + } + } if (Count == _maxCount) { throw new CollectionOverflowException(Count); @@ -58,10 +67,17 @@ public class ListGenericObjects : ICollectionGenericObjects return _collection.Count; } - public int Insert(T obj, int position) + public int Insert(T obj, int position, IEqualityComparer? comparer = null) { // TODO выброс ошибки, если выход за границы списка // TODO выброс ошибки, если переполнение + if (comparer != null) + { + if (_collection.Contains(obj, comparer)) + { + throw new ObjectAlreadyInCollectionException(); + } + } if (position < 0 || position > Count) { throw new PositionOutOfCollectionException(position); @@ -96,4 +112,9 @@ public class ListGenericObjects : ICollectionGenericObjects yield return _collection[i]; } } + + public void CollectionSort(IComparer comparer) + { + _collection.Sort(comparer); + } } diff --git a/ProjectCar/ProjectCar/CollectionGenericObjects/MassiveGenericObjects.cs b/ProjectCar/ProjectCar/CollectionGenericObjects/MassiveGenericObjects.cs index 04bf4a1..1d7281a 100644 --- a/ProjectCar/ProjectCar/CollectionGenericObjects/MassiveGenericObjects.cs +++ b/ProjectCar/ProjectCar/CollectionGenericObjects/MassiveGenericObjects.cs @@ -1,4 +1,4 @@ - +using ProjectGasMachine.Drawnings; using ProjectGasMachine.Exceptions; using System.Linq; @@ -69,9 +69,21 @@ public class MassiveGenericObjects : ICollectionGenericObjects } - public int Insert(T obj) + public int Insert(T obj, IEqualityComparer? comparer = null) { // TODO выброс ошибки, если переполнение + if (comparer != null) + { + foreach (T? item in _collection) + { + if ((comparer as IEqualityComparer).Equals(obj as DrawningMachine, item as DrawningMachine)) + { + throw new ObjectAlreadyInCollectionException(); + } + } + } + + for (int i = 0; i < Count; i++) { if (_collection[i] == null) @@ -84,10 +96,21 @@ public class MassiveGenericObjects : ICollectionGenericObjects throw new CollectionOverflowException(Count); } - public int Insert(T obj, int position) + public int Insert(T obj, int position, IEqualityComparer? comparer = null) { // TODO выброс ошибки, если выход за границы массива // TODO выброс ошибки, если переполнение + if (comparer != null) + { + foreach (T? item in _collection) + { + if ((comparer as IEqualityComparer).Equals(obj as DrawningMachine, item as DrawningMachine)) + { + throw new ObjectAlreadyInCollectionException(); + } + } + } + if (position < 0 || position >= Count) { throw new PositionOutOfCollectionException(position); @@ -146,4 +169,9 @@ public class MassiveGenericObjects : ICollectionGenericObjects yield return _collection[i]; } } + + public void CollectionSort(IComparer comparer) + { + Array.Sort(_collection, comparer); + } } diff --git a/ProjectCar/ProjectCar/CollectionGenericObjects/StorageCollection.cs b/ProjectCar/ProjectCar/CollectionGenericObjects/StorageCollection.cs index 8c1bbc4..9f9c30c 100644 --- a/ProjectCar/ProjectCar/CollectionGenericObjects/StorageCollection.cs +++ b/ProjectCar/ProjectCar/CollectionGenericObjects/StorageCollection.cs @@ -13,12 +13,12 @@ public class StorageCollection /// /// словарь (хранилище) с коллекциями /// - private Dictionary> _storages; + private Dictionary> _storages; /// /// Возвращение списка названий коллекций /// - public List Keys => _storages.Keys.ToList(); + public List Keys => _storages.Keys.ToList(); /// /// Ключевое слово, с которого должен начинаться файл @@ -38,7 +38,7 @@ public class StorageCollection /// public StorageCollection() { - _storages = new Dictionary>(); + _storages = new Dictionary>(); } /// @@ -46,21 +46,21 @@ public class StorageCollection /// /// название коллекции /// тип коллекции - public void AddCollection(string name, CollectionType collectionType) + public void AddCollection(CollectionInfo info) { - if (name == null || _storages.ContainsKey(name)) + if (info == null || _storages.ContainsKey(info)) { return; } - if (collectionType == CollectionType.Massive) + if (info.CollectionType == CollectionType.Massive) { - _storages.Add(name, new MassiveGenericObjects()); + _storages.Add(info, new MassiveGenericObjects()); } - if (collectionType == CollectionType.List) + if (info.CollectionType == CollectionType.List) { - _storages.Add(name, new ListGenericObjects()); + _storages.Add(info, new ListGenericObjects()); } } @@ -68,14 +68,14 @@ public class StorageCollection /// Удаление коллекции /// /// - public void DelCollection(string name) + public void DelCollection(CollectionInfo info) { - if (name == null || !_storages.ContainsKey(name)) + if (info == null || !_storages.ContainsKey(info)) { return; } - _storages.Remove(name); + _storages.Remove(info); } /// @@ -83,13 +83,13 @@ public class StorageCollection /// /// Название коллекции /// - public ICollectionGenericObjects? this[string name] + public ICollectionGenericObjects? this[CollectionInfo info] { get { - if (_storages.ContainsKey(name)) + if (_storages.ContainsKey(info)) { - return _storages[name]; + return _storages[info]; } return null; @@ -117,7 +117,7 @@ public class StorageCollection { sw.Write(_collectionKey); - foreach (KeyValuePair> value in _storages) + foreach (KeyValuePair> value in _storages) { sw.Write(Environment.NewLine); // не сохраняем пустые коллекции @@ -128,8 +128,6 @@ public class StorageCollection sw.Write(value.Key); sw.Write(_separatorForKeyValue); - sw.Write(value.Value.GetCollectionType); - sw.Write(_separatorForKeyValue); sw.Write(value.Value.MaxCount); sw.Write(_separatorForKeyValue); @@ -178,27 +176,25 @@ public class StorageCollection while ((line = sr.ReadLine()) != null) { string[] record = line.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries); - if (record.Length != 4) + if (record.Length != 3) { continue; } - CollectionType collectionType = (CollectionType)Enum.Parse(typeof(CollectionType), record[1]); - ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionType); - if (collection == null) - { - throw new InvalidOperationException("Не удалось создать коллекцию"); - } + CollectionInfo? collectionInfo = CollectionInfo.GetCollectionInfo(record[0]) ?? + throw new Exception("Не удалось определить информацию коллекции: " + record[0]); + ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionInfo.CollectionType) ?? + throw new Exception("Не удалось создать коллекцию"); + collection.MaxCount = Convert.ToInt32(record[1]); - collection.MaxCount = Convert.ToInt32(record[2]); - string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries); + string[] set = record[2].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries); foreach (string elem in set) { if (elem?.CreateDrawningMachine() is T machine) { try { - if (collection.Insert(machine) == -1) + if (collection.Insert(machine, new DrawningMachineEqutables()) == -1) { throw new InvalidOperationException("Объект не удалось добавить в коллекцию: " + record[3]); } @@ -207,9 +203,13 @@ public class StorageCollection { throw new OverflowException("Коллекция переполнена", ex); } + catch (ObjectAlreadyInCollectionException ex) + { + throw new InvalidOperationException("Объект уже присутствует в коллекции", ex); + } } } - _storages.Add(record[0], collection); + _storages.Add(collectionInfo, collection); } } } diff --git a/ProjectCar/ProjectCar/Drawnings/DrawningMachineCompareByColor.cs b/ProjectCar/ProjectCar/Drawnings/DrawningMachineCompareByColor.cs new file mode 100644 index 0000000..9e00061 --- /dev/null +++ b/ProjectCar/ProjectCar/Drawnings/DrawningMachineCompareByColor.cs @@ -0,0 +1,48 @@ +using ProjectGasMachine.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectGasMachine.Drawnings; + +/// +/// Сравнение по цвету, скорости, весу +/// + +public class DrawningMachineCompareByColor : IComparer +{ + public int Compare(DrawningMachine? x, DrawningMachine? y) + { + if (x == null || x.EntityGas == null) + { + return 1; + } + if (y == null || y.EntityGas == null) + { + return -1; + } + var bodyColorCompare = y.EntityGas.BodyColor.Name.CompareTo(x.EntityGas.BodyColor.Name); + if (bodyColorCompare != 0) + { + return bodyColorCompare; + } + if (x is DrawningGasMachine && y is DrawningGasMachine) + { + var additionalColorCompare = (y.EntityGas as EntityMachine).AdditionalColor.Name.CompareTo( + (x.EntityGas as EntityMachine).AdditionalColor.Name); + if (additionalColorCompare != 0) + { + return additionalColorCompare; + } + } + var speedCompare = y.EntityGas.Speed.CompareTo(x.EntityGas.Speed); + if (speedCompare != 0) + { + return speedCompare; + } + return y.EntityGas.Weight.CompareTo(x.EntityGas.Weight); + + } +} diff --git a/ProjectCar/ProjectCar/Drawnings/DrawningMachineCompareByType.cs b/ProjectCar/ProjectCar/Drawnings/DrawningMachineCompareByType.cs new file mode 100644 index 0000000..e6d6b81 --- /dev/null +++ b/ProjectCar/ProjectCar/Drawnings/DrawningMachineCompareByType.cs @@ -0,0 +1,36 @@ +using ProjectGasMachine.Drawnings; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectGasMachine.CollectionGenericObjects; + +/// +/// Сравнение по типу, скорости, весу +/// +public class DrawningMachineCompareByType : IComparer +{ + public int Compare(DrawningMachine? x, DrawningMachine? y) + { + if (x == null || x.EntityGas == null) + { + return 1; + } + if (y == null || y.EntityGas == null) + { + return -1; + } + if (x.GetType().Name != y.GetType().Name) + { + return y.GetType().Name.CompareTo(x.GetType().Name); + } + var speedCompare = y.EntityGas.Speed.CompareTo(x.EntityGas.Speed); + if (speedCompare != 0) + { + return speedCompare; + } + return y.EntityGas.Weight.CompareTo(x.EntityGas.Weight); + } +} diff --git a/ProjectCar/ProjectCar/Drawnings/DrawningMachineEqutables.cs b/ProjectCar/ProjectCar/Drawnings/DrawningMachineEqutables.cs new file mode 100644 index 0000000..ca4514f --- /dev/null +++ b/ProjectCar/ProjectCar/Drawnings/DrawningMachineEqutables.cs @@ -0,0 +1,68 @@ +using ProjectGasMachine.Entities; +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectGasMachine.Drawnings; + +/// +/// Реализация сравнения двух объектов класса-прорисовки +/// +public class DrawningMachineEqutables : IEqualityComparer +{ + public bool Equals(DrawningMachine? x, DrawningMachine? y) + { + if (x == null || x.EntityGas == null) + { + return false; + } + if (y == null || y.EntityGas == null) + { + return false; + } + if (x.GetType().Name != y.GetType().Name) + { + return false; + } + if (x.EntityGas.Speed != y.EntityGas.Speed) + { + return false; + } + if (x.EntityGas.Weight != y.EntityGas.Weight) + { + return false; + } + if (x.EntityGas.BodyColor != y.EntityGas.BodyColor) + { + return false; + } + if (x is DrawningGasMachine && y is DrawningGasMachine) + { + // TODO доделать логику сравнения дополнительных параметров + if ((x.EntityGas as EntityMachine)?.AdditionalColor != + (y.EntityGas as EntityMachine)?.AdditionalColor) + { + return false; + } + if ((x.EntityGas as EntityMachine)?.Gas != + (y.EntityGas as EntityMachine)?.Gas) + { + return false; + } + if ((x.EntityGas as EntityMachine)?.Beacon != + (y.EntityGas as EntityMachine)?.Beacon) + { + return false; + } + } + return true; + } + + public int GetHashCode([DisallowNull] DrawningMachine? obj) + { + return obj.GetHashCode(); + } +} diff --git a/ProjectCar/ProjectCar/Exceptions/ObjectAlreadyInCollectionException.cs b/ProjectCar/ProjectCar/Exceptions/ObjectAlreadyInCollectionException.cs new file mode 100644 index 0000000..5c73f8d --- /dev/null +++ b/ProjectCar/ProjectCar/Exceptions/ObjectAlreadyInCollectionException.cs @@ -0,0 +1,20 @@ +using System.Runtime.Serialization; + +namespace ProjectGasMachine.Exceptions; + +/// +/// Класс, описывающий ошибку переполнения коллекции +/// +[Serializable] +public class ObjectAlreadyInCollectionException : ApplicationException +{ + public ObjectAlreadyInCollectionException(int count) : base("Такой объект уже присутствует в коллекции. Позиция " + count) { } + + public ObjectAlreadyInCollectionException() : base() { } + + public ObjectAlreadyInCollectionException(string message) : base(message) { } + + public ObjectAlreadyInCollectionException(string message, Exception exception) : base(message, exception) { } + + protected ObjectAlreadyInCollectionException(SerializationInfo info, StreamingContext contex) : base(info, contex) { } +} \ No newline at end of file diff --git a/ProjectCar/ProjectCar/FormGasMachineCollection.Designer.cs b/ProjectCar/ProjectCar/FormGasMachineCollection.Designer.cs index b27ca9e..b0e5711 100644 --- a/ProjectCar/ProjectCar/FormGasMachineCollection.Designer.cs +++ b/ProjectCar/ProjectCar/FormGasMachineCollection.Designer.cs @@ -52,6 +52,8 @@ loadToolStripMenuItem = new ToolStripMenuItem(); saveFileDialog = new SaveFileDialog(); openFileDialog = new OpenFileDialog(); + ButtonSortByColor = new Button(); + ButtonSortByType = new Button(); groupBoxTools.SuspendLayout(); panelCompanyTools.SuspendLayout(); panelStorage.SuspendLayout(); @@ -68,13 +70,15 @@ groupBoxTools.Dock = DockStyle.Right; groupBoxTools.Location = new Point(780, 24); groupBoxTools.Name = "groupBoxTools"; - groupBoxTools.Size = new Size(196, 534); + groupBoxTools.Size = new Size(196, 557); groupBoxTools.TabIndex = 0; groupBoxTools.TabStop = false; groupBoxTools.Text = "Инструменты"; // // panelCompanyTools // + panelCompanyTools.Controls.Add(ButtonSortByColor); + panelCompanyTools.Controls.Add(ButtonSortByType); panelCompanyTools.Controls.Add(buttonAddMachine); panelCompanyTools.Controls.Add(maskedTextBoxPosition); panelCompanyTools.Controls.Add(buttonRefresh); @@ -82,9 +86,9 @@ panelCompanyTools.Controls.Add(buttonGoToCheck); panelCompanyTools.Dock = DockStyle.Bottom; panelCompanyTools.Enabled = false; - panelCompanyTools.Location = new Point(3, 338); + panelCompanyTools.Location = new Point(3, 292); panelCompanyTools.Name = "panelCompanyTools"; - panelCompanyTools.Size = new Size(190, 193); + panelCompanyTools.Size = new Size(190, 262); panelCompanyTools.TabIndex = 9; // // buttonAddMachine @@ -110,7 +114,7 @@ // buttonRefresh // buttonRefresh.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - buttonRefresh.Location = new Point(10, 152); + buttonRefresh.Location = new Point(10, 144); buttonRefresh.Name = "buttonRefresh"; buttonRefresh.Size = new Size(174, 32); buttonRefresh.TabIndex = 7; @@ -142,7 +146,7 @@ // // buttonCreateCompany // - buttonCreateCompany.Location = new Point(6, 294); + buttonCreateCompany.Location = new Point(6, 263); buttonCreateCompany.Name = "buttonCreateCompany"; buttonCreateCompany.Size = new Size(184, 23); buttonCreateCompany.TabIndex = 7; @@ -162,12 +166,12 @@ panelStorage.Dock = DockStyle.Top; panelStorage.Location = new Point(3, 19); panelStorage.Name = "panelStorage"; - panelStorage.Size = new Size(190, 239); + panelStorage.Size = new Size(190, 209); panelStorage.TabIndex = 8; // // buttonCollectionDel // - buttonCollectionDel.Location = new Point(3, 206); + buttonCollectionDel.Location = new Point(3, 176); buttonCollectionDel.Name = "buttonCollectionDel"; buttonCollectionDel.Size = new Size(184, 23); buttonCollectionDel.TabIndex = 6; @@ -181,7 +185,7 @@ listBoxCollection.ItemHeight = 15; listBoxCollection.Location = new Point(3, 106); listBoxCollection.Name = "listBoxCollection"; - listBoxCollection.Size = new Size(184, 94); + listBoxCollection.Size = new Size(184, 64); listBoxCollection.TabIndex = 5; // // buttonCollectionAdd @@ -238,7 +242,7 @@ comboBoxSelectorCompany.DropDownStyle = ComboBoxStyle.DropDownList; comboBoxSelectorCompany.FormattingEnabled = true; comboBoxSelectorCompany.Items.AddRange(new object[] { "Хранилище" }); - comboBoxSelectorCompany.Location = new Point(6, 265); + comboBoxSelectorCompany.Location = new Point(6, 234); comboBoxSelectorCompany.Name = "comboBoxSelectorCompany"; comboBoxSelectorCompany.Size = new Size(184, 23); comboBoxSelectorCompany.TabIndex = 0; @@ -249,7 +253,7 @@ pictureBox.Dock = DockStyle.Fill; pictureBox.Location = new Point(0, 24); pictureBox.Name = "pictureBox"; - pictureBox.Size = new Size(780, 534); + pictureBox.Size = new Size(780, 557); pictureBox.TabIndex = 3; pictureBox.TabStop = false; // @@ -293,11 +297,33 @@ // openFileDialog.Filter = "txt file | *.txt"; // + // ButtonSortByColor + // + ButtonSortByColor.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + ButtonSortByColor.Location = new Point(10, 217); + ButtonSortByColor.Name = "ButtonSortByColor"; + ButtonSortByColor.Size = new Size(174, 32); + ButtonSortByColor.TabIndex = 9; + ButtonSortByColor.Text = "Сортировка по цвету"; + ButtonSortByColor.UseVisualStyleBackColor = true; + ButtonSortByColor.Click += ButtonSortByColor_Click; + // + // ButtonSortByType + // + ButtonSortByType.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; + ButtonSortByType.Location = new Point(10, 182); + ButtonSortByType.Name = "ButtonSortByType"; + ButtonSortByType.Size = new Size(174, 29); + ButtonSortByType.TabIndex = 8; + ButtonSortByType.Text = "Сортировка по типу"; + ButtonSortByType.UseVisualStyleBackColor = true; + ButtonSortByType.Click += ButtonSortByType_Click; + // // FormGasMachineCollection // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(976, 558); + ClientSize = new Size(976, 581); Controls.Add(pictureBox); Controls.Add(groupBoxTools); Controls.Add(menuStrip); @@ -342,5 +368,7 @@ private ToolStripMenuItem loadToolStripMenuItem; private SaveFileDialog saveFileDialog; private OpenFileDialog openFileDialog; + private Button ButtonSortByColor; + private Button ButtonSortByType; } } \ No newline at end of file diff --git a/ProjectCar/ProjectCar/FormGasMachineCollection.cs b/ProjectCar/ProjectCar/FormGasMachineCollection.cs index f1fcd82..59d7916 100644 --- a/ProjectCar/ProjectCar/FormGasMachineCollection.cs +++ b/ProjectCar/ProjectCar/FormGasMachineCollection.cs @@ -51,18 +51,22 @@ namespace ProjectGasMachine /// private void SetMachine(DrawningMachine? machine) { - try + if (_company == null || machine == null) + { + return; + } + try { - if (_company == null || machine == null) - { - return; - } if (_company + machine != -1) { MessageBox.Show("Объект добавлен"); _logger.LogInformation($"Добавлен объект {machine.GetDataForSave()}"); pictureBox.Image = _company.Show(); } + else + { + MessageBox.Show("Не удалось добавить объект"); + } } catch (CollectionOverflowException ex) @@ -70,6 +74,11 @@ namespace ProjectGasMachine MessageBox.Show(ex.Message); _logger.LogWarning($"Ошибка: {ex.Message}"); } + catch (ArgumentException ex) + { + MessageBox.Show(ex.Message); + _logger.LogWarning($"Ошибка: {ex.Message}"); + } } @@ -203,8 +212,9 @@ namespace ProjectGasMachine { collectionType = CollectionType.List; } + CollectionInfo collectionInfo = new CollectionInfo(textBoxCollectionName.Text, collectionType, string.Empty); - _storageCollection.AddCollection(textBoxCollectionName.Text, collectionType); + _storageCollection.AddCollection(collectionInfo); _logger.LogInformation($"Добавлена коллекция: {textBoxCollectionName.Text} типа: {collectionType}"); RerfreshListBoxItems(); } @@ -226,7 +236,9 @@ namespace ProjectGasMachine { return; } - _storageCollection.DelCollection(listBoxCollection.SelectedItem.ToString()); + CollectionInfo collectionInfo = new CollectionInfo(listBoxCollection.SelectedItem.ToString(), CollectionType.None, string.Empty); + + _storageCollection.DelCollection(collectionInfo); _logger.LogInformation($"Удалена коллекция: {listBoxCollection.SelectedItem.ToString()}"); RerfreshListBoxItems(); } @@ -239,7 +251,7 @@ namespace ProjectGasMachine listBoxCollection.Items.Clear(); for (int i = 0; i < _storageCollection.Keys?.Count; ++i) { - string? colName = _storageCollection.Keys?[i]; + string? colName = _storageCollection.Keys?[i].Name; if (!string.IsNullOrEmpty(colName)) { listBoxCollection.Items.Add(colName); @@ -260,7 +272,8 @@ namespace ProjectGasMachine return; } - ICollectionGenericObjects? collection = _storageCollection[listBoxCollection.SelectedItem.ToString() ?? string.Empty]; + CollectionInfo collectionInfo = new CollectionInfo(listBoxCollection.SelectedItem.ToString(), CollectionType.None, string.Empty); + ICollectionGenericObjects? collection = _storageCollection[collectionInfo]; if (collection == null) { MessageBox.Show("Коллекция не проинициализирована"); @@ -323,5 +336,39 @@ namespace ProjectGasMachine } } } + + /// + /// Сортировка по типу + /// + /// + /// + private void ButtonSortByType_Click(object sender, EventArgs e) + { + CompareMachines(new DrawningMachineCompareByType()); + } + + /// + /// Сортировка по цвету + /// + /// + /// + private void ButtonSortByColor_Click(object sender, EventArgs e) + { + CompareMachines(new DrawningMachineCompareByColor()); + } + + /// + /// Сортировка по сравнителю + /// + /// Сравнитель объектов + private void CompareMachines(IComparer comparer) + { + if (_company == null) + { + return; + } + _company.Sort(comparer); + pictureBox.Image = _company.Show(); + } } } diff --git a/ProjectCar/ProjectCar/FormGasMachineCollection.resx b/ProjectCar/ProjectCar/FormGasMachineCollection.resx index e8f33d6..ca20953 100644 --- a/ProjectCar/ProjectCar/FormGasMachineCollection.resx +++ b/ProjectCar/ProjectCar/FormGasMachineCollection.resx @@ -127,6 +127,6 @@ 261, 17 - 60 + 25 \ No newline at end of file diff --git a/ProjectCar/ProjectCar/serilogConfig.json b/ProjectCar/ProjectCar/serilogConfig.json index 4e8d9cb..fff6dcd 100644 --- a/ProjectCar/ProjectCar/serilogConfig.json +++ b/ProjectCar/ProjectCar/serilogConfig.json @@ -15,7 +15,7 @@ { "Name": "File", "Args": { - "path": "D:\\12121212121212\\log.txt", + "path": "C:\\Пользователи\\artem\\OneDrive\\Рабочий стол\\уник\\ООП\\log.txt", "rollingInterval": "Day", "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.ffff} | {Level:u} | {SourceContext} | {Message:1j}{NewLine}{Exception}" } diff --git a/log20240506.txt b/log20240506.txt deleted file mode 100644 index a36af2d..0000000 --- a/log20240506.txt +++ /dev/null @@ -1,115 +0,0 @@ -2024-05-06 13:50:38.0960 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: wdfsd типа: Massive -2024-05-06 13:50:45.0712 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:52:46.9056 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: asdasd типа: Massive -2024-05-06 13:52:53.2026 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityGas:100:100:White -2024-05-06 13:53:05.3830 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:Yellow:Black:True:True -2024-05-06 13:53:08.7522 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:11.2964 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityGas:100:100:White -2024-05-06 13:53:14.4637 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:17.1079 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:19.7608 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:22.5222 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:25.3510 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:28.0964 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:30.5042 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:33.2906 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityGas:100:100:White -2024-05-06 13:53:35.6313 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:38.0709 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:40.3740 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:42.4957 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:53:44.7109 | WARNING | ProjectGasMachine.FormGasMachineCollection | Ошибка: В коллекции превышено допустимое количество: 16 -2024-05-06 13:53:53.7278 | WARNING | ProjectGasMachine.FormGasMachineCollection | Ошибка: В коллекции превышено допустимое количество: 16 -2024-05-06 13:54:35.9225 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: asdasd типа: Massive -2024-05-06 13:54:44.3352 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:10.2488 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: sdfds типа: Massive -2024-05-06 13:55:16.2229 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:27.1682 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: sdfsd типа: Massive -2024-05-06 13:55:31.4106 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:39.1043 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:40.9155 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:43.1087 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:45.4250 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:48.4582 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:50.7252 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:52.9109 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:55.2532 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:55:59.0320 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:02.1593 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityGas:100:100:White -2024-05-06 13:56:04.2869 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:06.5567 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:09.8771 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:12.4443 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:14.9596 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:17.6805 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:20.5141 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:23.1449 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:45.5929 | ERROR | ProjectGasMachine.FormGasMachineCollection | Ошибка: Заполнены не все данные для добавления коллекции -2024-05-06 13:56:46.5025 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: sad типа: Massive -2024-05-06 13:56:53.2586 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:55.7631 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:56:57.8691 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:01.2188 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:04.0249 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:06.6292 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:09.2126 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:11.7062 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:13.7471 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:15.6920 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:17.8150 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:19.8565 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityGas:100:100:White -2024-05-06 13:57:22.1338 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:24.0477 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:26.0287 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:28.3811 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:30.3505 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:32.5450 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:34.8838 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:38.7496 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:47.5191 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: sdfsd типа: Massive -2024-05-06 13:57:52.4258 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:57:55.4085 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityGas:100:100:White -2024-05-06 13:57:57.5999 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:00.1042 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:02.1610 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:04.0693 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:05.8936 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:07.9004 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:09.9071 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:12.3657 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:14.5239 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:16.3365 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:18.1844 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:20.6436 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:22.4090 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:24.4849 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:26.1952 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:28.1021 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:58:31.1549 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 13:59:55.1832 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: sadf типа: Massive -2024-05-06 14:00:02.6252 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:00:05.2891 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:03:43.6959 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: sdfsd типа: Massive -2024-05-06 14:04:19.8215 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: sdf типа: Massive -2024-05-06 14:05:01.4798 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: asdas типа: Massive -2024-05-06 14:05:36.6718 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлена коллекция: asds типа: Massive -2024-05-06 14:05:41.8552 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityGas:100:100:White -2024-05-06 14:05:44.5970 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:05:47.1913 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:05:49.3825 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:05:51.5111 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:05:54.0639 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:05:56.4355 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:05:58.7069 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:01.5593 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:03.5395 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:05.3429 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:07.8284 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:10.7956 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:12.8900 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:14.7068 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:16.9257 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:19.7250 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:22.3775 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Добавлен объект EntityMachine:100:100:White:Black:False:False -2024-05-06 14:06:26.5022 | WARNING | ProjectGasMachine.FormGasMachineCollection | Ошибка: В коллекции превышено допустимое количество: 18 -2024-05-06 14:06:35.2824 | INFORMATION | ProjectGasMachine.FormGasMachineCollection | Удален объект по позиции 6 -2024-05-06 14:06:43.4500 | ERROR | ProjectGasMachine.FormGasMachineCollection | Ошибка: Не найден объект по позиции 6