From d9c0fbf63c3ab415bd2dd1e5bd643353f0d7d8a0 Mon Sep 17 00:00:00 2001 From: Hells Hound Date: Wed, 14 Dec 2022 00:27:44 +0400 Subject: [PATCH] =?UTF-8?q?7=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/AircraftCarrier_Hard.iml | 1 + AircraftCarrier_Hard.iml | 21 +++++ log4j.properties | 28 +++++++ messages | 8 ++ src/FormMapWithSetWarships.java | 133 ++++++++++++++++++------------ src/MapsCollection.java | 12 +-- src/SetWarshipsGeneric.java | 3 +- src/StorageOverflowException.java | 16 ++++ src/WarshipNotFoundException.java | 16 ++++ src/log4j.xml | 19 +++++ 10 files changed, 199 insertions(+), 58 deletions(-) create mode 100644 AircraftCarrier_Hard.iml create mode 100644 log4j.properties create mode 100644 messages create mode 100644 src/StorageOverflowException.java create mode 100644 src/WarshipNotFoundException.java create mode 100644 src/log4j.xml diff --git a/.idea/AircraftCarrier_Hard.iml b/.idea/AircraftCarrier_Hard.iml index c90834f..43191f2 100644 --- a/.idea/AircraftCarrier_Hard.iml +++ b/.idea/AircraftCarrier_Hard.iml @@ -7,5 +7,6 @@ + \ No newline at end of file diff --git a/AircraftCarrier_Hard.iml b/AircraftCarrier_Hard.iml new file mode 100644 index 0000000..b4ed4c2 --- /dev/null +++ b/AircraftCarrier_Hard.iml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/log4j.properties b/log4j.properties new file mode 100644 index 0000000..88a9ad0 --- /dev/null +++ b/log4j.properties @@ -0,0 +1,28 @@ +log4j.logger.FormMapWithSetWarshipGeneric=INFO, fileAppender, adminAppender + +log4j.additivity.FormMapWithSetWarshipGeneric=false +log4j.additivity.FormMapWithSetWarshipGenericAdmin=false + +log4j.appender.fileAppender.threshold=INFO +log4j.appender.adminAppender.threshold=INFO + +log4j.appender.fileAppender=org.apache.log4j.RollingFileAppender +log4j.appender.fileAppender.File=user.log +log4j.appender.fileAppender.MaxFileSize=1MB +log4j.appender.fileAppender.MaxBackupIndex=1 +log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.fileAppender.layout.ConversionPattern=%-5p %c{1}:%L - %m %d{dd-MM-yyyy}%n +log4j.appender.fileAppender.filter.a=org.apache.log4j.varia.LevelRangeFilter +log4j.appender.fileAppender.filter.a.LevelMin=INFO +log4j.appender.fileAppender.filter.a.LevelMax=INFO +log4j.appender.fileAppender.filter.a.AcceptOnMatch=TRUE + +log4j.appender.adminAppender=org.apache.log4j.RollingFileAppender +log4j.appender.adminAppender.File=admin.log +log4j.appender.adminAppender.MaxFileSize=1MB +log4j.appender.adminAppender.MaxBackupIndex=1 +log4j.appender.adminAppender.layout=org.apache.log4j.PatternLayout +log4j.appender.adminAppender.layout.ConversionPattern=%-5p %c{1}:%L - %m %d{dd-MM-yyyy}%n +log4j.appender.adminAppender.filter.a=org.apache.log4j.varia.LevelRangeFilter +log4j.appender.adminAppender.filter.a.LevelMin=WARN +log4j.appender.adminAppender.filter.a.AcceptOnMatch=TRUE \ No newline at end of file diff --git a/messages b/messages new file mode 100644 index 0000000..711e221 --- /dev/null +++ b/messages @@ -0,0 +1,8 @@ +2022-12-14 00:20:19 INFO FormMapWithSetTractorsGeneric:195 - Переход на карту: 1 +2022-12-14 00:20:19 INFO FormMapWithSetTractorsGeneric:228 - Добавлена карта: 1 + INFO FormMapWithSetTractorsGeneric:195 - Переход на карту: 1 2022-12-14 + INFO FormMapWithSetTractorsGeneric:228 - Добавлена карта: 1 2022-12-14 + INFO FormMapWithSetTractorsGeneric:195 - Переход на карту: 1 2022-12-14 + INFO FormMapWithSetTractorsGeneric:228 - Добавлена карта: 1 2022-12-14 + INFO FormMapWithSetTractorsGeneric:195 - Переход на карту: 1 14-12-2022 + INFO FormMapWithSetTractorsGeneric:228 - Добавлена карта: 1 14-12-2022 diff --git a/src/FormMapWithSetWarships.java b/src/FormMapWithSetWarships.java index d360886..52b1b82 100644 --- a/src/FormMapWithSetWarships.java +++ b/src/FormMapWithSetWarships.java @@ -7,6 +7,7 @@ import java.io.File; import java.util.HashMap; import java.util.function.Consumer; +import org.apache.log4j.*; public class FormMapWithSetWarships extends JFrame{ private JPanel mainPanel; private JPanel PictureBox; @@ -41,6 +42,8 @@ public class FormMapWithSetWarships extends JFrame{ put("LineMap", new LineMap()); }}; + private Logger _logger; + public FormMapWithSetWarships(){ InitializeComponent(); } @@ -71,6 +74,7 @@ public class FormMapWithSetWarships extends JFrame{ } private void InitializeComponent(){ + _logger = Logger.getLogger("FormMapWithSetTractorsGeneric"); setContentPane(mainPanel); setTitle("Warship"); setSize(935, 693); @@ -104,14 +108,14 @@ public class FormMapWithSetWarships extends JFrame{ fs.setDialogTitle("Save"); int result = fs.showSaveDialog(null); if (result == JFileChooser.APPROVE_OPTION) { - File selectedFile = fs.getSelectedFile(); - if (_mapsCollection.SaveData(selectedFile.getPath())) - { + try { + File selectedFile = fs.getSelectedFile(); + _mapsCollection.SaveData(selectedFile.getPath()); + _logger.info("Успешное сохранение в файл: "+selectedFile.getPath()); JOptionPane.showMessageDialog(null, "Сохранение прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE); - } - else - { - JOptionPane.showMessageDialog(null, "Не сохранилось", "Результат",JOptionPane.ERROR_MESSAGE); + } catch (Exception ex) { + _logger.error("Данные не сохранились: "+ex.getMessage()); + JOptionPane.showMessageDialog(null, "Не сохранилось: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE); } } }); @@ -126,15 +130,15 @@ public class FormMapWithSetWarships extends JFrame{ fs.setDialogTitle("Load"); int result = fs.showSaveDialog(null); if (result == JFileChooser.APPROVE_OPTION) { - File selectedFile = fs.getSelectedFile(); - if (_mapsCollection.LoadData(selectedFile.getPath())) - { + try { + File selectedFile = fs.getSelectedFile(); + _mapsCollection.LoadData(selectedFile.getPath()); ReloadMaps(); + _logger.info("Успешная загрузка из файла: "+selectedFile.getPath()); JOptionPane.showMessageDialog(null, "Загрузка прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE); - } - else - { - JOptionPane.showMessageDialog(null, "Не удалось загрузить", "Результат",JOptionPane.ERROR_MESSAGE); + } catch(Exception ex) { + _logger.error("Не загрузилось: "+ex.getMessage()); + JOptionPane.showMessageDialog(null, "Не загрузилось: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE); } } }); @@ -149,14 +153,14 @@ public class FormMapWithSetWarships extends JFrame{ fs.setDialogTitle("SaveMap"); int result = fs.showSaveDialog(null); if (result == JFileChooser.APPROVE_OPTION) { - File selectedFile = fs.getSelectedFile(); - if (_mapsCollection.SaveMap(selectedFile.getPath(), ListBoxMaps.getSelectedValue().toString())) - { + try { + File selectedFile = fs.getSelectedFile(); + _mapsCollection.SaveMap(selectedFile.getPath(), ListBoxMaps.getSelectedValue().toString()); + _logger.info("Успешное сохранение карты в файл: "+selectedFile.getPath()); JOptionPane.showMessageDialog(null, "Сохранение карты прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE); - } - else - { - JOptionPane.showMessageDialog(null, "Не сохранилась карта", "Результат",JOptionPane.ERROR_MESSAGE); + } catch(Exception ex) { + _logger.error("Не сохранилась карта: "+ex.getMessage()); + JOptionPane.showMessageDialog(null, "Не сохранилась карта: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE); } } }); @@ -171,15 +175,15 @@ public class FormMapWithSetWarships extends JFrame{ fs.setDialogTitle("LoadMap"); int result = fs.showSaveDialog(null); if (result == JFileChooser.APPROVE_OPTION) { - File selectedFile = fs.getSelectedFile(); - if (_mapsCollection.LoadMap(selectedFile.getPath())) - { - JOptionPane.showMessageDialog(null, "Загрузка карты прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE); + try { + File selectedFile = fs.getSelectedFile(); + _mapsCollection.LoadMap(selectedFile.getPath()); + JOptionPane.showMessageDialog(null, "Загрузка карты прошла успешно", "Результат", JOptionPane.INFORMATION_MESSAGE); ReloadMaps(); - } - else - { - JOptionPane.showMessageDialog(null, "Не загрузилась карта", "Результат",JOptionPane.ERROR_MESSAGE); + _logger.info("Успешная загрузка карты из файла: "+selectedFile.getPath()); + }catch(Exception ex) { + _logger.error("Не загрузилась карта: "+ex.getMessage()); + JOptionPane.showMessageDialog(null, "Не загрузилась карта", "Результат", JOptionPane.ERROR_MESSAGE); } } }); @@ -188,6 +192,7 @@ public class FormMapWithSetWarships extends JFrame{ if(ListBoxMaps.getSelectedIndex() == -1) return; bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet(); + _logger.log(Level.INFO,"Переход на карту: " + ListBoxMaps.getSelectedValue().toString()); repaint(); }); @@ -199,6 +204,7 @@ public class FormMapWithSetWarships extends JFrame{ if(JOptionPane.showConfirmDialog(this,"Удалить карту " + ListBoxMaps.getSelectedValue().toString() + "?", "Удаление",JOptionPane.YES_NO_OPTION) == 0) { + _logger.info("Удалена карта: " + ListBoxMaps.getSelectedValue().toString()); _mapsCollection.DelMap(ListBoxMaps.getSelectedValue().toString()); ReloadMaps(); } @@ -207,16 +213,19 @@ public class FormMapWithSetWarships extends JFrame{ CreateMapButton.addActionListener(e -> { if (СomboBoxSelectorMap.getSelectedIndex() == -1 || TextFieldMap.getText() == null || TextFieldMap.getText().equals("")) { + _logger.info("Не все данные были заполнены при добавлении карты"); JOptionPane.showMessageDialog(this,"Не все данные заполнены","Ошибка",JOptionPane.ERROR_MESSAGE); return; } if (!_mapsDict.containsKey(СomboBoxSelectorMap.getSelectedItem())) { + _logger.info("Нет карты с названием: " + СomboBoxSelectorMap.getSelectedItem()); JOptionPane.showMessageDialog(this,"Нет такой карты","Ошибка",JOptionPane.ERROR_MESSAGE); return; } _mapsCollection.AddMap(TextFieldMap.getText(), _mapsDict.get(СomboBoxSelectorMap.getSelectedItem().toString())); ReloadMaps(); + _logger.info("Добавлена карта: " + TextFieldMap.getText()); }); deletedWarshipButtom.addActionListener(e -> { @@ -235,20 +244,31 @@ public class FormMapWithSetWarships extends JFrame{ ButtonAddWarship.addActionListener(e -> { FormWarshipConfig formWarshipConfig = new FormWarshipConfig(); formWarshipConfig.AddEvent(newWarship ->{ - if(ListBoxMaps.getSelectedIndex() == -1){ - return; - } - if(newWarship != null){ - DrawingObjectWarship warship = new DrawingObjectWarship(newWarship); - if (_mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).Plus(warship) >= 0) { - JOptionPane.showMessageDialog(null, "Объект добавлен"); - bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet(); - repaint(); + try{ + if(ListBoxMaps.getSelectedIndex() == -1){ + return; } - else { - JOptionPane.showMessageDialog(null, "Не удалось добавить объект"); + if(newWarship != null){ + DrawingObjectWarship warship = new DrawingObjectWarship(newWarship); + if (_mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).Plus(warship) >= 0) { + _logger.info("Добавлен объект: " + warship); + JOptionPane.showMessageDialog(null, "Объект добавлен"); + bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet(); + repaint(); + } + else { + _logger.info("Не удалось добавить объект: " + warship); + JOptionPane.showMessageDialog(null, "Не удалось добавить объект"); + } } + }catch (StorageOverflowException ex){ + _logger.warn("Ошибка переполнения хранилища: " + ex.getMessage()); + JOptionPane.showMessageDialog(null, "Ошибка переполнения хранилища: " + ex.getMessage()); + }catch (Exception ex){ + _logger.fatal("Неизвестная ошибка добавления: " + ex.getMessage()); + JOptionPane.showMessageDialog(null, "Неизвестная ошибка: " + ex.getMessage()); } + }); formWarshipConfig.setSize(1000, 450); formWarshipConfig.setVisible(true); @@ -270,17 +290,28 @@ public class FormMapWithSetWarships extends JFrame{ return; } int pos = Integer.parseInt(TextBoxPosition.getText()); - 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 { + var deletedWarship = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).Minus(pos); + if (deletedWarship != null) + { + _logger.info("Удален объект: " + deletedWarship); + JOptionPane.showMessageDialog(this, + "Объект удален","Успех",JOptionPane.INFORMATION_MESSAGE); + bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet(); + repaint(); + } + else + { + _logger.info("Не удалось удалить объект по позиции: " + pos); + JOptionPane.showMessageDialog(this, + "Не удалось удалить объект","Ошибка",JOptionPane.INFORMATION_MESSAGE); + } + }catch (WarshipNotFoundException ex){ + _logger.warn("Ошибка удаления: " + ex.getMessage()); + JOptionPane.showMessageDialog(null, "Ошибка удаления: " + ex.getMessage()); + }catch (Exception ex){ + _logger.fatal("Неизвестная ошибка удаления: " + ex.getMessage()); + JOptionPane.showMessageDialog(null, "Неизвестная ошибка: " + ex.getMessage()); } }); diff --git a/src/MapsCollection.java b/src/MapsCollection.java index a16a686..7510f36 100644 --- a/src/MapsCollection.java +++ b/src/MapsCollection.java @@ -49,7 +49,7 @@ public class MapsCollection { return null; } - public boolean SaveData(String filename) { + public void SaveData(String filename) { File file = new File(filename); if (file.exists()) { @@ -64,21 +64,20 @@ public class MapsCollection { } catch (IOException e) { throw new RuntimeException(e); } - return true; } - public boolean LoadData(String filename) + public void LoadData(String filename)throws FileNotFoundException { if (!(new File(filename).exists())) { - return false; + throw new FileNotFoundException("Файл не найден"); } try (BufferedReader br = new BufferedReader(new FileReader(filename))) { String str = ""; if ((str = br.readLine()) == null || !str.contains("MapsCollection")) { - return false; + throw new IllegalArgumentException("Формат данных в файле неправильный"); } //очищаем записи _mapStorages.clear(); @@ -100,8 +99,9 @@ public class MapsCollection { } } catch (IOException e) { throw new RuntimeException(e); + }catch (StorageOverflowException e) { + throw new RuntimeException(e); } - return true; } //Сохранение отдельного объекта класса-хранилища diff --git a/src/SetWarshipsGeneric.java b/src/SetWarshipsGeneric.java index a281a76..6ec697a 100644 --- a/src/SetWarshipsGeneric.java +++ b/src/SetWarshipsGeneric.java @@ -22,7 +22,7 @@ public class SetWarshipsGeneric implements Iterable{ public int Insert(T warship, int position) { if (position < 0 || position >= _maxCount) - return -1; + throw new StorageOverflowException(_maxCount); _places.add(position, warship); return position; } @@ -32,6 +32,7 @@ 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..d8323e4 --- /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..59625ca --- /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); + } + public WarshipNotFoundException(int i){ + super("Не найден объект по позиции " + i); + } +} diff --git a/src/log4j.xml b/src/log4j.xml new file mode 100644 index 0000000..b7708ff --- /dev/null +++ b/src/log4j.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file