diff --git a/AirBomber/AirBomber/AirBomber.csproj b/AirBomber/AirBomber/AirBomber.csproj
index e65c673..22896a3 100644
--- a/AirBomber/AirBomber/AirBomber.csproj
+++ b/AirBomber/AirBomber/AirBomber.csproj
@@ -9,9 +9,13 @@
+
+
+
+
diff --git a/AirBomber/AirBomber/AppSettings.json b/AirBomber/AirBomber/AppSettings.json
new file mode 100644
index 0000000..a604a73
--- /dev/null
+++ b/AirBomber/AirBomber/AppSettings.json
@@ -0,0 +1,20 @@
+{
+ "Serilog": {
+ "Using": [ "Serilog.Sinks.File" ],
+ "MinimumLevel": "Information",
+ "WriteTo": [
+ {
+ "Name": "File",
+ "Args": {
+ "path": "Logs/log_.log",
+ "rollingInterval": "Day",
+ "outputTemplate": "[{Timestamp:HH:mm:ss.fff}]{Level:u4}: {Message:lj}{NewLine}{Exception}"
+ }
+ }
+ ],
+ "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
+ "Properties": {
+ "Application": "AirBomber"
+ }
+ }
+}
\ No newline at end of file
diff --git a/AirBomber/AirBomber/FormPlaneCollection.cs b/AirBomber/AirBomber/FormPlaneCollection.cs
index fdbe73a..177fe0d 100644
--- a/AirBomber/AirBomber/FormPlaneCollection.cs
+++ b/AirBomber/AirBomber/FormPlaneCollection.cs
@@ -81,16 +81,17 @@ namespace AirBomber
{
return;
}
- if (obj + plane > -1)
+ try
{
+ _ = obj + plane;
MessageBox.Show("Объект добавлен");
_logger.Information("Объект добавлен");
pictureBoxCollection.Image = obj.ShowPlanes();
}
- else
+ catch (Exception ex)
{
- MessageBox.Show("Не удалось добавить объект");
- _logger.Warning("Не удалось добавить объект");
+ MessageBox.Show(ex.Message);
+ _logger.Warning($"Объект не добавлен в набор {listBoxStorages.SelectedItem.ToString()}");
}
}
///
@@ -113,9 +114,10 @@ namespace AirBomber
{
return;
}
- int pos = Convert.ToInt32(maskedTextBoxNumber.Text);
try
{
+
+ int pos = Convert.ToInt32(maskedTextBoxNumber.Text);
if (obj - pos != null)
{
MessageBox.Show("Объект удален");
@@ -132,6 +134,11 @@ namespace AirBomber
{
MessageBox.Show(ex.Message);
}
+ catch(Exception ex)
+ {
+ MessageBox.Show("Неверный ввод");
+ _logger.Warning("Неверный ввод");
+ }
}
///
/// Обновление рисунка по набору
diff --git a/AirBomber/AirBomber/PlanesGenericCollection.cs b/AirBomber/AirBomber/PlanesGenericCollection.cs
index 80f7989..5c38d3c 100644
--- a/AirBomber/AirBomber/PlanesGenericCollection.cs
+++ b/AirBomber/AirBomber/PlanesGenericCollection.cs
@@ -49,13 +49,13 @@ namespace AirBomber
///
///
///
- public static int operator +(PlanesGenericCollection collect, T? obj)
+ public static bool operator +(PlanesGenericCollection collect, T obj)
{
if (obj == null)
{
- return -1;
+ return false;
}
- return collect?._collection.Insert(obj) ?? -1;
+ return collect._collection.Insert(obj);
}
///
/// Перегрузка оператора вычитания
@@ -63,15 +63,15 @@ namespace AirBomber
///
///
///
- public static bool operator -(PlanesGenericCollection collect, int pos)
+ public static T? operator -(PlanesGenericCollection collect, int
+ pos)
{
T? obj = collect._collection[pos];
if (obj != null)
{
collect._collection.Remove(pos);
- return true;
}
- return false;
+ return obj;
}
///
/// Получение объекта IMoveableObject
diff --git a/AirBomber/AirBomber/PlanesGenericStorage.cs b/AirBomber/AirBomber/PlanesGenericStorage.cs
index de74006..f519685 100644
--- a/AirBomber/AirBomber/PlanesGenericStorage.cs
+++ b/AirBomber/AirBomber/PlanesGenericStorage.cs
@@ -1,4 +1,5 @@
-using System;
+using AirBomber.Exceptions;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -168,9 +169,20 @@ namespace AirBomber
DrawningAirPlane? plane = elem?.CreateDrawningAirPlane(_separatorForObject, _pictureWidth, _pictureHeight);
if (plane != null)
{
- if ((collection + plane) == -1)
+ if (!(collection + plane))
{
- throw new Exception("Ошибка добавления в коллекцию");
+ try
+ {
+ _ = collection + plane;
+ }
+ catch (PlaneNotFoundException e)
+ {
+ throw e;
+ }
+ catch (StorageOverflowException e)
+ {
+ throw e;
+ }
}
}
}
diff --git a/AirBomber/AirBomber/Program.cs b/AirBomber/AirBomber/Program.cs
index d3007a7..dcdd25a 100644
--- a/AirBomber/AirBomber/Program.cs
+++ b/AirBomber/AirBomber/Program.cs
@@ -1,7 +1,6 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
-using NLog.Extensions.Logging;
using Serilog;
namespace AirBomber
@@ -25,5 +24,22 @@ namespace AirBomber
}
//Application.Run(new FormPlaneCollection());
}
+ private static void ConfigureServices(ServiceCollection services)
+ {
+ services.AddSingleton().AddLogging(option =>
+ {
+ string[] path = Directory.GetCurrentDirectory().Split('\\');
+ string pathNeed = "";
+ for (int i = 0; i < path.Length - 3; i++)
+ {
+ pathNeed += path[i] + "\\";
+ }
+ var configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile(path: $"{pathNeed}AppSettings.json", optional: false, reloadOnChange: true).Build();
+ var logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger();
+
+ option.SetMinimumLevel(LogLevel.Information);
+ option.AddSerilog(logger);
+ });
+ }
}
}
\ No newline at end of file
diff --git a/AirBomber/AirBomber/SetGeneric.cs b/AirBomber/AirBomber/SetGeneric.cs
index 636bc27..f736d9e 100644
--- a/AirBomber/AirBomber/SetGeneric.cs
+++ b/AirBomber/AirBomber/SetGeneric.cs
@@ -36,9 +36,8 @@ namespace AirBomber
///
/// Добавляемый самолет
///
- public int Insert(T plane)
+ public bool Insert(T plane)
{
- //was TODO
return Insert(plane, 0);
}
///
@@ -47,19 +46,15 @@ namespace AirBomber
/// Добавляемый самолет
/// Позиция
///
- public int Insert(T plane, int position)
+ public bool Insert(T plane, int position)
{
- // TODO проверка позиции DONE
- // TODO проверка, что элемент массива по этой позиции пустой,если нет, то
- // проверка, что после вставляемого элемента в массиве есть пустой элемент
- // сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
- // TODO вставка по позиции
if (position < 0 || position >= _maxCount)
- {
+ throw new StorageOverflowException("Impossible to insert");
+
+ if (Count >= _maxCount)
throw new StorageOverflowException(_maxCount);
- }
- _places.Insert(position, plane);
- return position;
+ _places.Insert(0, plane);
+ return true;
}
///
/// Удаление объекта из набора с конкретной позиции
@@ -68,13 +63,11 @@ namespace AirBomber
///
public bool Remove(int position)
{
- // TODO проверка позиции DONE
- // TODO удаление объекта из массива, присвоив элементу массива значение null
- if (!(position >= 0 && position < Count) || _places[position] == null)
- {
+ if (position >= Count || position < 0)
+ throw new PlaneNotFoundException("Invalid operation");
+ if (_places[position] == null)
throw new PlaneNotFoundException(position);
- }
- _places[position] = null;
+ _places.RemoveAt(position);
return true;
}
///
@@ -95,11 +88,14 @@ namespace AirBomber
}
set
{
- // TODO проверка позиции DONE
- // TODO проверка свободных мест в списке DONE
- // TODO вставка в список по позиции DONE
- if (position < 0 || position >= Count || Count == _maxCount) return;
- _places.Insert(position, value);
+ try
+ {
+ Insert(value, position);
+ }
+ catch
+ {
+ return;
+ }
}
}
///