diff --git a/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/AbstractCompany.cs b/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/AbstractCompany.cs
index cbe395f..993c59b 100644
--- a/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/AbstractCompany.cs
+++ b/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/AbstractCompany.cs
@@ -41,8 +41,8 @@ public abstract class AbstractCompany
///
/// Вычисление максимального количества элементов, который можно разместить в окне
///
- private int GetMaxCount => _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight);
-
+ //private int GetMaxCount => _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight);
+ private int GetMaxCount => 36;
///
/// Конструктор
///
@@ -98,8 +98,12 @@ public abstract class AbstractCompany
SetObjectsPosition();
for (int i = 0; i < (_collection?.Count ?? 0); ++i)
{
- DrawningBus? obj = _collection?.Get(i);
- obj?.DrawTransport(graphics);
+ try
+ {
+ DrawningBus? obj = _collection?.Get(i);
+ obj?.DrawTransport(graphics);
+ }
+ catch (Exception) { }
}
return bitmap;
}
diff --git a/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/BusSharingService.cs b/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/BusSharingService.cs
index ee8fbc4..4ec65e5 100644
--- a/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/BusSharingService.cs
+++ b/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/BusSharingService.cs
@@ -9,19 +9,19 @@ namespace ProjectAirbus.CollectionGenericObjects;
public class BusSharingService : AbstractCompany
{
- public BusSharingService(int picWidth, int picHeight, ICollectionGenericObjects collection) : base(picWidth, picHeight, collection)
+ public BusSharingService(int picWidth, int picHeight, ICollectionGenericObjects collection) : base(picWidth, picHeight, collection)
{
}
-
+
protected override void DrawBackgound(Graphics g)
{
int width = _pictureWidth / _placeSizeWidth;
int height = _pictureHeight / _placeSizeHeight;
Pen pen = new(Color.Black, 2);
- for (int i = 0; i < width; i++)
+ for (int i = 0; i < width; i++)
{
- for (int j = 0; j < height + 1; j++)
+ for (int j = 0; j < height + 1; j++)
{
//if (j + 1 > height)
@@ -36,23 +36,24 @@ public class BusSharingService : AbstractCompany
int width = _pictureWidth / _placeSizeWidth;
int height = _pictureHeight / _placeSizeHeight;
- int BusWidth = width - 1;
- int BusHeight = height - 1;
+ int BusWidth = 0;
+ int BusHeight = 0;
for (int i = 0; i < (_collection?.Count ?? 0); i++)
{
- if (_collection?.Get(i) != null)
+ try
{
_collection.Get(i)?.SetPictureSize(_pictureWidth, _pictureHeight);
_collection.Get(i)?.SetPosition(_placeSizeWidth * BusWidth + 20, BusHeight * _placeSizeHeight + 20);
}
+ catch (Exception) { }
- if (BusWidth > 0)
- BusWidth--;
+ if (BusWidth < width - 1)
+ BusWidth++;
else
{
- BusWidth = width - 1;
- BusHeight--;
+ BusWidth = 0;
+ BusHeight++;
}
if (BusHeight > height)
{
diff --git a/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/MassiveGenericObjects.cs b/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/MassiveGenericObjects.cs
index 2e2c84e..8d7723d 100644
--- a/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/MassiveGenericObjects.cs
+++ b/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/MassiveGenericObjects.cs
@@ -56,6 +56,10 @@ public class MassiveGenericObjects : ICollectionGenericObjects
{
throw new PositionOutOfCollectionException(position);
}
+ if (_collection[position] == null)
+ {
+ throw new ObjectNotFoundException(position);
+ }
return _collection[position];
}
diff --git a/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/StorageCollection.cs b/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/StorageCollection.cs
index 9857c27..de4c901 100644
--- a/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/StorageCollection.cs
+++ b/ProjectAirbus/ProjectAirbus/CollectionGenericObjects/StorageCollection.cs
@@ -99,6 +99,7 @@ public class StorageCollection
/// true - сохранение прошло успешно, false - ошибка при сохранении данных
public void SaveData(string filename)
{
+
if (_storages.Count == 0)
{
throw new Exception("В хранилище отсутствуют коллекции для сохранения");
@@ -150,63 +151,67 @@ public class StorageCollection
{
throw new Exception("Файл не существует");
}
- using (StreamReader fs = File.OpenText(filename))
+ using StreamReader rd = new StreamReader(filename);
+
+
+ UTF8Encoding temp = new(true);
+ string str = rd.ReadLine();
+
+ if (str == null)
{
- string str = fs.ReadLine();
- if (str == null || str.Length == 0)
+ throw new Exception("В файле нет данных");
+ }
+ if (!str.StartsWith(_collectionKey))
+ {
+ throw new Exception("В файле неверные данные");
+ }
+
+ _storages.Clear();
+ string strs = "";
+ while ((strs = rd.ReadLine()) != null)
+ {
+ string[] record = strs.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries);
+ if (record.Length != 4)
{
- throw new Exception("В файле нет данных");
+ continue;
}
- if (!str.StartsWith(_collectionKey))
+ CollectionType collectionType = (CollectionType)Enum.Parse(typeof(CollectionType), record[1]);
+ ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionType);
+ if (collection == null)
{
- throw new Exception("В файле неверные данные");
+ throw new Exception("Не удалось создать коллекции");
}
- _storages.Clear();
- string strs = "";
- while ((strs = fs.ReadLine()) != null)
+ collection.MaxCount = Convert.ToInt32(record[2]);
+ string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries);
+ foreach (string elem in set)
{
- string[] record = strs.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries);
- if (record.Length != 4)
+ if (elem?.CreateDrawningBus() is T bus)
{
- continue;
- }
- CollectionType collectionType = (CollectionType)Enum.Parse(typeof(CollectionType), record[1]);
- ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionType);
- if (collection == null)
- {
- throw new Exception("Не удалось определить тип коллекции:" + record[1]);
- }
- collection.MaxCount = Convert.ToInt32(record[2]);
- string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries);
- foreach (string elem in set)
- {
- if (elem?.CreateDrawningBus() is T bus)
+ try
{
- try
+ if (collection.Insert(bus) < 0)
{
- if (collection.Insert(bus) == -1)
- {
- throw new Exception("Объект не удалось добавить в коллекцию: " + record[3]);
- }
- }
- catch (CollectionOverflowException ex)
- {
- throw new Exception("Коллекция переполнена", ex);
+ throw new Exception("Объект не удалось добавить в коллекцию: " + record[3]);
}
}
+ catch (CollectionOverflowException ex)
+ {
+ throw new Exception("Коллекция переполнена", ex);
+ }
+
}
- _storages.Add(record[0], collection);
}
+ _storages.Add(record[0], collection);
}
}
- ///
- /// Создание коллекции по типу
- ///
- ///
- ///
- private static ICollectionGenericObjects?
- CreateCollection(CollectionType collectionType)
+ ///
+ /// Создание коллекции по типу
+ ///
+ ///
+ ///
+ private static ICollectionGenericObjects?
+CreateCollection(CollectionType collectionType)
{
return collectionType switch
{
diff --git a/ProjectAirbus/ProjectAirbus/FormBusCollection.cs b/ProjectAirbus/ProjectAirbus/FormBusCollection.cs
index b4b37fa..48801c8 100644
--- a/ProjectAirbus/ProjectAirbus/FormBusCollection.cs
+++ b/ProjectAirbus/ProjectAirbus/FormBusCollection.cs
@@ -38,6 +38,7 @@ namespace ProjectAirbus
InitializeComponent();
_storageCollection = new();
_logger = logger;
+ _logger.LogInformation("Форма загрузилась");
}
private void ComboBoxSelectorCompany_SelectedIndexChanged(object sender, EventArgs e)
@@ -54,18 +55,24 @@ namespace ProjectAirbus
private void SetBus(DrawningBus? bus)
{
- if (_company == null || bus == null)
+ try
{
- return;
+ if (_company == null || bus == null)
+ {
+ return;
+ }
+ if (_company + bus >= 0)
+ {
+ MessageBox.Show("Объект добавлен");
+ pictureBox.Image = _company.Show();
+ _logger.LogInformation("Объект добавлен");
+ }
}
- if (_company + bus >= 0)
- {
- MessageBox.Show("Объект добавлен");
- pictureBox.Image = _company.Show();
- }
- else
+ catch (Exception ex)
{
MessageBox.Show("Не удалось добавить объект");
+ _logger.LogWarning($"Ошибка: {ex.Message}");
+
}
}
///
@@ -85,14 +92,19 @@ namespace ProjectAirbus
return;
}
int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
- if (_company - pos != null)
+ try
{
- MessageBox.Show("Объект удален");
- pictureBox.Image = _company.Show();
+ if (_company - pos != null)
+ {
+ MessageBox.Show("Объект удален");
+ pictureBox.Image = _company.Show();
+ _logger.LogInformation("Объект удален");
+ }
}
- else
+ catch (Exception ex)
{
MessageBox.Show("Не удалось удалить объект");
+ _logger.LogError("Ошибка: {Message}", ex.Message);
}
}
@@ -165,6 +177,7 @@ namespace ProjectAirbus
collectionType = CollectionType.List;
}
_storageCollection.AddCollection(textBoxCollectionName.Text, collectionType);
+ _logger.LogInformation("Коллекция добавлена " + textBoxCollectionName.Text);
RerfreshListBoxItems();
}
@@ -206,6 +219,7 @@ namespace ProjectAirbus
return;
}
_storageCollection.DelCollection(listBoxCollection.SelectedItem.ToString());
+ _logger.LogInformation("Коллекция с название: " + listBoxCollection.SelectedItem.ToString() + " удалена");
RerfreshListBoxItems();
}
diff --git a/ProjectAirbus/ProjectAirbus/nlog.config b/ProjectAirbus/ProjectAirbus/nlog.config
index 2c84659..bca0f39 100644
--- a/ProjectAirbus/ProjectAirbus/nlog.config
+++ b/ProjectAirbus/ProjectAirbus/nlog.config
@@ -5,7 +5,7 @@
autoReload="true" internalLogLevel="Info">
-
+