diff --git a/.gitignore b/.gitignore
index 57940fd..8b7a5b9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -75,5 +75,4 @@ fabric.properties
.idea/httpRequests
# Android studio 3.1+ serialized cache file
-.idea/caches/build_file_checksums.ser
-
+.idea/caches/build_file_checksums.ser
\ No newline at end of file
diff --git a/.idea/WarshipHard.iml b/.idea/WarshipHard.iml
index 353864a..f091c4f 100644
--- a/.idea/WarshipHard.iml
+++ b/.idea/WarshipHard.iml
@@ -8,5 +8,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Errors.log b/Errors.log
new file mode 100644
index 0000000..562d7c2
--- /dev/null
+++ b/Errors.log
@@ -0,0 +1,11 @@
+[WARN ] Хранилище переполнено: Превышено допустимое количество в хранилище: 104 (12.12.2022)
+[WARN ] Хранилище переполнено: Превышено допустимое количество в хранилище: 104 (12.12.2022)
+[WARN ] Не удалось удалить объект на позиции104 (12.12.2022)
+[FATAL] Неизвестная ошибка: Index 103 out of bounds for length 103 (12.12.2022)
+[ERROR] Хранилище переполнено: Превышено допустимое количество в хранилище: 117 (14.12.2022)
+[ERROR] Хранилище переполнено: Превышено допустимое количество в хранилище: 117 (14.12.2022)
+[WARN ] При добавлении карты не все данные были заполнены (14.12.2022)
+[FATAL] Неизвестная ошибка: Index 116 out of bounds for length 116 (14.12.2022)
+[ERROR] Хранилище переполнено: Превышено допустимое количество в хранилище: 117 (14.12.2022)
+[ERROR] Хранилище переполнено: Превышено допустимое количество в хранилище: 117 (14.12.2022)
+[FATAL] Неизвестная ошибка: Index 116 out of bounds for length 116 (14.12.2022)
diff --git a/Infos.log b/Infos.log
new file mode 100644
index 0000000..d50f3b4
--- /dev/null
+++ b/Infos.log
@@ -0,0 +1,78 @@
+[INFO ] Переход на карту fsdfws (12.12.2022)
+[INFO ] Добавлена карта: fsdfws (12.12.2022)
+[INFO ] Переход на карту fsdfws (12.12.2022)
+[INFO ] Загрузка карты из файла: C:\Users\Анюта\OneDrive\Документы\MapWithFullStorage (12.12.2022)
+[INFO ] Переход на карту dsafwsdf (12.12.2022)
+[INFO ] Переход на карту dsafwsdf (12.12.2022)
+[INFO ] Объект на позиции32удален (12.12.2022)
+[INFO ] Новый объект добавлен (12.12.2022)
+[INFO ] Сохранение карты в файл: C:\Users\Анюта\OneDrive\Документы\MapWithFullStorage (12.12.2022)
+[INFO ] Переход на карту frrfwe (12.12.2022)
+[INFO ] Добавлена карта: frrfwe (12.12.2022)
+[INFO ] Переход на карту frrfwe (12.12.2022)
+[INFO ] Добавлена карта: frrfwe (12.12.2022)
+[INFO ] Переход на карту e2rew (12.12.2022)
+[INFO ] Добавлена карта: e2rew (12.12.2022)
+[INFO ] Новый объект добавлен (12.12.2022)
+[INFO ] Переход на карту e2rew (12.12.2022)
+[INFO ] Загрузка карты из файла: C:\Users\Анюта\OneDrive\Документы\MapWithFullStorage (12.12.2022)
+[INFO ] Переход на карту dsafwsdf (12.12.2022)
+[INFO ] Переход на карту dsafwsdf (12.12.2022)
+[INFO ] Объект на позиции103удален (12.12.2022)
+[INFO ] Переход на карту dsafwsdf (14.12.2022)
+[INFO ] Загрузка карты из файла: C:\Users\Анюта\OneDrive\Документы\MapWithFullStorage.txt (14.12.2022)
+[INFO ] Переход на карту 3e32r3 (14.12.2022)
+[INFO ] Добавлена карта: 3e32r3 (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Переход на карту ewefg (14.12.2022)
+[INFO ] Добавлена карта: ewefg (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Переход на карту wwrr (14.12.2022)
+[INFO ] Добавлена карта: wwrr (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Переход на карту rwwa (14.12.2022)
+[INFO ] Добавлена карта: rwwa (14.12.2022)
+[INFO ] Переход на карту rwwa (14.12.2022)
+[INFO ] Загрузка карты из файла: C:\Users\Анюта\OneDrive\Документы\MapWithFullStorage.txt (14.12.2022)
+[INFO ] Переход на карту dsafwsdf (14.12.2022)
+[INFO ] Переход на карту dsafwsdf (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Переход на карту dsafwsdf (14.12.2022)
+[INFO ] Загрузка карты из файла: C:\Users\Анюта\OneDrive\Документы\MapWithFullStorage.txt (14.12.2022)
+[INFO ] Переход на карту dsafwsdf (14.12.2022)
+[INFO ] Загрузка карты из файла: C:\Users\Анюта\OneDrive\Документы\MapWithFullStorage.txt (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Новый объект добавлен (14.12.2022)
+[INFO ] Сохранение карты в файл: C:\Users\Анюта\OneDrive\Документы\MapWithFullStorage.txt (14.12.2022)
+[INFO ] Переход на карту ewrfwef (14.12.2022)
+[INFO ] Добавлена карта: ewrfwef (14.12.2022)
+[INFO ] Переход на карту dsafwsdf (14.12.2022)
+[INFO ] Переход на карту dsafwsdf (14.12.2022)
+[INFO ] Объект на позиции116удален (14.12.2022)
+[INFO ] Переход на карту dsafwsdf (14.12.2022)
+[INFO ] Загрузка карты из файла: C:\Users\Анюта\OneDrive\Документы\MapWithFullStorage.txt (14.12.2022)
+[INFO ] Объект на позиции116удален (14.12.2022)
diff --git a/src/FileDataFormatException.java b/src/FileDataFormatException.java
new file mode 100644
index 0000000..7add04a
--- /dev/null
+++ b/src/FileDataFormatException.java
@@ -0,0 +1,15 @@
+import java.io.IOException;
+
+public class FileDataFormatException extends IOException {
+ public FileDataFormatException(){
+ }
+ public FileDataFormatException(String message){
+ super(message);
+ }
+ public FileDataFormatException(String message,Throwable exception){
+ super(message,exception);
+ }
+ protected FileDataFormatException(Throwable exception){
+ super(exception);
+ }
+}
diff --git a/src/FormMapWithSetWarships.form b/src/FormMapWithSetWarships.form
index 0904dc6..8b807c9 100644
--- a/src/FormMapWithSetWarships.form
+++ b/src/FormMapWithSetWarships.form
@@ -11,14 +11,18 @@
-
+
+
+
-
+
+
+
diff --git a/src/FormMapWithSetWarships.java b/src/FormMapWithSetWarships.java
index f0cfbca..ee495de 100644
--- a/src/FormMapWithSetWarships.java
+++ b/src/FormMapWithSetWarships.java
@@ -7,6 +7,7 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Optional;
+import org.apache.logging.log4j.Logger;
public class FormMapWithSetWarships extends JFrame{
@@ -38,12 +39,18 @@ public class FormMapWithSetWarships extends JFrame{
put("Вторая карта",new SecondMap());
}
};
+ private Logger logger;
+
+ public FormMapWithSetWarships(Logger logger){
+ this();
+ this.logger=logger;
+ }
public FormMapWithSetWarships(){
setTitle("Военный корабль");
setContentPane(MainPanel);
setResizable(false);
- setSize(1000,685);
+ setSize(1150,690);
ShowWindow();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
@@ -94,13 +101,12 @@ public class FormMapWithSetWarships extends JFrame{
dialog.showSaveDialog(this);
try {
- if (_mapsCollection.SaveData(dialog.getSelectedFile().getAbsolutePath())) {
- JOptionPane.showMessageDialog(this, "Сохранение прошло успешно", "Итог", JOptionPane.INFORMATION_MESSAGE);
- } else {
- JOptionPane.showMessageDialog(this, "Не сохранилось", "Итог", JOptionPane.ERROR_MESSAGE);
- }
- } catch (IOException ex) {
- ex.printStackTrace();
+ _mapsCollection.SaveData(dialog.getSelectedFile().getAbsolutePath());
+ logger.info("Сохранение всех карт в файл: "+dialog.getSelectedFile().getAbsolutePath());
+ JOptionPane.showMessageDialog(this, "Сохранение всех карт прошло успешно", "Итог", JOptionPane.INFORMATION_MESSAGE);
+ } catch (Exception ex) {
+ logger.error("Ошибка сохранения всех карт в файл: "+ex.getMessage());
+ JOptionPane.showMessageDialog(this, "Ошибка сохранения всех карт: "+ex.getMessage(), "Итог", JOptionPane.ERROR_MESSAGE);
}
});
fileMenu.add(SaveMenuItem);
@@ -112,14 +118,13 @@ public class FormMapWithSetWarships extends JFrame{
dialog.showOpenDialog(this);
try {
- if (_mapsCollection.LoadData(dialog.getSelectedFile().getAbsolutePath())) {
- ReloadMaps();
- JOptionPane.showMessageDialog(this, "Загрузка прошла успешно", "Итог", JOptionPane.INFORMATION_MESSAGE);
- } else {
- JOptionPane.showMessageDialog(this, "Не загрузилось", "Итог", JOptionPane.ERROR_MESSAGE);
- }
- } catch (IOException ex) {
- ex.printStackTrace();
+ _mapsCollection.LoadData(dialog.getSelectedFile().getAbsolutePath());
+ ReloadMaps();
+ logger.info("Загрузка всех карт из файла: "+dialog.getSelectedFile().getAbsolutePath());
+ JOptionPane.showMessageDialog(this, "Загрузка всех карт прошла успешно", "Итог", JOptionPane.INFORMATION_MESSAGE);
+ } catch (Exception ex) {
+ logger.error("Ошибка загрузки всех карт из файла: "+ex.getMessage());
+ JOptionPane.showMessageDialog(this, "Ошибка загрузки всех карт"+ex.getMessage(), "Итог", JOptionPane.ERROR_MESSAGE);
}
});
fileMenu.add(LoadMenuItem);
@@ -131,13 +136,12 @@ public class FormMapWithSetWarships extends JFrame{
dialog.showSaveDialog(this);
try {
- if (_mapsCollection.SaveMap((String) Optional.ofNullable(ListBoxMaps.getSelectedValue()).orElse(""), dialog.getSelectedFile().getAbsolutePath())) {
- JOptionPane.showMessageDialog(this, "Сохранение прошло успешно", "Итог", JOptionPane.INFORMATION_MESSAGE);
- } else {
- JOptionPane.showMessageDialog(this, "Не сохранилось", "Итог", JOptionPane.ERROR_MESSAGE);
- }
- } catch (IOException ex) {
- ex.printStackTrace();
+ _mapsCollection.SaveMap((String) Optional.ofNullable(ListBoxMaps.getSelectedValue()).orElse(""), dialog.getSelectedFile().getAbsolutePath());
+ logger.info("Сохранение карты в файл: "+dialog.getSelectedFile().getAbsolutePath());
+ JOptionPane.showMessageDialog(this, "Сохранение карты прошло успешно", "Итог", JOptionPane.INFORMATION_MESSAGE);
+ } catch (Exception ex) {
+ logger.error("Ошибка сохранения карты в файл: "+ex.getMessage());
+ JOptionPane.showMessageDialog(this, "Ошибка сохранения карты: "+ex.getMessage(), "Итог", JOptionPane.ERROR_MESSAGE);
}
});
fileMenu.add(SaveMapMenuItem);
@@ -149,14 +153,13 @@ public class FormMapWithSetWarships extends JFrame{
dialog.showOpenDialog(this);
try {
- if (_mapsCollection.LoadMap(dialog.getSelectedFile().getAbsolutePath())) {
- ReloadMaps();
- JOptionPane.showMessageDialog(this, "Загрузка прошла успешно", "Итог", JOptionPane.INFORMATION_MESSAGE);
- } else {
- JOptionPane.showMessageDialog(this, "Не загрузилось", "Итог", JOptionPane.ERROR_MESSAGE);
- }
- } catch (IOException ex) {
- ex.printStackTrace();
+ _mapsCollection.LoadMap(dialog.getSelectedFile().getAbsolutePath());
+ ReloadMaps();
+ logger.info("Загрузка карты из файла: "+dialog.getSelectedFile().getAbsolutePath());
+ JOptionPane.showMessageDialog(this, "Загрузка карты прошла успешно", "Итог", JOptionPane.INFORMATION_MESSAGE);
+ } catch (Exception ex) {
+ logger.error("Ошибка загрузки карты из файла: "+ex.getMessage());
+ JOptionPane.showMessageDialog(this, "Ошибка загрузки карты"+ex.getMessage(), "Итог", JOptionPane.ERROR_MESSAGE);
}
});
fileMenu.add(LoadMapMenuItem);
@@ -168,6 +171,7 @@ public class FormMapWithSetWarships extends JFrame{
return;
bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
repaint();
+ logger.info("Переход на карту "+ListBoxMaps.getSelectedValue());
});
DeleteMapButton.addActionListener(e -> {
@@ -179,6 +183,7 @@ public class FormMapWithSetWarships extends JFrame{
"Удаление",JOptionPane.YES_NO_OPTION)==0)
{
_mapsCollection.DelMap(ListBoxMaps.getSelectedValue().toString());
+ logger.info("Карта "+ListBoxMaps.getSelectedValue()+" удалена");
ReloadMaps();
}
});
@@ -186,16 +191,19 @@ public class FormMapWithSetWarships extends JFrame{
CreateMapButton.addActionListener(e -> {
if (СomboBoxSelectorMap.getSelectedIndex() == -1 || TextFieldMap.getText()==null || TextFieldMap.getText().equals(""))
{
+ logger.warn("При добавлении карты не все данные были заполнены");
JOptionPane.showMessageDialog(this,"Не все данные заполнены","Ошибка",JOptionPane.ERROR_MESSAGE);
return;
}
if (!_mapsDict.containsKey(СomboBoxSelectorMap.getSelectedItem()))
{
+ logger.warn("Карты не существует");
JOptionPane.showMessageDialog(this,"Нет такой карты","Ошибка",JOptionPane.ERROR_MESSAGE);
return;
}
_mapsCollection.AddMap(TextFieldMap.getText(), _mapsDict.get(СomboBoxSelectorMap.getSelectedItem().toString()));
ReloadMaps();
+ logger.info("Добавлена карта: "+TextFieldMap.getText());
});
ButtonShowOnMap.addActionListener(e -> {
@@ -224,14 +232,24 @@ public class FormMapWithSetWarships extends JFrame{
FormWarshipConfig dialog=new FormWarshipConfig();
dialog.addListener(obj -> {
if (obj!=null) {
- DrawingObjectWarship warship = new DrawingObjectWarship(obj);
+ try {
+ DrawingObjectWarship warship = new DrawingObjectWarship(obj);
- if (_mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).plus(warship)>=0) {
- JOptionPane.showMessageDialog(this, "Объект добавлен", "Успех", JOptionPane.INFORMATION_MESSAGE);
- bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
- repaint();
- } else {
- JOptionPane.showMessageDialog(this, "Не удалось добавить объект", "Ошибка",JOptionPane.INFORMATION_MESSAGE);
+ if (_mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).plus(warship) >= 0) {
+ JOptionPane.showMessageDialog(this, "Объект добавлен", "Успех", JOptionPane.INFORMATION_MESSAGE);
+ bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
+ repaint();
+ logger.info("Новый объект добавлен");
+ } else {
+ logger.warn("Не удалось добавить объект");
+ JOptionPane.showMessageDialog(this, "Не удалось добавить объект", "Ошибка", JOptionPane.ERROR_MESSAGE);
+ }
+ }catch (StorageOverflowException ex){
+ logger.error("Хранилище переполнено: "+ex.getMessage());
+ JOptionPane.showMessageDialog(this, "Ошибка. Хранилище переполнено: "+ex.getMessage(), "Ошибка", JOptionPane.ERROR_MESSAGE);
+ }catch (Exception ex){
+ logger.fatal("Неизвестная ошибка: "+ex.getMessage());
+ JOptionPane.showMessageDialog(this, "Неизвестная ошибка: "+ex.getMessage(), "Ошибка", JOptionPane.ERROR_MESSAGE);
}
}
});
@@ -252,14 +270,23 @@ public class FormMapWithSetWarships extends JFrame{
if (result!=0)
return;
int pos = Integer.parseInt(txt);
- if(_mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).minus(pos)!=null){
- JOptionPane.showMessageDialog(this, "Объект удален", "Успех", JOptionPane.INFORMATION_MESSAGE);
- bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
- repaint();
- }
- else
- {
- JOptionPane.showMessageDialog(this,"Не удалось удалить объект","Ошибка",JOptionPane.INFORMATION_MESSAGE);
+
+ try {
+ if (_mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).minus(pos) != null) {
+ JOptionPane.showMessageDialog(this, "Объект удален", "Успех", JOptionPane.INFORMATION_MESSAGE);
+ bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
+ repaint();
+ logger.info("Объект на позиции"+pos+"удален");
+ } else {
+ logger.warn("Не удалось удалить объект на позиции"+pos);
+ JOptionPane.showMessageDialog(this, "Не удалось удалить объект", "Ошибка", JOptionPane.ERROR_MESSAGE);
+ }
+ } catch(WarshipNotFoundException ex){
+ logger.error("Ошибка удаления: "+ex.getMessage());
+ JOptionPane.showMessageDialog(this, "Ошибка удаления: "+ex.getMessage(), "Ошибка", JOptionPane.ERROR_MESSAGE);
+ }catch (Exception ex){
+ logger.fatal("Неизвестная ошибка: "+ex.getMessage());
+ JOptionPane.showMessageDialog(this, "Неизвестная ошибка: "+ex.getMessage(), "Ошибка", JOptionPane.ERROR_MESSAGE);
}
});
diff --git a/src/Main.java b/src/Main.java
index 6546bf6..2c8d4a1 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -1,5 +1,7 @@
+import org.apache.logging.log4j.*;
+
public class Main {
public static void main(String[] args) {
- new FormMapWithSetWarships();
+ new FormMapWithSetWarships(LogManager.getLogger(Main.class));
}
}
\ No newline at end of file
diff --git a/src/MapsCollection.java b/src/MapsCollection.java
index b8e1783..3cbb6b5 100644
--- a/src/MapsCollection.java
+++ b/src/MapsCollection.java
@@ -50,7 +50,7 @@ public class MapsCollection {
}
@SuppressWarnings("ResultOfMethodCallIgnored")
- public boolean SaveData(String filename) throws IOException {
+ public void SaveData(String filename) throws IOException {
File file = new File(filename);
@@ -66,21 +66,20 @@ public class MapsCollection {
writer.println(String.format("%s%c%s", storage.getKey(), separatorDict, storage.getValue().GetData(separatorDict, separatorData)));
}
}
- return true;
}
- public boolean LoadData(String filename) throws IOException {
+ public void LoadData(String filename) throws IOException {
File file = new File(filename);
if (!file.exists())
- return false;
+ throw new FileNotFoundException("Файл не найден");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String currentLine = reader.readLine();
if (currentLine == null || !currentLine.contains("MapsCollection"))
- return false;
+ throw new FileDataFormatException("Формат данных не верный");
_mapStorages.clear();
@@ -95,11 +94,10 @@ public class MapsCollection {
_mapStorages.get(elements[0]).LoadData(elements[2].split(separatorData + "\n?"));
}
}
- return true;
}
@SuppressWarnings("ResultOfMethodCallIgnored")
- public boolean SaveMap(String mapName, String filename) throws IOException {
+ public void SaveMap(String mapName, String filename) throws IOException {
File file = new File(filename);
if (file.exists())
@@ -110,7 +108,7 @@ public class MapsCollection {
MapWithSetWarshipsGeneric map = _mapStorages.getOrDefault(mapName, null);
if (map == null)
- return false;
+ throw new IndexOutOfBoundsException();
try (PrintWriter writer = new PrintWriter(file)) {
writer.println("Map");
@@ -120,20 +118,19 @@ public class MapsCollection {
writer.println(warship.GetInfo());
}
}
- return true;
}
- public boolean LoadMap(String filename) throws IOException {
+ public void LoadMap(String filename) throws IOException {
File file = new File(filename);
if (!file.exists())
- return false;
+ throw new FileNotFoundException("Файл не найден");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String currentLine = reader.readLine();
if (currentLine == null || !currentLine.contains("Map"))
- return false;
+ throw new FileDataFormatException("Формат данных не верный");
String mapName = reader.readLine();
@@ -141,7 +138,7 @@ public class MapsCollection {
if (_mapStorages.containsKey(mapName)) {
map = _mapStorages.get(mapName);
if (!map.GetMap().getClass().getSimpleName().equals(reader.readLine())) {
- return false;
+ throw new FileDataFormatException("Формат данных не верный");
}
map._setWarship.Clear();
} else {
@@ -156,7 +153,6 @@ public class MapsCollection {
map._setWarship.Insert((DrawingObjectWarship) DrawingObjectWarship.Create(currentLine));
}
}
- return true;
}
}
diff --git a/src/SetWarshipsGeneric.java b/src/SetWarshipsGeneric.java
index 3a1d245..e863172 100644
--- a/src/SetWarshipsGeneric.java
+++ b/src/SetWarshipsGeneric.java
@@ -23,8 +23,8 @@ public class SetWarshipsGeneric implements Iterable{
public int Insert(T warship)
{
- if (_places.size()+1>=_maxCount)
- return -1;
+ if (Count()>=_maxCount)
+ throw new StorageOverflowException(_maxCount);
_places.add(0,warship);
return 0;
}
@@ -32,9 +32,7 @@ public class SetWarshipsGeneric implements Iterable{
public int Insert(T warship, int position)
{
if (position>=_maxCount||position<0)
- return -1;
- if (_places.size()+1>=_maxCount)
- return -1;
+ throw new StorageOverflowException(_maxCount);
_places.add(position,warship);
return position;
}
@@ -44,6 +42,8 @@ public class SetWarshipsGeneric implements Iterable{
if (position>=_maxCount||position<0)
return null;
T deleted=_places.get(position);
+ if (deleted==null)
+ throw new WarshipNotFoundException(position);
_places.remove(position);
return deleted;
}
diff --git a/src/StorageOverflowException.java b/src/StorageOverflowException.java
new file mode 100644
index 0000000..781e800
--- /dev/null
+++ b/src/StorageOverflowException.java
@@ -0,0 +1,16 @@
+public class StorageOverflowException extends RuntimeException{
+ public StorageOverflowException(){
+ }
+ public StorageOverflowException(String message){
+ super(message);
+ }
+ public StorageOverflowException(String message,Throwable exception){
+ super(message,exception);
+ }
+ protected StorageOverflowException(Throwable exception){
+ super(exception);
+ }
+ public StorageOverflowException(int count){
+ super("Превышено допустимое количество в хранилище: "+count);
+ }
+}
diff --git a/src/WarshipNotFoundException.java b/src/WarshipNotFoundException.java
new file mode 100644
index 0000000..5fd2070
--- /dev/null
+++ b/src/WarshipNotFoundException.java
@@ -0,0 +1,16 @@
+public class WarshipNotFoundException extends RuntimeException{
+ public WarshipNotFoundException(){
+ }
+ public WarshipNotFoundException(String message){
+ super(message);
+ }
+ public WarshipNotFoundException(String message,Throwable exception){
+ super(message,exception);
+ }
+ public WarshipNotFoundException(Throwable exception){
+ super(exception);
+ }
+ protected WarshipNotFoundException(int pos){
+ super("Корабль по позиции "+pos+" не найден");
+ }
+}
diff --git a/src/log4j2.xml b/src/log4j2.xml
new file mode 100644
index 0000000..7e04438
--- /dev/null
+++ b/src/log4j2.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ [%-5level] %msg (%d{dd.MM.yyyy})%n
+
+
+
+
+
+
+
+ [%-5level] %msg (%d{dd.MM.yyyy})%n
+
+
+
+
+
+
+
+
+
+
+
+