diff --git a/AirFighter/AirFighter/CollectionGenericObjects/CollectionInfo.cs b/AirFighter/AirFighter/CollectionGenericObjects/CollectionInfo.cs
index 6ed31db..eb35195 100644
--- a/AirFighter/AirFighter/CollectionGenericObjects/CollectionInfo.cs
+++ b/AirFighter/AirFighter/CollectionGenericObjects/CollectionInfo.cs
@@ -1,8 +1,7 @@
-namespace ProjectAirFighter.CollectionGenericObjects;
+using ProjectAirFighter.CollectionGenericObjects;
+
+namespace AirFighter;
-///
-/// Класс, хранящиий информацию по коллекции
-///
public class CollectionInfo : IEquatable
{
///
@@ -31,7 +30,8 @@ public class CollectionInfo : IEquatable
/// Название
/// Тип
/// Описание
- public CollectionInfo(string name, CollectionType collectionType, string description)
+ public CollectionInfo(string name, CollectionType collectionType, string
+ description)
{
Name = name;
CollectionType = collectionType;
@@ -45,13 +45,15 @@ public class CollectionInfo : IEquatable
/// Объект или null
public static CollectionInfo? GetCollectionInfo(string data)
{
- string[] strs = data.Split(_separator, StringSplitOptions.RemoveEmptyEntries);
+ 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);
+ return new CollectionInfo(strs[0],
+ (CollectionType)Enum.Parse(typeof(CollectionType), strs[1]), strs.Length > 2 ? strs[2] : string.Empty);
}
public override string ToString()
@@ -69,6 +71,12 @@ public class CollectionInfo : IEquatable
return Equals(obj as CollectionInfo);
}
+ public bool IsEmpty()
+ {
+ if (string.IsNullOrEmpty(Name) && CollectionType != CollectionType.None) return true;
+ return false;
+ }
+
public override int GetHashCode()
{
return Name.GetHashCode();
diff --git a/AirFighter/AirFighter/CollectionGenericObjects/MassiveGenericObjects.cs b/AirFighter/AirFighter/CollectionGenericObjects/MassiveGenericObjects.cs
index ba309ef..7e1c8a5 100644
--- a/AirFighter/AirFighter/CollectionGenericObjects/MassiveGenericObjects.cs
+++ b/AirFighter/AirFighter/CollectionGenericObjects/MassiveGenericObjects.cs
@@ -1,4 +1,5 @@
-using ProjectAirFighter.Exceptions;
+using AirFighter;
+using ProjectAirFighter.Exceptions;
namespace ProjectAirFighter.CollectionGenericObjects;
diff --git a/AirFighter/AirFighter/CollectionGenericObjects/StorageCollection.cs b/AirFighter/AirFighter/CollectionGenericObjects/StorageCollection.cs
index 2e13ac2..65d8560 100644
--- a/AirFighter/AirFighter/CollectionGenericObjects/StorageCollection.cs
+++ b/AirFighter/AirFighter/CollectionGenericObjects/StorageCollection.cs
@@ -1,5 +1,8 @@
-using ProjectAirFighter.Drawnings;
+using AirFighter;
+using Microsoft.AspNetCore.Http;
+using ProjectAirFighter.Drawnings;
using ProjectAirFighter.Exceptions;
+using System.Collections.Generic;
using System.Text;
namespace ProjectAirFighter.CollectionGenericObjects;
@@ -46,16 +49,15 @@ public class StorageCollection
///
/// Добавление коллекции в хранилище
///
- /// Название коллекции
- /// тип коллекции
- public void AddCollection(string name, CollectionType collectionType)
+ /// тип коллекции
+ public void AddCollection(CollectionInfo collectionInfo)
{
- if (name == null || _storages.ContainsKey(name)) { return; }
+ if (_storages.ContainsKey(collectionInfo)) throw new CollectionAlreadyExistsException(collectionInfo);
switch (collectionType)
{
case CollectionType.None:
- return;
+ throw new CollectionTypeException("Пустой тип коллекции");
case CollectionType.Massive:
_storages[name] = new MassiveGenericObjects();
return;
@@ -69,10 +71,10 @@ public class StorageCollection
/// Удаление коллекции
///
/// Название коллекции
- public void DelCollection(string name)
+ public void DelCollection(CollectionInfo collectionInfo)
{
- if (_storages.ContainsKey(name))
- _storages.Remove(name);
+ if (_storages.ContainsKey(collectionInfo))
+ _storages.Remove(collectionInfo);
}
///
@@ -80,12 +82,13 @@ public class StorageCollection
///
/// Название коллекции
///
- public ICollectionGenericObjects? this[string name]
+ public ICollectionGenericObjects? this[CollectionInfo collectionInfo]
{
get
{
- if (name == null || !_storages.ContainsKey(name)) { return null; }
- return _storages[name];
+ if(_storages.ContainsKey(collectionInfo))
+ return _storages[collectionInfo];
+ return null;
}
}
@@ -152,7 +155,7 @@ public class StorageCollection
{
if (!File.Exists(filename))
{
- throw new FileNotFoundException("Файл не существует");
+ throw new FileNotFoundException(filename);
}
using (StreamReader fs = File.OpenText(filename))
{
@@ -165,7 +168,7 @@ public class StorageCollection
if (!str.StartsWith(_collectionKey))
{
- throw new FormatException("В файле неверные данные");
+ throw new FormatException(filename);
}
_storages.Clear();
@@ -196,14 +199,11 @@ public class StorageCollection
{
try
{
- if (collection.Insert(militaryAircraft) == -1)
- {
- throw new InvalidOperationException("Объект не удалось добавить в коллекцию: " + record[3]);
- }
+ collection.Insert(militaryAircraft);
}
- catch (CollectionOverflowException ex)
+ catch (Exception ex)
{
- throw new CollectionOverflowException("Коллекция переполнена", ex);
+ throw new FileFormatException(filename, ex);
}
}
}
diff --git a/AirFighter/AirFighter/Exceptions/CollectionInfoException.cs b/AirFighter/AirFighter/Exceptions/CollectionInfoException.cs
index f50a7af..3d0c490 100644
--- a/AirFighter/AirFighter/Exceptions/CollectionInfoException.cs
+++ b/AirFighter/AirFighter/Exceptions/CollectionInfoException.cs
@@ -1,4 +1,6 @@
-namespace AirFighter;
+using System.Runtime.Serialization;
+
+namespace AirFighter;
public class CollectionInfoException : Exception
{
diff --git a/AirFighter/AirFighter/Exceptions/CollectionInsertException.cs b/AirFighter/AirFighter/Exceptions/CollectionInsertException.cs
index 4214c43..460ba22 100644
--- a/AirFighter/AirFighter/Exceptions/CollectionInsertException.cs
+++ b/AirFighter/AirFighter/Exceptions/CollectionInsertException.cs
@@ -1,4 +1,5 @@
-namespace AirFighter;
+using System.Runtime.Serialization;
+namespace AirFighter;
public class CollectionInsertException : Exception
{
diff --git a/AirFighter/AirFighter/Exceptions/DrawningEquitablesException.cs b/AirFighter/AirFighter/Exceptions/DrawningEquitablesException.cs
new file mode 100644
index 0000000..325a2ca
--- /dev/null
+++ b/AirFighter/AirFighter/Exceptions/DrawningEquitablesException.cs
@@ -0,0 +1,14 @@
+using System.Runtime.Serialization;
+
+namespace AirFighter;
+
+public class DrawningEquitablesException : Exception
+{
+ public DrawningEquitablesException() : base("Объекты прорисовки одинаковые") { }
+ public DrawningEquitablesException(string message) : base(message) { }
+ public DrawningEquitablesException(string message, Exception exception) :
+ base(message, exception)
+ { }
+ protected DrawningEquitablesException(SerializationInfo info, StreamingContext
+ contex) : base(info, contex) { }
+}
\ No newline at end of file
diff --git a/AirFighter/AirFighter/Exceptions/EmptyFileExeption.cs b/AirFighter/AirFighter/Exceptions/EmptyFileExeption.cs
new file mode 100644
index 0000000..a48974a
--- /dev/null
+++ b/AirFighter/AirFighter/Exceptions/EmptyFileExeption.cs
@@ -0,0 +1,15 @@
+using System.Runtime.Serialization;
+
+namespace AirFighter;
+
+public class EmptyFileExeption : Exception
+{
+ public EmptyFileExeption(string name) : base($"Файл {name} пустой ") { }
+ public EmptyFileExeption() : base("В хранилище отсутствуют коллекции для сохранения") { }
+ public EmptyFileExeption(string name, string message) : base(message) { }
+ public EmptyFileExeption(string name, string message, Exception exception) :
+ base(message, exception)
+ { }
+ protected EmptyFileExeption(SerializationInfo info, StreamingContext
+ contex) : base(info, contex) { }
+}
\ No newline at end of file
diff --git a/AirFighter/AirFighter/Exceptions/FileFormatException.cs b/AirFighter/AirFighter/Exceptions/FileFormatException.cs
new file mode 100644
index 0000000..528ff6a
--- /dev/null
+++ b/AirFighter/AirFighter/Exceptions/FileFormatException.cs
@@ -0,0 +1,14 @@
+using System.Runtime.Serialization;
+
+namespace AirFighter;
+
+public class FileFormatException : Exception
+{
+ public FileFormatException() : base() { }
+ public FileFormatException(string message) : base(message) { }
+ public FileFormatException(string name, Exception exception) :
+ base($"Файл {name} имеет неверный формат. Ошибка: {exception.Message}", exception)
+ { }
+ protected FileFormatException(SerializationInfo info, StreamingContext
+ contex) : base(info, contex) { }
+}
\ No newline at end of file
diff --git a/AirFighter/AirFighter/Exceptions/FileNotFoundException.cs b/AirFighter/AirFighter/Exceptions/FileNotFoundException.cs
new file mode 100644
index 0000000..153cfea
--- /dev/null
+++ b/AirFighter/AirFighter/Exceptions/FileNotFoundException.cs
@@ -0,0 +1,15 @@
+using System.Runtime.Serialization;
+
+namespace AirFighter;
+
+public class FileNotFoundException : Exception
+{
+ public FileNotFoundException(string name) : base($"Файл {name} не существует ") { }
+ public FileNotFoundException() : base() { }
+ public FileNotFoundException(string name, string message) : base(message) { }
+ public FileNotFoundException(string name, string message, Exception exception) :
+ base(message, exception)
+ { }
+ protected FileNotFoundException(SerializationInfo info, StreamingContext
+ contex) : base(info, contex) { }
+}
\ No newline at end of file
diff --git a/AirFighter/AirFighter/serilogConfig.json b/AirFighter/AirFighter/serilogConfig.json
index d97e26c..4ca9b41 100644
--- a/AirFighter/AirFighter/serilogConfig.json
+++ b/AirFighter/AirFighter/serilogConfig.json
@@ -14,7 +14,7 @@
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"Properties": {
- "Application": "Stormtrooper"
+ "Application": "AirFighter"
}
}
}