diff --git a/FormMapWithSetArtilleries.java b/FormMapWithSetArtilleries.java index 8d53f4c..166513e 100644 --- a/FormMapWithSetArtilleries.java +++ b/FormMapWithSetArtilleries.java @@ -1,3 +1,5 @@ +import org.apache.logging.log4j.Logger; + import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.text.DefaultFormatterFactory; @@ -41,6 +43,13 @@ public class FormMapWithSetArtilleries extends JFrame { private final MapsCollection _mapsCollection; private final Stack deletedObjects = new Stack<>(); + private Logger logger; + + public FormMapWithSetArtilleries(Logger logger) { + this(); + this.logger = logger; + } + public FormMapWithSetArtilleries() { this.setTitle("Artillery"); this.setContentPane(paneArtilleries); @@ -68,9 +77,11 @@ public class FormMapWithSetArtilleries extends JFrame { try { _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.INFORMATION_MESSAGE); } }); @@ -85,8 +96,10 @@ public class FormMapWithSetArtilleries extends JFrame { try { _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.INFORMATION_MESSAGE); } }); @@ -100,8 +113,10 @@ public class FormMapWithSetArtilleries extends JFrame { try { _mapsCollection.saveMap(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.INFORMATION_MESSAGE); } }); @@ -116,8 +131,10 @@ public class FormMapWithSetArtilleries extends JFrame { try { _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.INFORMATION_MESSAGE); } }); @@ -132,15 +149,18 @@ public class FormMapWithSetArtilleries extends JFrame { buttonAddMap.addActionListener(e -> { if (comboBoxMapSelector.getSelectedIndex() == -1 || textFieldMapName.getText() == null || textFieldMapName.getText().isEmpty()) { + logger.warn("Не удалось добавить карту: Не все данные заполнены"); JOptionPane.showMessageDialog(this, "Не все данные заполнены", "Ошибка", JOptionPane.ERROR_MESSAGE); return; } if (!_mapsDict.containsKey((String)comboBoxMapSelector.getSelectedItem())) { + logger.warn("Не удалось добавить карту: Нет такой карты"); JOptionPane.showMessageDialog(this, "Нет такой карты", "Ошибка", JOptionPane.ERROR_MESSAGE); return; } _mapsCollection.addMap(textFieldMapName.getText(), _mapsDict.get((String)comboBoxMapSelector.getSelectedItem())); reloadMaps(); + logger.info("Добавлена карта \"" + textFieldMapName.getText() + "\" типа " + _mapsDict.get((String)comboBoxMapSelector.getSelectedItem())); }); buttonDeleteMap.addActionListener(e -> { @@ -150,6 +170,7 @@ public class FormMapWithSetArtilleries extends JFrame { if (JOptionPane.showConfirmDialog(this, "Удалить карту " + listBoxMaps.getSelectedValue() + "?", "Удаление", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { _mapsCollection.deleteMap(Optional.ofNullable(listBoxMaps.getSelectedValue()).orElse("")); + logger.info("Удалена карта \"" + listBoxMaps.getSelectedValue() + "\""); reloadMaps(); } }); @@ -158,6 +179,7 @@ public class FormMapWithSetArtilleries extends JFrame { if (listBoxMaps.getSelectedValue() != null) { bufferedImage = _mapsCollection.getMap(Optional.ofNullable(listBoxMaps.getSelectedValue()).orElse("")).showSet(); repaint(); + logger.info("Переход на карту \"" + listBoxMaps.getSelectedValue() + "\""); } }); @@ -175,12 +197,16 @@ public class FormMapWithSetArtilleries extends JFrame { JOptionPane.showMessageDialog(this, "Объект добавлен", "Успех", JOptionPane.INFORMATION_MESSAGE); bufferedImage = _mapsCollection.getMap(Optional.ofNullable(listBoxMaps.getSelectedValue()).orElse("")).showSet(); repaint(); + logger.info("Добавлен новый объект"); } else { + logger.warn("Не удалось добавить объект"); JOptionPane.showMessageDialog(this, "Не удалось добавить объект", "Провал", JOptionPane.INFORMATION_MESSAGE); } } catch (StorageOverflowException ex) { + logger.warn("Ошибка переполнения хранилища: " + ex.getMessage()); JOptionPane.showMessageDialog(this, "Ошибка переполнения хранилища: " + ex.getMessage(), "Провал", JOptionPane.INFORMATION_MESSAGE); } catch (Exception ex) { + logger.fatal("Неизвестная ошибка: " + ex.getMessage()); JOptionPane.showMessageDialog(this, "Неизвестная ошибка: " + ex.getMessage(), "Провал", JOptionPane.INFORMATION_MESSAGE); } } @@ -207,12 +233,16 @@ public class FormMapWithSetArtilleries extends JFrame { JOptionPane.showMessageDialog(this, "Объект удалён", "Успех", JOptionPane.INFORMATION_MESSAGE); bufferedImage = _mapsCollection.getMap(Optional.ofNullable(listBoxMaps.getSelectedValue()).orElse("")).showSet(); repaint(); + logger.info("Удалён объект"); } else { + logger.warn("Не удалось удалить объект по позиции " + position + ". Объект равен null"); JOptionPane.showMessageDialog(this, "Не удалось удалить объект", "Провал", JOptionPane.INFORMATION_MESSAGE); } } catch (ArtilleryNotFoundException ex) { + logger.warn("Ошибка удаления: " + ex.getMessage()); JOptionPane.showMessageDialog(this, "Не удалось найти артиллерию по позиции: " + ex.getMessage(), "Провал", JOptionPane.INFORMATION_MESSAGE); } catch (Exception ex) { + logger.error("Неизвестная ошибка: " + ex.getMessage()); JOptionPane.showMessageDialog(this, "Неизвестная ошибка: " + ex.getMessage(), "Провал", JOptionPane.INFORMATION_MESSAGE); } }); diff --git a/Program.java b/Program.java index 00da2ad..c5e7f3e 100644 --- a/Program.java +++ b/Program.java @@ -1,8 +1,9 @@ import javax.swing.*; +import org.apache.logging.log4j.*; public class Program { public static void main(String[] args) { - FormMapWithSetArtilleries form = new FormMapWithSetArtilleries(); + FormMapWithSetArtilleries form = new FormMapWithSetArtilleries(LogManager.getLogger(Program.class)); form.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } } diff --git a/log4j2.xml b/log4j2.xml new file mode 100644 index 0000000..ee4f664 --- /dev/null +++ b/log4j2.xml @@ -0,0 +1,25 @@ + + + + + + %-5level %msg (%d{dd.MM.yyyy})%n + + + + + + %-5level %msg (%d{dd.MM.yyyy})%n + + + + + + + + + + + + + \ No newline at end of file